
bfd_boolean
stab_demangle_args(stab_demangle_info *minfo,char **pp,debug_type_conflict **pargs,
                  bfd_boolean *pvarargs)

{
  bool bVar1;
  char cVar2;
  char *pcVar3;
  debug_type_conflict *ppdVar4;
  bfd_boolean bVar5;
  uint uVar6;
  char *tem;
  uint t;
  uint r;
  uint count;
  uint alloc;
  char *local_30;
  
  pcVar3 = *pp;
  alloc = 10;
  local_30 = pcVar3;
  if (pargs != (debug_type_conflict **)0x0) {
    ppdVar4 = (debug_type_conflict *)(*(code *)PTR_xmalloc_0004dc10)(0x28);
    pcVar3 = *pp;
    *pargs = ppdVar4;
    *pvarargs = 0;
  }
  count = 0;
  while ((cVar2 = *pcVar3, cVar2 != '_' && (cVar2 != '\0'))) {
    if (cVar2 == 'e') {
      if (pargs == (debug_type_conflict **)0x0) goto LAB_00026aec;
      goto LAB_00026ab8;
    }
    if (cVar2 == 'N') {
      *pp = pcVar3 + 1;
      bVar5 = stab_demangle_get_count(pp,&r);
      if (bVar5 == 0) goto LAB_00026a8c;
LAB_0002697c:
      bVar5 = stab_demangle_get_count(pp,&t);
      if ((bVar5 == 0) || (minfo->typestring_count <= t)) {
LAB_00026a8c:
        stab_bad_demangle(local_30);
        return 0;
      }
      uVar6 = r - 1;
      bVar1 = r != 0;
      r = uVar6;
      if (bVar1) {
        do {
          tem = minfo->typestrings[t].typestring;
          bVar5 = stab_demangle_arg(minfo,&tem,pargs,&count,&alloc);
          if (bVar5 == 0) {
            return 0;
          }
          uVar6 = r - 1;
          bVar1 = r != 0;
          r = uVar6;
        } while (bVar1);
      }
    }
    else {
      if (cVar2 == 'T') {
        *pp = pcVar3 + 1;
        r = 1;
        goto LAB_0002697c;
      }
      bVar5 = stab_demangle_arg(minfo,pp,pargs,&count,&alloc);
      if (bVar5 == 0) {
        return 0;
      }
    }
    pcVar3 = *pp;
  }
  if (pargs != (debug_type_conflict **)0x0) {
LAB_00026ab8:
    (*pargs)[count] = (debug_type_conflict)0x0;
    if (*pcVar3 == 'e') {
      *pvarargs = 1;
LAB_00026aec:
      *pp = pcVar3 + 1;
    }
  }
  return 1;
}



/* WARNING: Type propagation algorithm not settling */

int FUN_000268a4(int param_1,undefined4 *param_2,int *param_3,undefined4 *param_4)

{
  bool bVar1;
  char cVar2;
  char *pcVar3;
  int iVar4;
  undefined4 local_48;
  uint local_44;
  int local_40;
  int local_3c [3];
  char *local_30;
  
  pcVar3 = (char *)*param_2;
  local_3c[1] = 10;
  local_30 = pcVar3;
  if (param_3 != (int *)0x0) {
    iVar4 = (*(code *)PTR_xmalloc_0004dc10)(0x28);
    pcVar3 = (char *)*param_2;
    *param_3 = iVar4;
    *param_4 = 0;
  }
  local_3c[0] = 0;
  while ((cVar2 = *pcVar3, cVar2 != '_' && (cVar2 != '\0'))) {
    if (cVar2 == 'e') {
      if (param_3 == (int *)0x0) goto LAB_00026aec;
      goto LAB_00026ab8;
    }
    if (cVar2 == 'N') {
      *param_2 = pcVar3 + 1;
      iVar4 = FUN_000231a0(param_2,&local_40);
      if (iVar4 == 0) goto LAB_00026a8c;
LAB_0002697c:
      iVar4 = FUN_000231a0(param_2,&local_44);
      if ((iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44)) {
LAB_00026a8c:
        FUN_000232e8(local_30);
        return 0;
      }
      iVar4 = local_40 + -1;
      bVar1 = local_40 != 0;
      local_40 = iVar4;
      if (bVar1) {
        do {
          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);
          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);
          if (iVar4 == 0) {
            return 0;
          }
          iVar4 = local_40 + -1;
          bVar1 = local_40 != 0;
          local_40 = iVar4;
        } while (bVar1);
      }
    }
    else {
      if (cVar2 == 'T') {
        *param_2 = pcVar3 + 1;
        local_40 = 1;
        goto LAB_0002697c;
      }
      iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1);
      if (iVar4 == 0) {
        return 0;
      }
    }
    pcVar3 = (char *)*param_2;
  }
  if (param_3 != (int *)0x0) {
LAB_00026ab8:
    *(undefined4 *)(*param_3 + local_3c[0] * 4) = 0;
    if (*pcVar3 == 'e') {
      *param_4 = 1;
LAB_00026aec:
      *param_2 = pcVar3 + 1;
    }
  }
  return 1;
}


lui gp,0x3
addiu gp,gp,-0x1024
addu gp,gp,t9
addiu sp,sp,-0x68
lw v0,0x0(a1)
sw v0,0x38(sp)
li v0,0xa
sw gp,0x18(sp)
sw s7,0x5c(sp)
or s7,a0,zero
sw s3,0x4c(sp)
or s3,a1,zero
sw s1,0x44(sp)
or s1,a2,zero
sw ra,0x64(sp)
sw s8,0x60(sp)
sw s6,0x58(sp)
sw s5,0x54(sp)
sw s4,0x50(sp)
sw s2,0x48(sp)
sw s0,0x40(sp)
sw v0,0x30(sp)
beq a2,zero,0x00026aa4
_sw a3,0x74(sp)
lw t9,-0x7c70(gp)
jalr t9
_li a0,0x28
lw gp,0x18(sp)
lw v1,0x0(s3)
sw v0,0x0(s1)
lw v0,0x74(sp)
sw zero,0x0(v0)
lw s4,-0x7fa4(gp)
addiu s6,sp,0x28
lw s0,-0x7fa4(gp)
sw zero,0x2c(sp)
addiu s4,s4,0x31a0
addiu s0,s0,0x675c
lb v0,0x0(v1)
li a0,0x5f
beq v0,a0,0x00026aac
_nop
beq v0,zero,0x00026aac
_li a0,0x65
beq v0,a0,0x00026af8
_li a0,0x4e
beq v0,a0,0x00026a70
_or a1,s6,zero
li a0,0x54
bne v0,a0,0x00026a40
_addiu v1,v1,0x1
li v0,0x1
sw v1,0x0(s3)
sw v0,0x28(sp)
addiu a1,sp,0x24
or t9,s4,zero
bal 0x000231a0
_or a0,s3,zero
beq v0,zero,0x00026a8c
_lw gp,0x18(sp)
lw v0,0x24(sp)
lw v1,0x14(s7)
sltu v1,v0,v1
beq v1,zero,0x00026a8c
_lw v1,0x28(sp)
addiu a0,v1,-0x1
beq v1,zero,0x00026a68
_sw a0,0x28(sp)
addiu s5,sp,0x2c
addiu s2,sp,0x30
b 0x000269d4
_addiu s8,sp,0x20
addiu v1,v0,-0x1
beq v0,zero,0x00026a68
_sw v1,0x28(sp)
lw v0,0x24(sp)
lw v1,0x10(s7)
sll v0,v0,0x3
or a3,s5,zero
or a2,s1,zero
addu v0,v1,v0
or a1,s8,zero
or a0,s7,zero
lw v0,0x0(v0)
or t9,s0,zero
sw s2,0x10(sp)
bal 0x0002675c
_sw v0,0x20(sp)
bne v0,zero,0x000269c4
_lw v0,0x28(sp)
or v0,zero,zero
lw ra,0x64(sp)
lw s8,0x60(sp)
lw s7,0x5c(sp)
lw s6,0x58(sp)
lw s5,0x54(sp)
lw s4,0x50(sp)
lw s3,0x4c(sp)
lw s2,0x48(sp)
lw s1,0x44(sp)
lw s0,0x40(sp)
jr ra
_addiu sp,sp,0x68
addiu s2,sp,0x30
addiu a3,sp,0x2c
sw s2,0x10(sp)
or a2,s1,zero
or a1,s3,zero
or t9,s0,zero
bal 0x0002675c
_or a0,s7,zero
beq v0,zero,0x00026a14
_lw ra,0x64(sp)
b 0x0002693c
_lw v1,0x0(s3)
addiu v1,v1,0x1
sw v1,0x0(s3)
or t9,s4,zero
bal 0x000231a0
_or a0,s3,zero
bne v0,zero,0x0002697c
_lw gp,0x18(sp)
lw t9,-0x7fa4(gp)
addiu t9,t9,0x32e8
bal 0x000232e8
_lw a0,0x38(sp)
b 0x00026a10
_or v0,zero,zero
b 0x00026924
_lw v1,0x38(sp)
beq s1,zero,0x00026a10
_li v0,0x1
lw a0,0x2c(sp)
li a1,0x65
lw v0,0x0(s1)
sll a0,a0,0x2
addu v0,v0,a0
sw zero,0x0(v0)
lb v0,0x0(v1)
beq v0,a1,0x00026ae0
_lw a0,0x74(sp)
b 0x00026a10
_li v0,0x1
li v0,0x1
sw v0,0x0(a0)
addiu v1,v1,0x1
li v0,0x1
b 0x00026a10
_sw v1,0x0(s3)
bne s1,zero,0x00026ab8
_lw a0,0x2c(sp)
b 0x00026aec
_addiu v1,v1,0x1
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n\nint FUN_000268a4(int param_1,undefined4 *param_2,int *param_3,undefined4 *param_4)\n\n{\n  bool bVar1;\n  char cVar2;\n  char *pcVar3;\n  int iVar4;\n  undefined4 local_48;\n  uint local_44;\n  int local_40;\n  int local_3c [3];\n  char *local_30;\n  \n  pcVar3 = (char *)*param_2;\n  local_3c[1] = 10;\n  local_30 = pcVar3;\n  if (param_3 != (int *)0x0) {\n    iVar4 = (*(code *)PTR_xmalloc_0004dc10)(0x28);\n    pcVar3 = (char *)*param_2;\n    *param_3 = iVar4;\n    *param_4 = 0;\n  }\n  local_3c[0] = 0;\n  while ((cVar2 = *pcVar3, cVar2 != '_' && (cVar2 != '\0'))) {\n    if (cVar2 == 'e') {\n      if (param_3 == (int *)0x0) goto LAB_00026aec;\n      goto LAB_00026ab8;\n    }\n    if (cVar2 == 'N') {\n      *param_2 = pcVar3 + 1;\n      iVar4 = FUN_000231a0(param_2,&local_40);\n      if (iVar4 == 0) goto LAB_00026a8c;\nLAB_0002697c:\n      iVar4 = FUN_000231a0(param_2,&local_44);\n      if ((iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44)) {\nLAB_00026a8c:\n        FUN_000232e8(local_30);\n        return 0;\n      }\n      iVar4 = local_40 + -1;\n      bVar1 = local_40 != 0;\n      local_40 = iVar4;\n      if (bVar1) {\n        do {\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        } while (bVar1);\n      }\n    }\n    else {\n      if (cVar2 == 'T') {\n        *param_2 = pcVar3 + 1;\n        local_40 = 1;\n        goto LAB_0002697c;\n      }\n      iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1);\n      if (iVar4 == 0) {\n        return 0;\n      }\n    }\n    pcVar3 = (char *)*param_2;\n  }\n  if (param_3 != (int *)0x0) {\nLAB_00026ab8:\n    *(undefined4 *)(*param_3 + local_3c[0] * 4) = 0;\n    if (*pcVar3 == 'e') {\n      *param_4 = 1;\nLAB_00026aec:\n      *param_2 = pcVar3 + 1;\n    }\n  }\n  return 1;\n}\n\n" comment (function_definition "int FUN_000268a4(int param_1,undefined4 *param_2,int *param_3,undefined4 *param_4)\n\n{\n  bool bVar1;\n  char cVar2;\n  char *pcVar3;\n  int iVar4;\n  undefined4 local_48;\n  uint local_44;\n  int local_40;\n  int local_3c [3];\n  char *local_30;\n  \n  pcVar3 = (char *)*param_2;\n  local_3c[1] = 10;\n  local_30 = pcVar3;\n  if (param_3 != (int *)0x0) {\n    iVar4 = (*(code *)PTR_xmalloc_0004dc10)(0x28);\n    pcVar3 = (char *)*param_2;\n    *param_3 = iVar4;\n    *param_4 = 0;\n  }\n  local_3c[0] = 0;\n  while ((cVar2 = *pcVar3, cVar2 != '_' && (cVar2 != '\0'))) {\n    if (cVar2 == 'e') {\n      if (param_3 == (int *)0x0) goto LAB_00026aec;\n      goto LAB_00026ab8;\n    }\n    if (cVar2 == 'N') {\n      *param_2 = pcVar3 + 1;\n      iVar4 = FUN_000231a0(param_2,&local_40);\n      if (iVar4 == 0) goto LAB_00026a8c;\nLAB_0002697c:\n      iVar4 = FUN_000231a0(param_2,&local_44);\n      if ((iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44)) {\nLAB_00026a8c:\n        FUN_000232e8(local_30);\n        return 0;\n      }\n      iVar4 = local_40 + -1;\n      bVar1 = local_40 != 0;\n      local_40 = iVar4;\n      if (bVar1) {\n        do {\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        } while (bVar1);\n      }\n    }\n    else {\n      if (cVar2 == 'T') {\n        *param_2 = pcVar3 + 1;\n        local_40 = 1;\n        goto LAB_0002697c;\n      }\n      iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1);\n      if (iVar4 == 0) {\n        return 0;\n      }\n    }\n    pcVar3 = (char *)*param_2;\n  }\n  if (param_3 != (int *)0x0) {\nLAB_00026ab8:\n    *(undefined4 *)(*param_3 + local_3c[0] * 4) = 0;\n    if (*pcVar3 == 'e') {\n      *param_4 = 1;\nLAB_00026aec:\n      *param_2 = pcVar3 + 1;\n    }\n  }\n  return 1;\n}" primitive_type (function_declarator "FUN_000268a4(int param_1,undefined4 *param_2,int *param_3,undefined4 *param_4)" identifier (parameter_list "(int param_1,undefined4 *param_2,int *param_3,undefined4 *param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  bool bVar1;\n  char cVar2;\n  char *pcVar3;\n  int iVar4;\n  undefined4 local_48;\n  uint local_44;\n  int local_40;\n  int local_3c [3];\n  char *local_30;\n  \n  pcVar3 = (char *)*param_2;\n  local_3c[1] = 10;\n  local_30 = pcVar3;\n  if (param_3 != (int *)0x0) {\n    iVar4 = (*(code *)PTR_xmalloc_0004dc10)(0x28);\n    pcVar3 = (char *)*param_2;\n    *param_3 = iVar4;\n    *param_4 = 0;\n  }\n  local_3c[0] = 0;\n  while ((cVar2 = *pcVar3, cVar2 != '_' && (cVar2 != '\0'))) {\n    if (cVar2 == 'e') {\n      if (param_3 == (int *)0x0) goto LAB_00026aec;\n      goto LAB_00026ab8;\n    }\n    if (cVar2 == 'N') {\n      *param_2 = pcVar3 + 1;\n      iVar4 = FUN_000231a0(param_2,&local_40);\n      if (iVar4 == 0) goto LAB_00026a8c;\nLAB_0002697c:\n      iVar4 = FUN_000231a0(param_2,&local_44);\n      if ((iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44)) {\nLAB_00026a8c:\n        FUN_000232e8(local_30);\n        return 0;\n      }\n      iVar4 = local_40 + -1;\n      bVar1 = local_40 != 0;\n      local_40 = iVar4;\n      if (bVar1) {\n        do {\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        } while (bVar1);\n      }\n    }\n    else {\n      if (cVar2 == 'T') {\n        *param_2 = pcVar3 + 1;\n        local_40 = 1;\n        goto LAB_0002697c;\n      }\n      iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1);\n      if (iVar4 == 0) {\n        return 0;\n      }\n    }\n    pcVar3 = (char *)*param_2;\n  }\n  if (param_3 != (int *)0x0) {\nLAB_00026ab8:\n    *(undefined4 *)(*param_3 + local_3c[0] * 4) = 0;\n    if (*pcVar3 == 'e') {\n      *param_4 = 1;\nLAB_00026aec:\n      *param_2 = pcVar3 + 1;\n    }\n  }\n  return 1;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "int local_3c [3];" primitive_type (array_declarator "local_3c [3]" identifier [ number_literal ]) ;) (declaration "char *local_30;" primitive_type (pointer_declarator "*local_30" * identifier) ;) (expression_statement "pcVar3 = (char *)*param_2;" (assignment_expression "pcVar3 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "local_3c[1] = 10;" (assignment_expression "local_3c[1] = 10" (subscript_expression "local_3c[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_30 = pcVar3;" (assignment_expression "local_30 = pcVar3" identifier = identifier) ;) (if_statement "if (param_3 != (int *)0x0) {\n    iVar4 = (*(code *)PTR_xmalloc_0004dc10)(0x28);\n    pcVar3 = (char *)*param_2;\n    *param_3 = iVar4;\n    *param_4 = 0;\n  }" if (parenthesized_expression "(param_3 != (int *)0x0)" ( (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar4 = (*(code *)PTR_xmalloc_0004dc10)(0x28);\n    pcVar3 = (char *)*param_2;\n    *param_3 = iVar4;\n    *param_4 = 0;\n  }" { (expression_statement "iVar4 = (*(code *)PTR_xmalloc_0004dc10)(0x28);" (assignment_expression "iVar4 = (*(code *)PTR_xmalloc_0004dc10)(0x28)" identifier = (call_expression "(*(code *)PTR_xmalloc_0004dc10)(0x28)" (parenthesized_expression "(*(code *)PTR_xmalloc_0004dc10)" ( (pointer_expression "*(code *)PTR_xmalloc_0004dc10" * (cast_expression "(code *)PTR_xmalloc_0004dc10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0x28)" ( number_literal )))) ;) (expression_statement "pcVar3 = (char *)*param_2;" (assignment_expression "pcVar3 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "*param_3 = iVar4;" (assignment_expression "*param_3 = iVar4" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" * identifier) = number_literal) ;) })) (expression_statement "local_3c[0] = 0;" (assignment_expression "local_3c[0] = 0" (subscript_expression "local_3c[0]" identifier [ number_literal ]) = number_literal) ;) (while_statement "while ((cVar2 = *pcVar3, cVar2 != '_' && (cVar2 != '\0'))) {\n    if (cVar2 == 'e') {\n      if (param_3 == (int *)0x0) goto LAB_00026aec;\n      goto LAB_00026ab8;\n    }\n    if (cVar2 == 'N') {\n      *param_2 = pcVar3 + 1;\n      iVar4 = FUN_000231a0(param_2,&local_40);\n      if (iVar4 == 0) goto LAB_00026a8c;\nLAB_0002697c:\n      iVar4 = FUN_000231a0(param_2,&local_44);\n      if ((iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44)) {\nLAB_00026a8c:\n        FUN_000232e8(local_30);\n        return 0;\n      }\n      iVar4 = local_40 + -1;\n      bVar1 = local_40 != 0;\n      local_40 = iVar4;\n      if (bVar1) {\n        do {\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        } while (bVar1);\n      }\n    }\n    else {\n      if (cVar2 == 'T') {\n        *param_2 = pcVar3 + 1;\n        local_40 = 1;\n        goto LAB_0002697c;\n      }\n      iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1);\n      if (iVar4 == 0) {\n        return 0;\n      }\n    }\n    pcVar3 = (char *)*param_2;\n  }" while (parenthesized_expression "((cVar2 = *pcVar3, cVar2 != '_' && (cVar2 != '\0')))" ( (parenthesized_expression "(cVar2 = *pcVar3, cVar2 != '_' && (cVar2 != '\0'))" ( (comma_expression "cVar2 = *pcVar3, cVar2 != '_' && (cVar2 != '\0')" (assignment_expression "cVar2 = *pcVar3" identifier = (pointer_expression "*pcVar3" * identifier)) , (binary_expression "cVar2 != '_' && (cVar2 != '\0')" (binary_expression "cVar2 != '_'" identifier != (char_literal "'_'" ' character ')) && (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )))) )) )) (compound_statement "{\n    if (cVar2 == 'e') {\n      if (param_3 == (int *)0x0) goto LAB_00026aec;\n      goto LAB_00026ab8;\n    }\n    if (cVar2 == 'N') {\n      *param_2 = pcVar3 + 1;\n      iVar4 = FUN_000231a0(param_2,&local_40);\n      if (iVar4 == 0) goto LAB_00026a8c;\nLAB_0002697c:\n      iVar4 = FUN_000231a0(param_2,&local_44);\n      if ((iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44)) {\nLAB_00026a8c:\n        FUN_000232e8(local_30);\n        return 0;\n      }\n      iVar4 = local_40 + -1;\n      bVar1 = local_40 != 0;\n      local_40 = iVar4;\n      if (bVar1) {\n        do {\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        } while (bVar1);\n      }\n    }\n    else {\n      if (cVar2 == 'T') {\n        *param_2 = pcVar3 + 1;\n        local_40 = 1;\n        goto LAB_0002697c;\n      }\n      iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1);\n      if (iVar4 == 0) {\n        return 0;\n      }\n    }\n    pcVar3 = (char *)*param_2;\n  }" { (if_statement "if (cVar2 == 'e') {\n      if (param_3 == (int *)0x0) goto LAB_00026aec;\n      goto LAB_00026ab8;\n    }" if (parenthesized_expression "(cVar2 == 'e')" ( (binary_expression "cVar2 == 'e'" identifier == (char_literal "'e'" ' character ')) )) (compound_statement "{\n      if (param_3 == (int *)0x0) goto LAB_00026aec;\n      goto LAB_00026ab8;\n    }" { (if_statement "if (param_3 == (int *)0x0) goto LAB_00026aec;" if (parenthesized_expression "(param_3 == (int *)0x0)" ( (binary_expression "param_3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00026aec;" goto statement_identifier ;)) (goto_statement "goto LAB_00026ab8;" goto statement_identifier ;) })) (if_statement "if (cVar2 == 'N') {\n      *param_2 = pcVar3 + 1;\n      iVar4 = FUN_000231a0(param_2,&local_40);\n      if (iVar4 == 0) goto LAB_00026a8c;\nLAB_0002697c:\n      iVar4 = FUN_000231a0(param_2,&local_44);\n      if ((iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44)) {\nLAB_00026a8c:\n        FUN_000232e8(local_30);\n        return 0;\n      }\n      iVar4 = local_40 + -1;\n      bVar1 = local_40 != 0;\n      local_40 = iVar4;\n      if (bVar1) {\n        do {\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        } while (bVar1);\n      }\n    }\n    else {\n      if (cVar2 == 'T') {\n        *param_2 = pcVar3 + 1;\n        local_40 = 1;\n        goto LAB_0002697c;\n      }\n      iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1);\n      if (iVar4 == 0) {\n        return 0;\n      }\n    }" if (parenthesized_expression "(cVar2 == 'N')" ( (binary_expression "cVar2 == 'N'" identifier == (char_literal "'N'" ' character ')) )) (compound_statement "{\n      *param_2 = pcVar3 + 1;\n      iVar4 = FUN_000231a0(param_2,&local_40);\n      if (iVar4 == 0) goto LAB_00026a8c;\nLAB_0002697c:\n      iVar4 = FUN_000231a0(param_2,&local_44);\n      if ((iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44)) {\nLAB_00026a8c:\n        FUN_000232e8(local_30);\n        return 0;\n      }\n      iVar4 = local_40 + -1;\n      bVar1 = local_40 != 0;\n      local_40 = iVar4;\n      if (bVar1) {\n        do {\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        } while (bVar1);\n      }\n    }" { (expression_statement "*param_2 = pcVar3 + 1;" (assignment_expression "*param_2 = pcVar3 + 1" (pointer_expression "*param_2" * identifier) = (binary_expression "pcVar3 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = FUN_000231a0(param_2,&local_40);" (assignment_expression "iVar4 = FUN_000231a0(param_2,&local_40)" identifier = (call_expression "FUN_000231a0(param_2,&local_40)" identifier (argument_list "(param_2,&local_40)" ( identifier , (pointer_expression "&local_40" & identifier) )))) ;) (if_statement "if (iVar4 == 0) goto LAB_00026a8c;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00026a8c;" goto statement_identifier ;)) (labeled_statement "LAB_0002697c:\n      iVar4 = FUN_000231a0(param_2,&local_44);" statement_identifier : (expression_statement "iVar4 = FUN_000231a0(param_2,&local_44);" (assignment_expression "iVar4 = FUN_000231a0(param_2,&local_44)" identifier = (call_expression "FUN_000231a0(param_2,&local_44)" identifier (argument_list "(param_2,&local_44)" ( identifier , (pointer_expression "&local_44" & identifier) )))) ;)) (if_statement "if ((iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44)) {\nLAB_00026a8c:\n        FUN_000232e8(local_30);\n        return 0;\n      }" if (parenthesized_expression "((iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44))" ( (binary_expression "(iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44)" (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) || (parenthesized_expression "(*(uint *)(param_1 + 0x14) <= local_44)" ( (binary_expression "*(uint *)(param_1 + 0x14) <= local_44" (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) <= identifier) ))) )) (compound_statement "{\nLAB_00026a8c:\n        FUN_000232e8(local_30);\n        return 0;\n      }" { (labeled_statement "LAB_00026a8c:\n        FUN_000232e8(local_30);" statement_identifier : (expression_statement "FUN_000232e8(local_30);" (call_expression "FUN_000232e8(local_30)" identifier (argument_list "(local_30)" ( identifier ))) ;)) (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar4 = local_40 + -1;" (assignment_expression "iVar4 = local_40 + -1" identifier = (binary_expression "local_40 + -1" identifier + number_literal)) ;) (expression_statement "bVar1 = local_40 != 0;" (assignment_expression "bVar1 = local_40 != 0" identifier = (binary_expression "local_40 != 0" identifier != number_literal)) ;) (expression_statement "local_40 = iVar4;" (assignment_expression "local_40 = iVar4" identifier = identifier) ;) (if_statement "if (bVar1) {\n        do {\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        } while (bVar1);\n      }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n        do {\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        } while (bVar1);\n      }" { (do_statement "do {\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        } while (bVar1);" do (compound_statement "{\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        }" { (expression_statement "local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);" (assignment_expression "local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x10) + local_44 * 8)" ( (binary_expression "*(int *)(param_1 + 0x10) + local_44 * 8" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) + (binary_expression "local_44 * 8" identifier * number_literal)) ))))) ;) (expression_statement "iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);" (assignment_expression "iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1)" identifier = (call_expression "FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1)" identifier (argument_list "(param_1,&local_48,param_3,local_3c,local_3c + 1)" ( identifier , (pointer_expression "&local_48" & identifier) , identifier , identifier , (binary_expression "local_3c + 1" identifier + number_literal) )))) ;) (if_statement "if (iVar4 == 0) {\n            return 0;\n          }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar4 = local_40 + -1;" (assignment_expression "iVar4 = local_40 + -1" identifier = (binary_expression "local_40 + -1" identifier + number_literal)) ;) (expression_statement "bVar1 = local_40 != 0;" (assignment_expression "bVar1 = local_40 != 0" identifier = (binary_expression "local_40 != 0" identifier != number_literal)) ;) (expression_statement "local_40 = iVar4;" (assignment_expression "local_40 = iVar4" identifier = identifier) ;) }) while (parenthesized_expression "(bVar1)" ( identifier )) ;) })) }) (else_clause "else {\n      if (cVar2 == 'T') {\n        *param_2 = pcVar3 + 1;\n        local_40 = 1;\n        goto LAB_0002697c;\n      }\n      iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1);\n      if (iVar4 == 0) {\n        return 0;\n      }\n    }" else (compound_statement "{\n      if (cVar2 == 'T') {\n        *param_2 = pcVar3 + 1;\n        local_40 = 1;\n        goto LAB_0002697c;\n      }\n      iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1);\n      if (iVar4 == 0) {\n        return 0;\n      }\n    }" { (if_statement "if (cVar2 == 'T') {\n        *param_2 = pcVar3 + 1;\n        local_40 = 1;\n        goto LAB_0002697c;\n      }" if (parenthesized_expression "(cVar2 == 'T')" ( (binary_expression "cVar2 == 'T'" identifier == (char_literal "'T'" ' character ')) )) (compound_statement "{\n        *param_2 = pcVar3 + 1;\n        local_40 = 1;\n        goto LAB_0002697c;\n      }" { (expression_statement "*param_2 = pcVar3 + 1;" (assignment_expression "*param_2 = pcVar3 + 1" (pointer_expression "*param_2" * identifier) = (binary_expression "pcVar3 + 1" identifier + number_literal)) ;) (expression_statement "local_40 = 1;" (assignment_expression "local_40 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0002697c;" goto statement_identifier ;) })) (expression_statement "iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1);" (assignment_expression "iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1)" identifier = (call_expression "FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1)" identifier (argument_list "(param_1,param_2,param_3,local_3c,local_3c + 1)" ( identifier , identifier , identifier , identifier , (binary_expression "local_3c + 1" identifier + number_literal) )))) ;) (if_statement "if (iVar4 == 0) {\n        return 0;\n      }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) }))) (expression_statement "pcVar3 = (char *)*param_2;" (assignment_expression "pcVar3 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) })) (if_statement "if (param_3 != (int *)0x0) {\nLAB_00026ab8:\n    *(undefined4 *)(*param_3 + local_3c[0] * 4) = 0;\n    if (*pcVar3 == 'e') {\n      *param_4 = 1;\nLAB_00026aec:\n      *param_2 = pcVar3 + 1;\n    }\n  }" if (parenthesized_expression "(param_3 != (int *)0x0)" ( (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00026ab8:\n    *(undefined4 *)(*param_3 + local_3c[0] * 4) = 0;\n    if (*pcVar3 == 'e') {\n      *param_4 = 1;\nLAB_00026aec:\n      *param_2 = pcVar3 + 1;\n    }\n  }" { (labeled_statement "LAB_00026ab8:\n    *(undefined4 *)(*param_3 + local_3c[0] * 4) = 0;" statement_identifier : (expression_statement "*(undefined4 *)(*param_3 + local_3c[0] * 4) = 0;" (assignment_expression "*(undefined4 *)(*param_3 + local_3c[0] * 4) = 0" (pointer_expression "*(undefined4 *)(*param_3 + local_3c[0] * 4)" * (cast_expression "(undefined4 *)(*param_3 + local_3c[0] * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_3 + local_3c[0] * 4)" ( (binary_expression "*param_3 + local_3c[0] * 4" (pointer_expression "*param_3" * identifier) + (binary_expression "local_3c[0] * 4" (subscript_expression "local_3c[0]" identifier [ number_literal ]) * number_literal)) )))) = number_literal) ;)) (if_statement "if (*pcVar3 == 'e') {\n      *param_4 = 1;\nLAB_00026aec:\n      *param_2 = pcVar3 + 1;\n    }" if (parenthesized_expression "(*pcVar3 == 'e')" ( (binary_expression "*pcVar3 == 'e'" (pointer_expression "*pcVar3" * identifier) == (char_literal "'e'" ' character ')) )) (compound_statement "{\n      *param_4 = 1;\nLAB_00026aec:\n      *param_2 = pcVar3 + 1;\n    }" { (expression_statement "*param_4 = 1;" (assignment_expression "*param_4 = 1" (pointer_expression "*param_4" * identifier) = number_literal) ;) (labeled_statement "LAB_00026aec:\n      *param_2 = pcVar3 + 1;" statement_identifier : (expression_statement "*param_2 = pcVar3 + 1;" (assignment_expression "*param_2 = pcVar3 + 1" (pointer_expression "*param_2" * identifier) = (binary_expression "pcVar3 + 1" identifier + number_literal)) ;)) })) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "bfd_boolean\nstab_demangle_args(stab_demangle_info *minfo,char **pp,debug_type_conflict **pargs,\n                  bfd_boolean *pvarargs)\n\n{\n  bool bVar1;\n  char cVar2;\n  char *pcVar3;\n  debug_type_conflict *ppdVar4;\n  bfd_boolean bVar5;\n  uint uVar6;\n  char *tem;\n  uint t;\n  uint r;\n  uint count;\n  uint alloc;\n  char *local_30;\n  \n  pcVar3 = *pp;\n  alloc = 10;\n  local_30 = pcVar3;\n  if (pargs != (debug_type_conflict **)0x0) {\n    ppdVar4 = (debug_type_conflict *)(*(code *)PTR_xmalloc_0004dc10)(0x28);\n    pcVar3 = *pp;\n    *pargs = ppdVar4;\n    *pvarargs = 0;\n  }\n  count = 0;\n  while ((cVar2 = *pcVar3, cVar2 != '_' && (cVar2 != '\0'))) {\n    if (cVar2 == 'e') {\n      if (pargs == (debug_type_conflict **)0x0) goto LAB_00026aec;\n      goto LAB_00026ab8;\n    }\n    if (cVar2 == 'N') {\n      *pp = pcVar3 + 1;\n      bVar5 = stab_demangle_get_count(pp,&r);\n      if (bVar5 == 0) goto LAB_00026a8c;\nLAB_0002697c:\n      bVar5 = stab_demangle_get_count(pp,&t);\n      if ((bVar5 == 0) || (minfo->typestring_count <= t)) {\nLAB_00026a8c:\n        stab_bad_demangle(local_30);\n        return 0;\n      }\n      uVar6 = r - 1;\n      bVar1 = r != 0;\n      r = uVar6;\n      if (bVar1) {\n        do {\n          tem = minfo->typestrings[t].typestring;\n          bVar5 = stab_demangle_arg(minfo,&tem,pargs,&count,&alloc);\n          if (bVar5 == 0) {\n            return 0;\n          }\n          uVar6 = r - 1;\n          bVar1 = r != 0;\n          r = uVar6;\n        } while (bVar1);\n      }\n    }\n    else {\n      if (cVar2 == 'T') {\n        *pp = pcVar3 + 1;\n        r = 1;\n        goto LAB_0002697c;\n      }\n      bVar5 = stab_demangle_arg(minfo,pp,pargs,&count,&alloc);\n      if (bVar5 == 0) {\n        return 0;\n      }\n    }\n    pcVar3 = *pp;\n  }\n  if (pargs != (debug_type_conflict **)0x0) {\nLAB_00026ab8:\n    (*pargs)[count] = (debug_type_conflict)0x0;\n    if (*pcVar3 == 'e') {\n      *pvarargs = 1;\nLAB_00026aec:\n      *pp = pcVar3 + 1;\n    }\n  }\n  return 1;\n}\n\n" (function_definition "bfd_boolean\nstab_demangle_args(stab_demangle_info *minfo,char **pp,debug_type_conflict **pargs,\n                  bfd_boolean *pvarargs)\n\n{\n  bool bVar1;\n  char cVar2;\n  char *pcVar3;\n  debug_type_conflict *ppdVar4;\n  bfd_boolean bVar5;\n  uint uVar6;\n  char *tem;\n  uint t;\n  uint r;\n  uint count;\n  uint alloc;\n  char *local_30;\n  \n  pcVar3 = *pp;\n  alloc = 10;\n  local_30 = pcVar3;\n  if (pargs != (debug_type_conflict **)0x0) {\n    ppdVar4 = (debug_type_conflict *)(*(code *)PTR_xmalloc_0004dc10)(0x28);\n    pcVar3 = *pp;\n    *pargs = ppdVar4;\n    *pvarargs = 0;\n  }\n  count = 0;\n  while ((cVar2 = *pcVar3, cVar2 != '_' && (cVar2 != '\0'))) {\n    if (cVar2 == 'e') {\n      if (pargs == (debug_type_conflict **)0x0) goto LAB_00026aec;\n      goto LAB_00026ab8;\n    }\n    if (cVar2 == 'N') {\n      *pp = pcVar3 + 1;\n      bVar5 = stab_demangle_get_count(pp,&r);\n      if (bVar5 == 0) goto LAB_00026a8c;\nLAB_0002697c:\n      bVar5 = stab_demangle_get_count(pp,&t);\n      if ((bVar5 == 0) || (minfo->typestring_count <= t)) {\nLAB_00026a8c:\n        stab_bad_demangle(local_30);\n        return 0;\n      }\n      uVar6 = r - 1;\n      bVar1 = r != 0;\n      r = uVar6;\n      if (bVar1) {\n        do {\n          tem = minfo->typestrings[t].typestring;\n          bVar5 = stab_demangle_arg(minfo,&tem,pargs,&count,&alloc);\n          if (bVar5 == 0) {\n            return 0;\n          }\n          uVar6 = r - 1;\n          bVar1 = r != 0;\n          r = uVar6;\n        } while (bVar1);\n      }\n    }\n    else {\n      if (cVar2 == 'T') {\n        *pp = pcVar3 + 1;\n        r = 1;\n        goto LAB_0002697c;\n      }\n      bVar5 = stab_demangle_arg(minfo,pp,pargs,&count,&alloc);\n      if (bVar5 == 0) {\n        return 0;\n      }\n    }\n    pcVar3 = *pp;\n  }\n  if (pargs != (debug_type_conflict **)0x0) {\nLAB_00026ab8:\n    (*pargs)[count] = (debug_type_conflict)0x0;\n    if (*pcVar3 == 'e') {\n      *pvarargs = 1;\nLAB_00026aec:\n      *pp = pcVar3 + 1;\n    }\n  }\n  return 1;\n}" type_identifier (function_declarator "stab_demangle_args(stab_demangle_info *minfo,char **pp,debug_type_conflict **pargs,\n                  bfd_boolean *pvarargs)" identifier (parameter_list "(stab_demangle_info *minfo,char **pp,debug_type_conflict **pargs,\n                  bfd_boolean *pvarargs)" ( (parameter_declaration "stab_demangle_info *minfo" type_identifier (pointer_declarator "*minfo" * identifier)) , (parameter_declaration "char **pp" primitive_type (pointer_declarator "**pp" * (pointer_declarator "*pp" * identifier))) , (parameter_declaration "debug_type_conflict **pargs" type_identifier (pointer_declarator "**pargs" * (pointer_declarator "*pargs" * identifier))) , (parameter_declaration "bfd_boolean *pvarargs" type_identifier (pointer_declarator "*pvarargs" * identifier)) ))) (compound_statement "{\n  bool bVar1;\n  char cVar2;\n  char *pcVar3;\n  debug_type_conflict *ppdVar4;\n  bfd_boolean bVar5;\n  uint uVar6;\n  char *tem;\n  uint t;\n  uint r;\n  uint count;\n  uint alloc;\n  char *local_30;\n  \n  pcVar3 = *pp;\n  alloc = 10;\n  local_30 = pcVar3;\n  if (pargs != (debug_type_conflict **)0x0) {\n    ppdVar4 = (debug_type_conflict *)(*(code *)PTR_xmalloc_0004dc10)(0x28);\n    pcVar3 = *pp;\n    *pargs = ppdVar4;\n    *pvarargs = 0;\n  }\n  count = 0;\n  while ((cVar2 = *pcVar3, cVar2 != '_' && (cVar2 != '\0'))) {\n    if (cVar2 == 'e') {\n      if (pargs == (debug_type_conflict **)0x0) goto LAB_00026aec;\n      goto LAB_00026ab8;\n    }\n    if (cVar2 == 'N') {\n      *pp = pcVar3 + 1;\n      bVar5 = stab_demangle_get_count(pp,&r);\n      if (bVar5 == 0) goto LAB_00026a8c;\nLAB_0002697c:\n      bVar5 = stab_demangle_get_count(pp,&t);\n      if ((bVar5 == 0) || (minfo->typestring_count <= t)) {\nLAB_00026a8c:\n        stab_bad_demangle(local_30);\n        return 0;\n      }\n      uVar6 = r - 1;\n      bVar1 = r != 0;\n      r = uVar6;\n      if (bVar1) {\n        do {\n          tem = minfo->typestrings[t].typestring;\n          bVar5 = stab_demangle_arg(minfo,&tem,pargs,&count,&alloc);\n          if (bVar5 == 0) {\n            return 0;\n          }\n          uVar6 = r - 1;\n          bVar1 = r != 0;\n          r = uVar6;\n        } while (bVar1);\n      }\n    }\n    else {\n      if (cVar2 == 'T') {\n        *pp = pcVar3 + 1;\n        r = 1;\n        goto LAB_0002697c;\n      }\n      bVar5 = stab_demangle_arg(minfo,pp,pargs,&count,&alloc);\n      if (bVar5 == 0) {\n        return 0;\n      }\n    }\n    pcVar3 = *pp;\n  }\n  if (pargs != (debug_type_conflict **)0x0) {\nLAB_00026ab8:\n    (*pargs)[count] = (debug_type_conflict)0x0;\n    if (*pcVar3 == 'e') {\n      *pvarargs = 1;\nLAB_00026aec:\n      *pp = pcVar3 + 1;\n    }\n  }\n  return 1;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "debug_type_conflict *ppdVar4;" type_identifier (pointer_declarator "*ppdVar4" * identifier) ;) (declaration "bfd_boolean bVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "char *tem;" primitive_type (pointer_declarator "*tem" * identifier) ;) (declaration "uint t;" type_identifier identifier ;) (declaration "uint r;" type_identifier identifier ;) (declaration "uint count;" type_identifier identifier ;) (declaration "uint alloc;" type_identifier identifier ;) (declaration "char *local_30;" primitive_type (pointer_declarator "*local_30" * identifier) ;) (expression_statement "pcVar3 = *pp;" (assignment_expression "pcVar3 = *pp" identifier = (pointer_expression "*pp" * identifier)) ;) (expression_statement "alloc = 10;" (assignment_expression "alloc = 10" identifier = number_literal) ;) (expression_statement "local_30 = pcVar3;" (assignment_expression "local_30 = pcVar3" identifier = identifier) ;) (if_statement "if (pargs != (debug_type_conflict **)0x0) {\n    ppdVar4 = (debug_type_conflict *)(*(code *)PTR_xmalloc_0004dc10)(0x28);\n    pcVar3 = *pp;\n    *pargs = ppdVar4;\n    *pvarargs = 0;\n  }" if (parenthesized_expression "(pargs != (debug_type_conflict **)0x0)" ( (binary_expression "pargs != (debug_type_conflict **)0x0" identifier != (cast_expression "(debug_type_conflict **)0x0" ( (type_descriptor "debug_type_conflict **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n    ppdVar4 = (debug_type_conflict *)(*(code *)PTR_xmalloc_0004dc10)(0x28);\n    pcVar3 = *pp;\n    *pargs = ppdVar4;\n    *pvarargs = 0;\n  }" { (expression_statement "ppdVar4 = (debug_type_conflict *)(*(code *)PTR_xmalloc_0004dc10)(0x28);" (assignment_expression "ppdVar4 = (debug_type_conflict *)(*(code *)PTR_xmalloc_0004dc10)(0x28)" identifier = (cast_expression "(debug_type_conflict *)(*(code *)PTR_xmalloc_0004dc10)(0x28)" ( (type_descriptor "debug_type_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_xmalloc_0004dc10)(0x28)" (parenthesized_expression "(*(code *)PTR_xmalloc_0004dc10)" ( (pointer_expression "*(code *)PTR_xmalloc_0004dc10" * (cast_expression "(code *)PTR_xmalloc_0004dc10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0x28)" ( number_literal ))))) ;) (expression_statement "pcVar3 = *pp;" (assignment_expression "pcVar3 = *pp" identifier = (pointer_expression "*pp" * identifier)) ;) (expression_statement "*pargs = ppdVar4;" (assignment_expression "*pargs = ppdVar4" (pointer_expression "*pargs" * identifier) = identifier) ;) (expression_statement "*pvarargs = 0;" (assignment_expression "*pvarargs = 0" (pointer_expression "*pvarargs" * identifier) = number_literal) ;) })) (expression_statement "count = 0;" (assignment_expression "count = 0" identifier = number_literal) ;) (while_statement "while ((cVar2 = *pcVar3, cVar2 != '_' && (cVar2 != '\0'))) {\n    if (cVar2 == 'e') {\n      if (pargs == (debug_type_conflict **)0x0) goto LAB_00026aec;\n      goto LAB_00026ab8;\n    }\n    if (cVar2 == 'N') {\n      *pp = pcVar3 + 1;\n      bVar5 = stab_demangle_get_count(pp,&r);\n      if (bVar5 == 0) goto LAB_00026a8c;\nLAB_0002697c:\n      bVar5 = stab_demangle_get_count(pp,&t);\n      if ((bVar5 == 0) || (minfo->typestring_count <= t)) {\nLAB_00026a8c:\n        stab_bad_demangle(local_30);\n        return 0;\n      }\n      uVar6 = r - 1;\n      bVar1 = r != 0;\n      r = uVar6;\n      if (bVar1) {\n        do {\n          tem = minfo->typestrings[t].typestring;\n          bVar5 = stab_demangle_arg(minfo,&tem,pargs,&count,&alloc);\n          if (bVar5 == 0) {\n            return 0;\n          }\n          uVar6 = r - 1;\n          bVar1 = r != 0;\n          r = uVar6;\n        } while (bVar1);\n      }\n    }\n    else {\n      if (cVar2 == 'T') {\n        *pp = pcVar3 + 1;\n        r = 1;\n        goto LAB_0002697c;\n      }\n      bVar5 = stab_demangle_arg(minfo,pp,pargs,&count,&alloc);\n      if (bVar5 == 0) {\n        return 0;\n      }\n    }\n    pcVar3 = *pp;\n  }" while (parenthesized_expression "((cVar2 = *pcVar3, cVar2 != '_' && (cVar2 != '\0')))" ( (parenthesized_expression "(cVar2 = *pcVar3, cVar2 != '_' && (cVar2 != '\0'))" ( (comma_expression "cVar2 = *pcVar3, cVar2 != '_' && (cVar2 != '\0')" (assignment_expression "cVar2 = *pcVar3" identifier = (pointer_expression "*pcVar3" * identifier)) , (binary_expression "cVar2 != '_' && (cVar2 != '\0')" (binary_expression "cVar2 != '_'" identifier != (char_literal "'_'" ' character ')) && (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )))) )) )) (compound_statement "{\n    if (cVar2 == 'e') {\n      if (pargs == (debug_type_conflict **)0x0) goto LAB_00026aec;\n      goto LAB_00026ab8;\n    }\n    if (cVar2 == 'N') {\n      *pp = pcVar3 + 1;\n      bVar5 = stab_demangle_get_count(pp,&r);\n      if (bVar5 == 0) goto LAB_00026a8c;\nLAB_0002697c:\n      bVar5 = stab_demangle_get_count(pp,&t);\n      if ((bVar5 == 0) || (minfo->typestring_count <= t)) {\nLAB_00026a8c:\n        stab_bad_demangle(local_30);\n        return 0;\n      }\n      uVar6 = r - 1;\n      bVar1 = r != 0;\n      r = uVar6;\n      if (bVar1) {\n        do {\n          tem = minfo->typestrings[t].typestring;\n          bVar5 = stab_demangle_arg(minfo,&tem,pargs,&count,&alloc);\n          if (bVar5 == 0) {\n            return 0;\n          }\n          uVar6 = r - 1;\n          bVar1 = r != 0;\n          r = uVar6;\n        } while (bVar1);\n      }\n    }\n    else {\n      if (cVar2 == 'T') {\n        *pp = pcVar3 + 1;\n        r = 1;\n        goto LAB_0002697c;\n      }\n      bVar5 = stab_demangle_arg(minfo,pp,pargs,&count,&alloc);\n      if (bVar5 == 0) {\n        return 0;\n      }\n    }\n    pcVar3 = *pp;\n  }" { (if_statement "if (cVar2 == 'e') {\n      if (pargs == (debug_type_conflict **)0x0) goto LAB_00026aec;\n      goto LAB_00026ab8;\n    }" if (parenthesized_expression "(cVar2 == 'e')" ( (binary_expression "cVar2 == 'e'" identifier == (char_literal "'e'" ' character ')) )) (compound_statement "{\n      if (pargs == (debug_type_conflict **)0x0) goto LAB_00026aec;\n      goto LAB_00026ab8;\n    }" { (if_statement "if (pargs == (debug_type_conflict **)0x0) goto LAB_00026aec;" if (parenthesized_expression "(pargs == (debug_type_conflict **)0x0)" ( (binary_expression "pargs == (debug_type_conflict **)0x0" identifier == (cast_expression "(debug_type_conflict **)0x0" ( (type_descriptor "debug_type_conflict **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (goto_statement "goto LAB_00026aec;" goto statement_identifier ;)) (goto_statement "goto LAB_00026ab8;" goto statement_identifier ;) })) (if_statement "if (cVar2 == 'N') {\n      *pp = pcVar3 + 1;\n      bVar5 = stab_demangle_get_count(pp,&r);\n      if (bVar5 == 0) goto LAB_00026a8c;\nLAB_0002697c:\n      bVar5 = stab_demangle_get_count(pp,&t);\n      if ((bVar5 == 0) || (minfo->typestring_count <= t)) {\nLAB_00026a8c:\n        stab_bad_demangle(local_30);\n        return 0;\n      }\n      uVar6 = r - 1;\n      bVar1 = r != 0;\n      r = uVar6;\n      if (bVar1) {\n        do {\n          tem = minfo->typestrings[t].typestring;\n          bVar5 = stab_demangle_arg(minfo,&tem,pargs,&count,&alloc);\n          if (bVar5 == 0) {\n            return 0;\n          }\n          uVar6 = r - 1;\n          bVar1 = r != 0;\n          r = uVar6;\n        } while (bVar1);\n      }\n    }\n    else {\n      if (cVar2 == 'T') {\n        *pp = pcVar3 + 1;\n        r = 1;\n        goto LAB_0002697c;\n      }\n      bVar5 = stab_demangle_arg(minfo,pp,pargs,&count,&alloc);\n      if (bVar5 == 0) {\n        return 0;\n      }\n    }" if (parenthesized_expression "(cVar2 == 'N')" ( (binary_expression "cVar2 == 'N'" identifier == (char_literal "'N'" ' character ')) )) (compound_statement "{\n      *pp = pcVar3 + 1;\n      bVar5 = stab_demangle_get_count(pp,&r);\n      if (bVar5 == 0) goto LAB_00026a8c;\nLAB_0002697c:\n      bVar5 = stab_demangle_get_count(pp,&t);\n      if ((bVar5 == 0) || (minfo->typestring_count <= t)) {\nLAB_00026a8c:\n        stab_bad_demangle(local_30);\n        return 0;\n      }\n      uVar6 = r - 1;\n      bVar1 = r != 0;\n      r = uVar6;\n      if (bVar1) {\n        do {\n          tem = minfo->typestrings[t].typestring;\n          bVar5 = stab_demangle_arg(minfo,&tem,pargs,&count,&alloc);\n          if (bVar5 == 0) {\n            return 0;\n          }\n          uVar6 = r - 1;\n          bVar1 = r != 0;\n          r = uVar6;\n        } while (bVar1);\n      }\n    }" { (expression_statement "*pp = pcVar3 + 1;" (assignment_expression "*pp = pcVar3 + 1" (pointer_expression "*pp" * identifier) = (binary_expression "pcVar3 + 1" identifier + number_literal)) ;) (expression_statement "bVar5 = stab_demangle_get_count(pp,&r);" (assignment_expression "bVar5 = stab_demangle_get_count(pp,&r)" identifier = (call_expression "stab_demangle_get_count(pp,&r)" identifier (argument_list "(pp,&r)" ( identifier , (pointer_expression "&r" & identifier) )))) ;) (if_statement "if (bVar5 == 0) goto LAB_00026a8c;" if (parenthesized_expression "(bVar5 == 0)" ( (binary_expression "bVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00026a8c;" goto statement_identifier ;)) (labeled_statement "LAB_0002697c:\n      bVar5 = stab_demangle_get_count(pp,&t);" statement_identifier : (expression_statement "bVar5 = stab_demangle_get_count(pp,&t);" (assignment_expression "bVar5 = stab_demangle_get_count(pp,&t)" identifier = (call_expression "stab_demangle_get_count(pp,&t)" identifier (argument_list "(pp,&t)" ( identifier , (pointer_expression "&t" & identifier) )))) ;)) (if_statement "if ((bVar5 == 0) || (minfo->typestring_count <= t)) {\nLAB_00026a8c:\n        stab_bad_demangle(local_30);\n        return 0;\n      }" if (parenthesized_expression "((bVar5 == 0) || (minfo->typestring_count <= t))" ( (binary_expression "(bVar5 == 0) || (minfo->typestring_count <= t)" (parenthesized_expression "(bVar5 == 0)" ( (binary_expression "bVar5 == 0" identifier == number_literal) )) || (parenthesized_expression "(minfo->typestring_count <= t)" ( (binary_expression "minfo->typestring_count <= t" (field_expression "minfo->typestring_count" identifier -> field_identifier) <= identifier) ))) )) (compound_statement "{\nLAB_00026a8c:\n        stab_bad_demangle(local_30);\n        return 0;\n      }" { (labeled_statement "LAB_00026a8c:\n        stab_bad_demangle(local_30);" statement_identifier : (expression_statement "stab_bad_demangle(local_30);" (call_expression "stab_bad_demangle(local_30)" identifier (argument_list "(local_30)" ( identifier ))) ;)) (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar6 = r - 1;" (assignment_expression "uVar6 = r - 1" identifier = (binary_expression "r - 1" identifier - number_literal)) ;) (expression_statement "bVar1 = r != 0;" (assignment_expression "bVar1 = r != 0" identifier = (binary_expression "r != 0" identifier != number_literal)) ;) (expression_statement "r = uVar6;" (assignment_expression "r = uVar6" identifier = identifier) ;) (if_statement "if (bVar1) {\n        do {\n          tem = minfo->typestrings[t].typestring;\n          bVar5 = stab_demangle_arg(minfo,&tem,pargs,&count,&alloc);\n          if (bVar5 == 0) {\n            return 0;\n          }\n          uVar6 = r - 1;\n          bVar1 = r != 0;\n          r = uVar6;\n        } while (bVar1);\n      }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n        do {\n          tem = minfo->typestrings[t].typestring;\n          bVar5 = stab_demangle_arg(minfo,&tem,pargs,&count,&alloc);\n          if (bVar5 == 0) {\n            return 0;\n          }\n          uVar6 = r - 1;\n          bVar1 = r != 0;\n          r = uVar6;\n        } while (bVar1);\n      }" { (do_statement "do {\n          tem = minfo->typestrings[t].typestring;\n          bVar5 = stab_demangle_arg(minfo,&tem,pargs,&count,&alloc);\n          if (bVar5 == 0) {\n            return 0;\n          }\n          uVar6 = r - 1;\n          bVar1 = r != 0;\n          r = uVar6;\n        } while (bVar1);" do (compound_statement "{\n          tem = minfo->typestrings[t].typestring;\n          bVar5 = stab_demangle_arg(minfo,&tem,pargs,&count,&alloc);\n          if (bVar5 == 0) {\n            return 0;\n          }\n          uVar6 = r - 1;\n          bVar1 = r != 0;\n          r = uVar6;\n        }" { (expression_statement "tem = minfo->typestrings[t].typestring;" (assignment_expression "tem = minfo->typestrings[t].typestring" identifier = (field_expression "minfo->typestrings[t].typestring" (subscript_expression "minfo->typestrings[t]" (field_expression "minfo->typestrings" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (expression_statement "bVar5 = stab_demangle_arg(minfo,&tem,pargs,&count,&alloc);" (assignment_expression "bVar5 = stab_demangle_arg(minfo,&tem,pargs,&count,&alloc)" identifier = (call_expression "stab_demangle_arg(minfo,&tem,pargs,&count,&alloc)" identifier (argument_list "(minfo,&tem,pargs,&count,&alloc)" ( identifier , (pointer_expression "&tem" & identifier) , identifier , (pointer_expression "&count" & identifier) , (pointer_expression "&alloc" & identifier) )))) ;) (if_statement "if (bVar5 == 0) {\n            return 0;\n          }" if (parenthesized_expression "(bVar5 == 0)" ( (binary_expression "bVar5 == 0" identifier == number_literal) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar6 = r - 1;" (assignment_expression "uVar6 = r - 1" identifier = (binary_expression "r - 1" identifier - number_literal)) ;) (expression_statement "bVar1 = r != 0;" (assignment_expression "bVar1 = r != 0" identifier = (binary_expression "r != 0" identifier != number_literal)) ;) (expression_statement "r = uVar6;" (assignment_expression "r = uVar6" identifier = identifier) ;) }) while (parenthesized_expression "(bVar1)" ( identifier )) ;) })) }) (else_clause "else {\n      if (cVar2 == 'T') {\n        *pp = pcVar3 + 1;\n        r = 1;\n        goto LAB_0002697c;\n      }\n      bVar5 = stab_demangle_arg(minfo,pp,pargs,&count,&alloc);\n      if (bVar5 == 0) {\n        return 0;\n      }\n    }" else (compound_statement "{\n      if (cVar2 == 'T') {\n        *pp = pcVar3 + 1;\n        r = 1;\n        goto LAB_0002697c;\n      }\n      bVar5 = stab_demangle_arg(minfo,pp,pargs,&count,&alloc);\n      if (bVar5 == 0) {\n        return 0;\n      }\n    }" { (if_statement "if (cVar2 == 'T') {\n        *pp = pcVar3 + 1;\n        r = 1;\n        goto LAB_0002697c;\n      }" if (parenthesized_expression "(cVar2 == 'T')" ( (binary_expression "cVar2 == 'T'" identifier == (char_literal "'T'" ' character ')) )) (compound_statement "{\n        *pp = pcVar3 + 1;\n        r = 1;\n        goto LAB_0002697c;\n      }" { (expression_statement "*pp = pcVar3 + 1;" (assignment_expression "*pp = pcVar3 + 1" (pointer_expression "*pp" * identifier) = (binary_expression "pcVar3 + 1" identifier + number_literal)) ;) (expression_statement "r = 1;" (assignment_expression "r = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0002697c;" goto statement_identifier ;) })) (expression_statement "bVar5 = stab_demangle_arg(minfo,pp,pargs,&count,&alloc);" (assignment_expression "bVar5 = stab_demangle_arg(minfo,pp,pargs,&count,&alloc)" identifier = (call_expression "stab_demangle_arg(minfo,pp,pargs,&count,&alloc)" identifier (argument_list "(minfo,pp,pargs,&count,&alloc)" ( identifier , identifier , identifier , (pointer_expression "&count" & identifier) , (pointer_expression "&alloc" & identifier) )))) ;) (if_statement "if (bVar5 == 0) {\n        return 0;\n      }" if (parenthesized_expression "(bVar5 == 0)" ( (binary_expression "bVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) }))) (expression_statement "pcVar3 = *pp;" (assignment_expression "pcVar3 = *pp" identifier = (pointer_expression "*pp" * identifier)) ;) })) (if_statement "if (pargs != (debug_type_conflict **)0x0) {\nLAB_00026ab8:\n    (*pargs)[count] = (debug_type_conflict)0x0;\n    if (*pcVar3 == 'e') {\n      *pvarargs = 1;\nLAB_00026aec:\n      *pp = pcVar3 + 1;\n    }\n  }" if (parenthesized_expression "(pargs != (debug_type_conflict **)0x0)" ( (binary_expression "pargs != (debug_type_conflict **)0x0" identifier != (cast_expression "(debug_type_conflict **)0x0" ( (type_descriptor "debug_type_conflict **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\nLAB_00026ab8:\n    (*pargs)[count] = (debug_type_conflict)0x0;\n    if (*pcVar3 == 'e') {\n      *pvarargs = 1;\nLAB_00026aec:\n      *pp = pcVar3 + 1;\n    }\n  }" { (labeled_statement "LAB_00026ab8:\n    (*pargs)[count] = (debug_type_conflict)0x0;" statement_identifier : (expression_statement "(*pargs)[count] = (debug_type_conflict)0x0;" (assignment_expression "(*pargs)[count] = (debug_type_conflict)0x0" (subscript_expression "(*pargs)[count]" (parenthesized_expression "(*pargs)" ( (pointer_expression "*pargs" * identifier) )) [ identifier ]) = (cast_expression "(debug_type_conflict)0x0" ( (type_descriptor "debug_type_conflict" type_identifier) ) number_literal)) ;)) (if_statement "if (*pcVar3 == 'e') {\n      *pvarargs = 1;\nLAB_00026aec:\n      *pp = pcVar3 + 1;\n    }" if (parenthesized_expression "(*pcVar3 == 'e')" ( (binary_expression "*pcVar3 == 'e'" (pointer_expression "*pcVar3" * identifier) == (char_literal "'e'" ' character ')) )) (compound_statement "{\n      *pvarargs = 1;\nLAB_00026aec:\n      *pp = pcVar3 + 1;\n    }" { (expression_statement "*pvarargs = 1;" (assignment_expression "*pvarargs = 1" (pointer_expression "*pvarargs" * identifier) = number_literal) ;) (labeled_statement "LAB_00026aec:\n      *pp = pcVar3 + 1;" statement_identifier : (expression_statement "*pp = pcVar3 + 1;" (assignment_expression "*pp = pcVar3 + 1" (pointer_expression "*pp" * identifier) = (binary_expression "pcVar3 + 1" identifier + number_literal)) ;)) })) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "int FUN_000268a4(int param_1,undefined4 *param_2,int *param_3,undefined4 *param_4)\n\n{\n  bool bVar1;\n  char cVar2;\n  char *pcVar3;\n  int iVar4;\n  undefined4 local_48;\n  uint local_44;\n  int local_40;\n  int local_3c [3];\n  char *local_30;\n  \n  pcVar3 = (char *)*param_2;\n  local_3c[1] = 10;\n  local_30 = pcVar3;\n  if (param_3 != (int *)0x0) {\n    iVar4 = (*(code *)PTR_xmalloc_0004dc10)(0x28);\n    pcVar3 = (char *)*param_2;\n    *param_3 = iVar4;\n    *param_4 = 0;\n  }\n  local_3c[0] = 0;\n  while ((cVar2 = *pcVar3, cVar2 != '_' && (cVar2 != '\0'))) {\n    if (cVar2 == 'e') {\n      if (param_3 == (int *)0x0) goto LAB_00026aec;\n      goto LAB_00026ab8;\n    }\n    if (cVar2 == 'N') {\n      *param_2 = pcVar3 + 1;\n      iVar4 = FUN_000231a0(param_2,&local_40);\n      if (iVar4 == 0) goto LAB_00026a8c;\nLAB_0002697c:\n      iVar4 = FUN_000231a0(param_2,&local_44);\n      if ((iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44)) {\nLAB_00026a8c:\n        FUN_000232e8(local_30);\n        return 0;\n      }\n      iVar4 = local_40 + -1;\n      bVar1 = local_40 != 0;\n      local_40 = iVar4;\n      if (bVar1) {\n        do {\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        } while (bVar1);\n      }\n    }\n    else {\n      if (cVar2 == 'T') {\n        *param_2 = pcVar3 + 1;\n        local_40 = 1;\n        goto LAB_0002697c;\n      }\n      iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1);\n      if (iVar4 == 0) {\n        return 0;\n      }\n    }\n    pcVar3 = (char *)*param_2;\n  }\n  if (param_3 != (int *)0x0) {\nLAB_00026ab8:\n    *(undefined4 *)(*param_3 + local_3c[0] * 4) = 0;\n    if (*pcVar3 == 'e') {\n      *param_4 = 1;\nLAB_00026aec:\n      *param_2 = pcVar3 + 1;\n    }\n  }\n  return 1;\n}\n\n" (function_definition "int FUN_000268a4(int param_1,undefined4 *param_2,int *param_3,undefined4 *param_4)\n\n{\n  bool bVar1;\n  char cVar2;\n  char *pcVar3;\n  int iVar4;\n  undefined4 local_48;\n  uint local_44;\n  int local_40;\n  int local_3c [3];\n  char *local_30;\n  \n  pcVar3 = (char *)*param_2;\n  local_3c[1] = 10;\n  local_30 = pcVar3;\n  if (param_3 != (int *)0x0) {\n    iVar4 = (*(code *)PTR_xmalloc_0004dc10)(0x28);\n    pcVar3 = (char *)*param_2;\n    *param_3 = iVar4;\n    *param_4 = 0;\n  }\n  local_3c[0] = 0;\n  while ((cVar2 = *pcVar3, cVar2 != '_' && (cVar2 != '\0'))) {\n    if (cVar2 == 'e') {\n      if (param_3 == (int *)0x0) goto LAB_00026aec;\n      goto LAB_00026ab8;\n    }\n    if (cVar2 == 'N') {\n      *param_2 = pcVar3 + 1;\n      iVar4 = FUN_000231a0(param_2,&local_40);\n      if (iVar4 == 0) goto LAB_00026a8c;\nLAB_0002697c:\n      iVar4 = FUN_000231a0(param_2,&local_44);\n      if ((iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44)) {\nLAB_00026a8c:\n        FUN_000232e8(local_30);\n        return 0;\n      }\n      iVar4 = local_40 + -1;\n      bVar1 = local_40 != 0;\n      local_40 = iVar4;\n      if (bVar1) {\n        do {\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        } while (bVar1);\n      }\n    }\n    else {\n      if (cVar2 == 'T') {\n        *param_2 = pcVar3 + 1;\n        local_40 = 1;\n        goto LAB_0002697c;\n      }\n      iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1);\n      if (iVar4 == 0) {\n        return 0;\n      }\n    }\n    pcVar3 = (char *)*param_2;\n  }\n  if (param_3 != (int *)0x0) {\nLAB_00026ab8:\n    *(undefined4 *)(*param_3 + local_3c[0] * 4) = 0;\n    if (*pcVar3 == 'e') {\n      *param_4 = 1;\nLAB_00026aec:\n      *param_2 = pcVar3 + 1;\n    }\n  }\n  return 1;\n}" primitive_type (function_declarator "FUN_000268a4(int param_1,undefined4 *param_2,int *param_3,undefined4 *param_4)" identifier (parameter_list "(int param_1,undefined4 *param_2,int *param_3,undefined4 *param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  bool bVar1;\n  char cVar2;\n  char *pcVar3;\n  int iVar4;\n  undefined4 local_48;\n  uint local_44;\n  int local_40;\n  int local_3c [3];\n  char *local_30;\n  \n  pcVar3 = (char *)*param_2;\n  local_3c[1] = 10;\n  local_30 = pcVar3;\n  if (param_3 != (int *)0x0) {\n    iVar4 = (*(code *)PTR_xmalloc_0004dc10)(0x28);\n    pcVar3 = (char *)*param_2;\n    *param_3 = iVar4;\n    *param_4 = 0;\n  }\n  local_3c[0] = 0;\n  while ((cVar2 = *pcVar3, cVar2 != '_' && (cVar2 != '\0'))) {\n    if (cVar2 == 'e') {\n      if (param_3 == (int *)0x0) goto LAB_00026aec;\n      goto LAB_00026ab8;\n    }\n    if (cVar2 == 'N') {\n      *param_2 = pcVar3 + 1;\n      iVar4 = FUN_000231a0(param_2,&local_40);\n      if (iVar4 == 0) goto LAB_00026a8c;\nLAB_0002697c:\n      iVar4 = FUN_000231a0(param_2,&local_44);\n      if ((iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44)) {\nLAB_00026a8c:\n        FUN_000232e8(local_30);\n        return 0;\n      }\n      iVar4 = local_40 + -1;\n      bVar1 = local_40 != 0;\n      local_40 = iVar4;\n      if (bVar1) {\n        do {\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        } while (bVar1);\n      }\n    }\n    else {\n      if (cVar2 == 'T') {\n        *param_2 = pcVar3 + 1;\n        local_40 = 1;\n        goto LAB_0002697c;\n      }\n      iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1);\n      if (iVar4 == 0) {\n        return 0;\n      }\n    }\n    pcVar3 = (char *)*param_2;\n  }\n  if (param_3 != (int *)0x0) {\nLAB_00026ab8:\n    *(undefined4 *)(*param_3 + local_3c[0] * 4) = 0;\n    if (*pcVar3 == 'e') {\n      *param_4 = 1;\nLAB_00026aec:\n      *param_2 = pcVar3 + 1;\n    }\n  }\n  return 1;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "int local_3c [3];" primitive_type (array_declarator "local_3c [3]" identifier [ number_literal ]) ;) (declaration "char *local_30;" primitive_type (pointer_declarator "*local_30" * identifier) ;) (expression_statement "pcVar3 = (char *)*param_2;" (assignment_expression "pcVar3 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "local_3c[1] = 10;" (assignment_expression "local_3c[1] = 10" (subscript_expression "local_3c[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_30 = pcVar3;" (assignment_expression "local_30 = pcVar3" identifier = identifier) ;) (if_statement "if (param_3 != (int *)0x0) {\n    iVar4 = (*(code *)PTR_xmalloc_0004dc10)(0x28);\n    pcVar3 = (char *)*param_2;\n    *param_3 = iVar4;\n    *param_4 = 0;\n  }" if (parenthesized_expression "(param_3 != (int *)0x0)" ( (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar4 = (*(code *)PTR_xmalloc_0004dc10)(0x28);\n    pcVar3 = (char *)*param_2;\n    *param_3 = iVar4;\n    *param_4 = 0;\n  }" { (expression_statement "iVar4 = (*(code *)PTR_xmalloc_0004dc10)(0x28);" (assignment_expression "iVar4 = (*(code *)PTR_xmalloc_0004dc10)(0x28)" identifier = (call_expression "(*(code *)PTR_xmalloc_0004dc10)(0x28)" (parenthesized_expression "(*(code *)PTR_xmalloc_0004dc10)" ( (pointer_expression "*(code *)PTR_xmalloc_0004dc10" * (cast_expression "(code *)PTR_xmalloc_0004dc10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0x28)" ( number_literal )))) ;) (expression_statement "pcVar3 = (char *)*param_2;" (assignment_expression "pcVar3 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "*param_3 = iVar4;" (assignment_expression "*param_3 = iVar4" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" * identifier) = number_literal) ;) })) (expression_statement "local_3c[0] = 0;" (assignment_expression "local_3c[0] = 0" (subscript_expression "local_3c[0]" identifier [ number_literal ]) = number_literal) ;) (while_statement "while ((cVar2 = *pcVar3, cVar2 != '_' && (cVar2 != '\0'))) {\n    if (cVar2 == 'e') {\n      if (param_3 == (int *)0x0) goto LAB_00026aec;\n      goto LAB_00026ab8;\n    }\n    if (cVar2 == 'N') {\n      *param_2 = pcVar3 + 1;\n      iVar4 = FUN_000231a0(param_2,&local_40);\n      if (iVar4 == 0) goto LAB_00026a8c;\nLAB_0002697c:\n      iVar4 = FUN_000231a0(param_2,&local_44);\n      if ((iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44)) {\nLAB_00026a8c:\n        FUN_000232e8(local_30);\n        return 0;\n      }\n      iVar4 = local_40 + -1;\n      bVar1 = local_40 != 0;\n      local_40 = iVar4;\n      if (bVar1) {\n        do {\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        } while (bVar1);\n      }\n    }\n    else {\n      if (cVar2 == 'T') {\n        *param_2 = pcVar3 + 1;\n        local_40 = 1;\n        goto LAB_0002697c;\n      }\n      iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1);\n      if (iVar4 == 0) {\n        return 0;\n      }\n    }\n    pcVar3 = (char *)*param_2;\n  }" while (parenthesized_expression "((cVar2 = *pcVar3, cVar2 != '_' && (cVar2 != '\0')))" ( (parenthesized_expression "(cVar2 = *pcVar3, cVar2 != '_' && (cVar2 != '\0'))" ( (comma_expression "cVar2 = *pcVar3, cVar2 != '_' && (cVar2 != '\0')" (assignment_expression "cVar2 = *pcVar3" identifier = (pointer_expression "*pcVar3" * identifier)) , (binary_expression "cVar2 != '_' && (cVar2 != '\0')" (binary_expression "cVar2 != '_'" identifier != (char_literal "'_'" ' character ')) && (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )))) )) )) (compound_statement "{\n    if (cVar2 == 'e') {\n      if (param_3 == (int *)0x0) goto LAB_00026aec;\n      goto LAB_00026ab8;\n    }\n    if (cVar2 == 'N') {\n      *param_2 = pcVar3 + 1;\n      iVar4 = FUN_000231a0(param_2,&local_40);\n      if (iVar4 == 0) goto LAB_00026a8c;\nLAB_0002697c:\n      iVar4 = FUN_000231a0(param_2,&local_44);\n      if ((iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44)) {\nLAB_00026a8c:\n        FUN_000232e8(local_30);\n        return 0;\n      }\n      iVar4 = local_40 + -1;\n      bVar1 = local_40 != 0;\n      local_40 = iVar4;\n      if (bVar1) {\n        do {\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        } while (bVar1);\n      }\n    }\n    else {\n      if (cVar2 == 'T') {\n        *param_2 = pcVar3 + 1;\n        local_40 = 1;\n        goto LAB_0002697c;\n      }\n      iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1);\n      if (iVar4 == 0) {\n        return 0;\n      }\n    }\n    pcVar3 = (char *)*param_2;\n  }" { (if_statement "if (cVar2 == 'e') {\n      if (param_3 == (int *)0x0) goto LAB_00026aec;\n      goto LAB_00026ab8;\n    }" if (parenthesized_expression "(cVar2 == 'e')" ( (binary_expression "cVar2 == 'e'" identifier == (char_literal "'e'" ' character ')) )) (compound_statement "{\n      if (param_3 == (int *)0x0) goto LAB_00026aec;\n      goto LAB_00026ab8;\n    }" { (if_statement "if (param_3 == (int *)0x0) goto LAB_00026aec;" if (parenthesized_expression "(param_3 == (int *)0x0)" ( (binary_expression "param_3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00026aec;" goto statement_identifier ;)) (goto_statement "goto LAB_00026ab8;" goto statement_identifier ;) })) (if_statement "if (cVar2 == 'N') {\n      *param_2 = pcVar3 + 1;\n      iVar4 = FUN_000231a0(param_2,&local_40);\n      if (iVar4 == 0) goto LAB_00026a8c;\nLAB_0002697c:\n      iVar4 = FUN_000231a0(param_2,&local_44);\n      if ((iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44)) {\nLAB_00026a8c:\n        FUN_000232e8(local_30);\n        return 0;\n      }\n      iVar4 = local_40 + -1;\n      bVar1 = local_40 != 0;\n      local_40 = iVar4;\n      if (bVar1) {\n        do {\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        } while (bVar1);\n      }\n    }\n    else {\n      if (cVar2 == 'T') {\n        *param_2 = pcVar3 + 1;\n        local_40 = 1;\n        goto LAB_0002697c;\n      }\n      iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1);\n      if (iVar4 == 0) {\n        return 0;\n      }\n    }" if (parenthesized_expression "(cVar2 == 'N')" ( (binary_expression "cVar2 == 'N'" identifier == (char_literal "'N'" ' character ')) )) (compound_statement "{\n      *param_2 = pcVar3 + 1;\n      iVar4 = FUN_000231a0(param_2,&local_40);\n      if (iVar4 == 0) goto LAB_00026a8c;\nLAB_0002697c:\n      iVar4 = FUN_000231a0(param_2,&local_44);\n      if ((iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44)) {\nLAB_00026a8c:\n        FUN_000232e8(local_30);\n        return 0;\n      }\n      iVar4 = local_40 + -1;\n      bVar1 = local_40 != 0;\n      local_40 = iVar4;\n      if (bVar1) {\n        do {\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        } while (bVar1);\n      }\n    }" { (expression_statement "*param_2 = pcVar3 + 1;" (assignment_expression "*param_2 = pcVar3 + 1" (pointer_expression "*param_2" * identifier) = (binary_expression "pcVar3 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = FUN_000231a0(param_2,&local_40);" (assignment_expression "iVar4 = FUN_000231a0(param_2,&local_40)" identifier = (call_expression "FUN_000231a0(param_2,&local_40)" identifier (argument_list "(param_2,&local_40)" ( identifier , (pointer_expression "&local_40" & identifier) )))) ;) (if_statement "if (iVar4 == 0) goto LAB_00026a8c;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00026a8c;" goto statement_identifier ;)) (labeled_statement "LAB_0002697c:\n      iVar4 = FUN_000231a0(param_2,&local_44);" statement_identifier : (expression_statement "iVar4 = FUN_000231a0(param_2,&local_44);" (assignment_expression "iVar4 = FUN_000231a0(param_2,&local_44)" identifier = (call_expression "FUN_000231a0(param_2,&local_44)" identifier (argument_list "(param_2,&local_44)" ( identifier , (pointer_expression "&local_44" & identifier) )))) ;)) (if_statement "if ((iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44)) {\nLAB_00026a8c:\n        FUN_000232e8(local_30);\n        return 0;\n      }" if (parenthesized_expression "((iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44))" ( (binary_expression "(iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44)" (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) || (parenthesized_expression "(*(uint *)(param_1 + 0x14) <= local_44)" ( (binary_expression "*(uint *)(param_1 + 0x14) <= local_44" (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) <= identifier) ))) )) (compound_statement "{\nLAB_00026a8c:\n        FUN_000232e8(local_30);\n        return 0;\n      }" { (labeled_statement "LAB_00026a8c:\n        FUN_000232e8(local_30);" statement_identifier : (expression_statement "FUN_000232e8(local_30);" (call_expression "FUN_000232e8(local_30)" identifier (argument_list "(local_30)" ( identifier ))) ;)) (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar4 = local_40 + -1;" (assignment_expression "iVar4 = local_40 + -1" identifier = (binary_expression "local_40 + -1" identifier + number_literal)) ;) (expression_statement "bVar1 = local_40 != 0;" (assignment_expression "bVar1 = local_40 != 0" identifier = (binary_expression "local_40 != 0" identifier != number_literal)) ;) (expression_statement "local_40 = iVar4;" (assignment_expression "local_40 = iVar4" identifier = identifier) ;) (if_statement "if (bVar1) {\n        do {\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        } while (bVar1);\n      }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n        do {\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        } while (bVar1);\n      }" { (do_statement "do {\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        } while (bVar1);" do (compound_statement "{\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        }" { (expression_statement "local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);" (assignment_expression "local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x10) + local_44 * 8)" ( (binary_expression "*(int *)(param_1 + 0x10) + local_44 * 8" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) + (binary_expression "local_44 * 8" identifier * number_literal)) ))))) ;) (expression_statement "iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);" (assignment_expression "iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1)" identifier = (call_expression "FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1)" identifier (argument_list "(param_1,&local_48,param_3,local_3c,local_3c + 1)" ( identifier , (pointer_expression "&local_48" & identifier) , identifier , identifier , (binary_expression "local_3c + 1" identifier + number_literal) )))) ;) (if_statement "if (iVar4 == 0) {\n            return 0;\n          }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar4 = local_40 + -1;" (assignment_expression "iVar4 = local_40 + -1" identifier = (binary_expression "local_40 + -1" identifier + number_literal)) ;) (expression_statement "bVar1 = local_40 != 0;" (assignment_expression "bVar1 = local_40 != 0" identifier = (binary_expression "local_40 != 0" identifier != number_literal)) ;) (expression_statement "local_40 = iVar4;" (assignment_expression "local_40 = iVar4" identifier = identifier) ;) }) while (parenthesized_expression "(bVar1)" ( identifier )) ;) })) }) (else_clause "else {\n      if (cVar2 == 'T') {\n        *param_2 = pcVar3 + 1;\n        local_40 = 1;\n        goto LAB_0002697c;\n      }\n      iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1);\n      if (iVar4 == 0) {\n        return 0;\n      }\n    }" else (compound_statement "{\n      if (cVar2 == 'T') {\n        *param_2 = pcVar3 + 1;\n        local_40 = 1;\n        goto LAB_0002697c;\n      }\n      iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1);\n      if (iVar4 == 0) {\n        return 0;\n      }\n    }" { (if_statement "if (cVar2 == 'T') {\n        *param_2 = pcVar3 + 1;\n        local_40 = 1;\n        goto LAB_0002697c;\n      }" if (parenthesized_expression "(cVar2 == 'T')" ( (binary_expression "cVar2 == 'T'" identifier == (char_literal "'T'" ' character ')) )) (compound_statement "{\n        *param_2 = pcVar3 + 1;\n        local_40 = 1;\n        goto LAB_0002697c;\n      }" { (expression_statement "*param_2 = pcVar3 + 1;" (assignment_expression "*param_2 = pcVar3 + 1" (pointer_expression "*param_2" * identifier) = (binary_expression "pcVar3 + 1" identifier + number_literal)) ;) (expression_statement "local_40 = 1;" (assignment_expression "local_40 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0002697c;" goto statement_identifier ;) })) (expression_statement "iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1);" (assignment_expression "iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1)" identifier = (call_expression "FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1)" identifier (argument_list "(param_1,param_2,param_3,local_3c,local_3c + 1)" ( identifier , identifier , identifier , identifier , (binary_expression "local_3c + 1" identifier + number_literal) )))) ;) (if_statement "if (iVar4 == 0) {\n        return 0;\n      }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) }))) (expression_statement "pcVar3 = (char *)*param_2;" (assignment_expression "pcVar3 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) })) (if_statement "if (param_3 != (int *)0x0) {\nLAB_00026ab8:\n    *(undefined4 *)(*param_3 + local_3c[0] * 4) = 0;\n    if (*pcVar3 == 'e') {\n      *param_4 = 1;\nLAB_00026aec:\n      *param_2 = pcVar3 + 1;\n    }\n  }" if (parenthesized_expression "(param_3 != (int *)0x0)" ( (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00026ab8:\n    *(undefined4 *)(*param_3 + local_3c[0] * 4) = 0;\n    if (*pcVar3 == 'e') {\n      *param_4 = 1;\nLAB_00026aec:\n      *param_2 = pcVar3 + 1;\n    }\n  }" { (labeled_statement "LAB_00026ab8:\n    *(undefined4 *)(*param_3 + local_3c[0] * 4) = 0;" statement_identifier : (expression_statement "*(undefined4 *)(*param_3 + local_3c[0] * 4) = 0;" (assignment_expression "*(undefined4 *)(*param_3 + local_3c[0] * 4) = 0" (pointer_expression "*(undefined4 *)(*param_3 + local_3c[0] * 4)" * (cast_expression "(undefined4 *)(*param_3 + local_3c[0] * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_3 + local_3c[0] * 4)" ( (binary_expression "*param_3 + local_3c[0] * 4" (pointer_expression "*param_3" * identifier) + (binary_expression "local_3c[0] * 4" (subscript_expression "local_3c[0]" identifier [ number_literal ]) * number_literal)) )))) = number_literal) ;)) (if_statement "if (*pcVar3 == 'e') {\n      *param_4 = 1;\nLAB_00026aec:\n      *param_2 = pcVar3 + 1;\n    }" if (parenthesized_expression "(*pcVar3 == 'e')" ( (binary_expression "*pcVar3 == 'e'" (pointer_expression "*pcVar3" * identifier) == (char_literal "'e'" ' character ')) )) (compound_statement "{\n      *param_4 = 1;\nLAB_00026aec:\n      *param_2 = pcVar3 + 1;\n    }" { (expression_statement "*param_4 = 1;" (assignment_expression "*param_4 = 1" (pointer_expression "*param_4" * identifier) = number_literal) ;) (labeled_statement "LAB_00026aec:\n      *param_2 = pcVar3 + 1;" statement_identifier : (expression_statement "*param_2 = pcVar3 + 1;" (assignment_expression "*param_2 = pcVar3 + 1" (pointer_expression "*param_2" * identifier) = (binary_expression "pcVar3 + 1" identifier + number_literal)) ;)) })) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (while_statement while (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * IDENT)) , (binary_expression (binary_expression IDENT != (char_literal ' character ')) && (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )))) )) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , IDENT , IDENT , (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( IDENT )) ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT)) )))) = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;)) })) })) (return_statement return LIT ;) })))
(function_definition "int FUN_000268a4(int param_1,undefined4 *param_2,int *param_3,undefined4 *param_4)\n\n{\n  bool bVar1;\n  char cVar2;\n  char *pcVar3;\n  int iVar4;\n  undefined4 local_48;\n  uint local_44;\n  int local_40;\n  int local_3c [3];\n  char *local_30;\n  \n  pcVar3 = (char *)*param_2;\n  local_3c[1] = 10;\n  local_30 = pcVar3;\n  if (param_3 != (int *)0x0) {\n    iVar4 = (*(code *)PTR_xmalloc_0004dc10)(0x28);\n    pcVar3 = (char *)*param_2;\n    *param_3 = iVar4;\n    *param_4 = 0;\n  }\n  local_3c[0] = 0;\n  while ((cVar2 = *pcVar3, cVar2 != '_' && (cVar2 != '\0'))) {\n    if (cVar2 == 'e') {\n      if (param_3 == (int *)0x0) goto LAB_00026aec;\n      goto LAB_00026ab8;\n    }\n    if (cVar2 == 'N') {\n      *param_2 = pcVar3 + 1;\n      iVar4 = FUN_000231a0(param_2,&local_40);\n      if (iVar4 == 0) goto LAB_00026a8c;\nLAB_0002697c:\n      iVar4 = FUN_000231a0(param_2,&local_44);\n      if ((iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44)) {\nLAB_00026a8c:\n        FUN_000232e8(local_30);\n        return 0;\n      }\n      iVar4 = local_40 + -1;\n      bVar1 = local_40 != 0;\n      local_40 = iVar4;\n      if (bVar1) {\n        do {\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        } while (bVar1);\n      }\n    }\n    else {\n      if (cVar2 == 'T') {\n        *param_2 = pcVar3 + 1;\n        local_40 = 1;\n        goto LAB_0002697c;\n      }\n      iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1);\n      if (iVar4 == 0) {\n        return 0;\n      }\n    }\n    pcVar3 = (char *)*param_2;\n  }\n  if (param_3 != (int *)0x0) {\nLAB_00026ab8:\n    *(undefined4 *)(*param_3 + local_3c[0] * 4) = 0;\n    if (*pcVar3 == 'e') {\n      *param_4 = 1;\nLAB_00026aec:\n      *param_2 = pcVar3 + 1;\n    }\n  }\n  return 1;\n}" (primitive_type "int") (function_declarator "FUN_000268a4(int param_1,undefined4 *param_2,int *param_3,undefined4 *param_4)" (identifier "FUN_000268a4") (parameter_list "(int param_1,undefined4 *param_2,int *param_3,undefined4 *param_4)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "undefined4 *param_4" (type_identifier "undefined4") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")"))) (compound_statement "{\n  bool bVar1;\n  char cVar2;\n  char *pcVar3;\n  int iVar4;\n  undefined4 local_48;\n  uint local_44;\n  int local_40;\n  int local_3c [3];\n  char *local_30;\n  \n  pcVar3 = (char *)*param_2;\n  local_3c[1] = 10;\n  local_30 = pcVar3;\n  if (param_3 != (int *)0x0) {\n    iVar4 = (*(code *)PTR_xmalloc_0004dc10)(0x28);\n    pcVar3 = (char *)*param_2;\n    *param_3 = iVar4;\n    *param_4 = 0;\n  }\n  local_3c[0] = 0;\n  while ((cVar2 = *pcVar3, cVar2 != '_' && (cVar2 != '\0'))) {\n    if (cVar2 == 'e') {\n      if (param_3 == (int *)0x0) goto LAB_00026aec;\n      goto LAB_00026ab8;\n    }\n    if (cVar2 == 'N') {\n      *param_2 = pcVar3 + 1;\n      iVar4 = FUN_000231a0(param_2,&local_40);\n      if (iVar4 == 0) goto LAB_00026a8c;\nLAB_0002697c:\n      iVar4 = FUN_000231a0(param_2,&local_44);\n      if ((iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44)) {\nLAB_00026a8c:\n        FUN_000232e8(local_30);\n        return 0;\n      }\n      iVar4 = local_40 + -1;\n      bVar1 = local_40 != 0;\n      local_40 = iVar4;\n      if (bVar1) {\n        do {\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        } while (bVar1);\n      }\n    }\n    else {\n      if (cVar2 == 'T') {\n        *param_2 = pcVar3 + 1;\n        local_40 = 1;\n        goto LAB_0002697c;\n      }\n      iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1);\n      if (iVar4 == 0) {\n        return 0;\n      }\n    }\n    pcVar3 = (char *)*param_2;\n  }\n  if (param_3 != (int *)0x0) {\nLAB_00026ab8:\n    *(undefined4 *)(*param_3 + local_3c[0] * 4) = 0;\n    if (*pcVar3 == 'e') {\n      *param_4 = 1;\nLAB_00026aec:\n      *param_2 = pcVar3 + 1;\n    }\n  }\n  return 1;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined4 local_48;" (type_identifier "undefined4") (identifier "local_48") (; ";")) (declaration "uint local_44;" (type_identifier "uint") (identifier "local_44") (; ";")) (declaration "int local_40;" (primitive_type "int") (identifier "local_40") (; ";")) (declaration "int local_3c [3];" (primitive_type "int") (array_declarator "local_3c [3]" (identifier "local_3c") ([ "[") (number_literal "3") (] "]")) (; ";")) (declaration "char *local_30;" (primitive_type "char") (pointer_declarator "*local_30" (* "*") (identifier "local_30")) (; ";")) (expression_statement "pcVar3 = (char *)*param_2;" (assignment_expression "pcVar3 = (char *)*param_2" (identifier "pcVar3") (= "=") (cast_expression "(char *)*param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "local_3c[1] = 10;" (assignment_expression "local_3c[1] = 10" (subscript_expression "local_3c[1]" (identifier "local_3c") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "10")) (; ";")) (expression_statement "local_30 = pcVar3;" (assignment_expression "local_30 = pcVar3" (identifier "local_30") (= "=") (identifier "pcVar3")) (; ";")) (if_statement "if (param_3 != (int *)0x0) {\n    iVar4 = (*(code *)PTR_xmalloc_0004dc10)(0x28);\n    pcVar3 = (char *)*param_2;\n    *param_3 = iVar4;\n    *param_4 = 0;\n  }" (if "if") (parenthesized_expression "(param_3 != (int *)0x0)" (( "(") (binary_expression "param_3 != (int *)0x0" (identifier "param_3") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    iVar4 = (*(code *)PTR_xmalloc_0004dc10)(0x28);\n    pcVar3 = (char *)*param_2;\n    *param_3 = iVar4;\n    *param_4 = 0;\n  }" ({ "{") (expression_statement "iVar4 = (*(code *)PTR_xmalloc_0004dc10)(0x28);" (assignment_expression "iVar4 = (*(code *)PTR_xmalloc_0004dc10)(0x28)" (identifier "iVar4") (= "=") (call_expression "(*(code *)PTR_xmalloc_0004dc10)(0x28)" (parenthesized_expression "(*(code *)PTR_xmalloc_0004dc10)" (( "(") (pointer_expression "*(code *)PTR_xmalloc_0004dc10" (* "*") (cast_expression "(code *)PTR_xmalloc_0004dc10" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_xmalloc_0004dc10"))) () ")")) (argument_list "(0x28)" (( "(") (number_literal "0x28") () ")")))) (; ";")) (expression_statement "pcVar3 = (char *)*param_2;" (assignment_expression "pcVar3 = (char *)*param_2" (identifier "pcVar3") (= "=") (cast_expression "(char *)*param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "*param_3 = iVar4;" (assignment_expression "*param_3 = iVar4" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "iVar4")) (; ";")) (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "local_3c[0] = 0;" (assignment_expression "local_3c[0] = 0" (subscript_expression "local_3c[0]" (identifier "local_3c") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0")) (; ";")) (while_statement "while ((cVar2 = *pcVar3, cVar2 != '_' && (cVar2 != '\0'))) {\n    if (cVar2 == 'e') {\n      if (param_3 == (int *)0x0) goto LAB_00026aec;\n      goto LAB_00026ab8;\n    }\n    if (cVar2 == 'N') {\n      *param_2 = pcVar3 + 1;\n      iVar4 = FUN_000231a0(param_2,&local_40);\n      if (iVar4 == 0) goto LAB_00026a8c;\nLAB_0002697c:\n      iVar4 = FUN_000231a0(param_2,&local_44);\n      if ((iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44)) {\nLAB_00026a8c:\n        FUN_000232e8(local_30);\n        return 0;\n      }\n      iVar4 = local_40 + -1;\n      bVar1 = local_40 != 0;\n      local_40 = iVar4;\n      if (bVar1) {\n        do {\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        } while (bVar1);\n      }\n    }\n    else {\n      if (cVar2 == 'T') {\n        *param_2 = pcVar3 + 1;\n        local_40 = 1;\n        goto LAB_0002697c;\n      }\n      iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1);\n      if (iVar4 == 0) {\n        return 0;\n      }\n    }\n    pcVar3 = (char *)*param_2;\n  }" (while "while") (parenthesized_expression "((cVar2 = *pcVar3, cVar2 != '_' && (cVar2 != '\0')))" (( "(") (parenthesized_expression "(cVar2 = *pcVar3, cVar2 != '_' && (cVar2 != '\0'))" (( "(") (comma_expression "cVar2 = *pcVar3, cVar2 != '_' && (cVar2 != '\0')" (assignment_expression "cVar2 = *pcVar3" (identifier "cVar2") (= "=") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3"))) (, ",") (binary_expression "cVar2 != '_' && (cVar2 != '\0')" (binary_expression "cVar2 != '_'" (identifier "cVar2") (!= "!=") (char_literal "'_'" (' "'") (character "_") (' "'"))) (&& "&&") (parenthesized_expression "(cVar2 != '\0')" (( "(") (binary_expression "cVar2 != '\0'" (identifier "cVar2") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")))) () ")")) () ")")) (compound_statement "{\n    if (cVar2 == 'e') {\n      if (param_3 == (int *)0x0) goto LAB_00026aec;\n      goto LAB_00026ab8;\n    }\n    if (cVar2 == 'N') {\n      *param_2 = pcVar3 + 1;\n      iVar4 = FUN_000231a0(param_2,&local_40);\n      if (iVar4 == 0) goto LAB_00026a8c;\nLAB_0002697c:\n      iVar4 = FUN_000231a0(param_2,&local_44);\n      if ((iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44)) {\nLAB_00026a8c:\n        FUN_000232e8(local_30);\n        return 0;\n      }\n      iVar4 = local_40 + -1;\n      bVar1 = local_40 != 0;\n      local_40 = iVar4;\n      if (bVar1) {\n        do {\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        } while (bVar1);\n      }\n    }\n    else {\n      if (cVar2 == 'T') {\n        *param_2 = pcVar3 + 1;\n        local_40 = 1;\n        goto LAB_0002697c;\n      }\n      iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1);\n      if (iVar4 == 0) {\n        return 0;\n      }\n    }\n    pcVar3 = (char *)*param_2;\n  }" ({ "{") (if_statement "if (cVar2 == 'e') {\n      if (param_3 == (int *)0x0) goto LAB_00026aec;\n      goto LAB_00026ab8;\n    }" (if "if") (parenthesized_expression "(cVar2 == 'e')" (( "(") (binary_expression "cVar2 == 'e'" (identifier "cVar2") (== "==") (char_literal "'e'" (' "'") (character "e") (' "'"))) () ")")) (compound_statement "{\n      if (param_3 == (int *)0x0) goto LAB_00026aec;\n      goto LAB_00026ab8;\n    }" ({ "{") (if_statement "if (param_3 == (int *)0x0) goto LAB_00026aec;" (if "if") (parenthesized_expression "(param_3 == (int *)0x0)" (( "(") (binary_expression "param_3 == (int *)0x0" (identifier "param_3") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00026aec;" (goto "goto") (statement_identifier "LAB_00026aec") (; ";"))) (goto_statement "goto LAB_00026ab8;" (goto "goto") (statement_identifier "LAB_00026ab8") (; ";")) (} "}"))) (if_statement "if (cVar2 == 'N') {\n      *param_2 = pcVar3 + 1;\n      iVar4 = FUN_000231a0(param_2,&local_40);\n      if (iVar4 == 0) goto LAB_00026a8c;\nLAB_0002697c:\n      iVar4 = FUN_000231a0(param_2,&local_44);\n      if ((iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44)) {\nLAB_00026a8c:\n        FUN_000232e8(local_30);\n        return 0;\n      }\n      iVar4 = local_40 + -1;\n      bVar1 = local_40 != 0;\n      local_40 = iVar4;\n      if (bVar1) {\n        do {\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        } while (bVar1);\n      }\n    }\n    else {\n      if (cVar2 == 'T') {\n        *param_2 = pcVar3 + 1;\n        local_40 = 1;\n        goto LAB_0002697c;\n      }\n      iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1);\n      if (iVar4 == 0) {\n        return 0;\n      }\n    }" (if "if") (parenthesized_expression "(cVar2 == 'N')" (( "(") (binary_expression "cVar2 == 'N'" (identifier "cVar2") (== "==") (char_literal "'N'" (' "'") (character "N") (' "'"))) () ")")) (compound_statement "{\n      *param_2 = pcVar3 + 1;\n      iVar4 = FUN_000231a0(param_2,&local_40);\n      if (iVar4 == 0) goto LAB_00026a8c;\nLAB_0002697c:\n      iVar4 = FUN_000231a0(param_2,&local_44);\n      if ((iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44)) {\nLAB_00026a8c:\n        FUN_000232e8(local_30);\n        return 0;\n      }\n      iVar4 = local_40 + -1;\n      bVar1 = local_40 != 0;\n      local_40 = iVar4;\n      if (bVar1) {\n        do {\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        } while (bVar1);\n      }\n    }" ({ "{") (expression_statement "*param_2 = pcVar3 + 1;" (assignment_expression "*param_2 = pcVar3 + 1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "pcVar3 + 1" (identifier "pcVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar4 = FUN_000231a0(param_2,&local_40);" (assignment_expression "iVar4 = FUN_000231a0(param_2,&local_40)" (identifier "iVar4") (= "=") (call_expression "FUN_000231a0(param_2,&local_40)" (identifier "FUN_000231a0") (argument_list "(param_2,&local_40)" (( "(") (identifier "param_2") (, ",") (pointer_expression "&local_40" (& "&") (identifier "local_40")) () ")")))) (; ";")) (if_statement "if (iVar4 == 0) goto LAB_00026a8c;" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00026a8c;" (goto "goto") (statement_identifier "LAB_00026a8c") (; ";"))) (labeled_statement "LAB_0002697c:\n      iVar4 = FUN_000231a0(param_2,&local_44);" (statement_identifier "LAB_0002697c") (: ":") (expression_statement "iVar4 = FUN_000231a0(param_2,&local_44);" (assignment_expression "iVar4 = FUN_000231a0(param_2,&local_44)" (identifier "iVar4") (= "=") (call_expression "FUN_000231a0(param_2,&local_44)" (identifier "FUN_000231a0") (argument_list "(param_2,&local_44)" (( "(") (identifier "param_2") (, ",") (pointer_expression "&local_44" (& "&") (identifier "local_44")) () ")")))) (; ";"))) (if_statement "if ((iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44)) {\nLAB_00026a8c:\n        FUN_000232e8(local_30);\n        return 0;\n      }" (if "if") (parenthesized_expression "((iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44))" (( "(") (binary_expression "(iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44)" (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(uint *)(param_1 + 0x14) <= local_44)" (( "(") (binary_expression "*(uint *)(param_1 + 0x14) <= local_44" (pointer_expression "*(uint *)(param_1 + 0x14)" (* "*") (cast_expression "(uint *)(param_1 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (<= "<=") (identifier "local_44")) () ")"))) () ")")) (compound_statement "{\nLAB_00026a8c:\n        FUN_000232e8(local_30);\n        return 0;\n      }" ({ "{") (labeled_statement "LAB_00026a8c:\n        FUN_000232e8(local_30);" (statement_identifier "LAB_00026a8c") (: ":") (expression_statement "FUN_000232e8(local_30);" (call_expression "FUN_000232e8(local_30)" (identifier "FUN_000232e8") (argument_list "(local_30)" (( "(") (identifier "local_30") () ")"))) (; ";"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar4 = local_40 + -1;" (assignment_expression "iVar4 = local_40 + -1" (identifier "iVar4") (= "=") (binary_expression "local_40 + -1" (identifier "local_40") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar1 = local_40 != 0;" (assignment_expression "bVar1 = local_40 != 0" (identifier "bVar1") (= "=") (binary_expression "local_40 != 0" (identifier "local_40") (!= "!=") (number_literal "0"))) (; ";")) (expression_statement "local_40 = iVar4;" (assignment_expression "local_40 = iVar4" (identifier "local_40") (= "=") (identifier "iVar4")) (; ";")) (if_statement "if (bVar1) {\n        do {\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        } while (bVar1);\n      }" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (compound_statement "{\n        do {\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        } while (bVar1);\n      }" ({ "{") (do_statement "do {\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        } while (bVar1);" (do "do") (compound_statement "{\n          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);\n          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);\n          if (iVar4 == 0) {\n            return 0;\n          }\n          iVar4 = local_40 + -1;\n          bVar1 = local_40 != 0;\n          local_40 = iVar4;\n        }" ({ "{") (expression_statement "local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);" (assignment_expression "local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8)" (identifier "local_48") (= "=") (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8)" (* "*") (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x10) + local_44 * 8)" (( "(") (binary_expression "*(int *)(param_1 + 0x10) + local_44 * 8" (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (binary_expression "local_44 * 8" (identifier "local_44") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);" (assignment_expression "iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1)" (identifier "iVar4") (= "=") (call_expression "FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1)" (identifier "FUN_0002675c") (argument_list "(param_1,&local_48,param_3,local_3c,local_3c + 1)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) (, ",") (identifier "param_3") (, ",") (identifier "local_3c") (, ",") (binary_expression "local_3c + 1" (identifier "local_3c") (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (iVar4 == 0) {\n            return 0;\n          }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            return 0;\n          }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar4 = local_40 + -1;" (assignment_expression "iVar4 = local_40 + -1" (identifier "iVar4") (= "=") (binary_expression "local_40 + -1" (identifier "local_40") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar1 = local_40 != 0;" (assignment_expression "bVar1 = local_40 != 0" (identifier "bVar1") (= "=") (binary_expression "local_40 != 0" (identifier "local_40") (!= "!=") (number_literal "0"))) (; ";")) (expression_statement "local_40 = iVar4;" (assignment_expression "local_40 = iVar4" (identifier "local_40") (= "=") (identifier "iVar4")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      if (cVar2 == 'T') {\n        *param_2 = pcVar3 + 1;\n        local_40 = 1;\n        goto LAB_0002697c;\n      }\n      iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1);\n      if (iVar4 == 0) {\n        return 0;\n      }\n    }" (else "else") (compound_statement "{\n      if (cVar2 == 'T') {\n        *param_2 = pcVar3 + 1;\n        local_40 = 1;\n        goto LAB_0002697c;\n      }\n      iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1);\n      if (iVar4 == 0) {\n        return 0;\n      }\n    }" ({ "{") (if_statement "if (cVar2 == 'T') {\n        *param_2 = pcVar3 + 1;\n        local_40 = 1;\n        goto LAB_0002697c;\n      }" (if "if") (parenthesized_expression "(cVar2 == 'T')" (( "(") (binary_expression "cVar2 == 'T'" (identifier "cVar2") (== "==") (char_literal "'T'" (' "'") (character "T") (' "'"))) () ")")) (compound_statement "{\n        *param_2 = pcVar3 + 1;\n        local_40 = 1;\n        goto LAB_0002697c;\n      }" ({ "{") (expression_statement "*param_2 = pcVar3 + 1;" (assignment_expression "*param_2 = pcVar3 + 1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "pcVar3 + 1" (identifier "pcVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_40 = 1;" (assignment_expression "local_40 = 1" (identifier "local_40") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_0002697c;" (goto "goto") (statement_identifier "LAB_0002697c") (; ";")) (} "}"))) (expression_statement "iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1);" (assignment_expression "iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1)" (identifier "iVar4") (= "=") (call_expression "FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1)" (identifier "FUN_0002675c") (argument_list "(param_1,param_2,param_3,local_3c,local_3c + 1)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "local_3c") (, ",") (binary_expression "local_3c + 1" (identifier "local_3c") (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (iVar4 == 0) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}")))) (expression_statement "pcVar3 = (char *)*param_2;" (assignment_expression "pcVar3 = (char *)*param_2" (identifier "pcVar3") (= "=") (cast_expression "(char *)*param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (} "}"))) (if_statement "if (param_3 != (int *)0x0) {\nLAB_00026ab8:\n    *(undefined4 *)(*param_3 + local_3c[0] * 4) = 0;\n    if (*pcVar3 == 'e') {\n      *param_4 = 1;\nLAB_00026aec:\n      *param_2 = pcVar3 + 1;\n    }\n  }" (if "if") (parenthesized_expression "(param_3 != (int *)0x0)" (( "(") (binary_expression "param_3 != (int *)0x0" (identifier "param_3") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_00026ab8:\n    *(undefined4 *)(*param_3 + local_3c[0] * 4) = 0;\n    if (*pcVar3 == 'e') {\n      *param_4 = 1;\nLAB_00026aec:\n      *param_2 = pcVar3 + 1;\n    }\n  }" ({ "{") (labeled_statement "LAB_00026ab8:\n    *(undefined4 *)(*param_3 + local_3c[0] * 4) = 0;" (statement_identifier "LAB_00026ab8") (: ":") (expression_statement "*(undefined4 *)(*param_3 + local_3c[0] * 4) = 0;" (assignment_expression "*(undefined4 *)(*param_3 + local_3c[0] * 4) = 0" (pointer_expression "*(undefined4 *)(*param_3 + local_3c[0] * 4)" (* "*") (cast_expression "(undefined4 *)(*param_3 + local_3c[0] * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_3 + local_3c[0] * 4)" (( "(") (binary_expression "*param_3 + local_3c[0] * 4" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (+ "+") (binary_expression "local_3c[0] * 4" (subscript_expression "local_3c[0]" (identifier "local_3c") ([ "[") (number_literal "0") (] "]")) (* "*") (number_literal "4"))) () ")")))) (= "=") (number_literal "0")) (; ";"))) (if_statement "if (*pcVar3 == 'e') {\n      *param_4 = 1;\nLAB_00026aec:\n      *param_2 = pcVar3 + 1;\n    }" (if "if") (parenthesized_expression "(*pcVar3 == 'e')" (( "(") (binary_expression "*pcVar3 == 'e'" (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) (== "==") (char_literal "'e'" (' "'") (character "e") (' "'"))) () ")")) (compound_statement "{\n      *param_4 = 1;\nLAB_00026aec:\n      *param_2 = pcVar3 + 1;\n    }" ({ "{") (expression_statement "*param_4 = 1;" (assignment_expression "*param_4 = 1" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_00026aec:\n      *param_2 = pcVar3 + 1;" (statement_identifier "LAB_00026aec") (: ":") (expression_statement "*param_2 = pcVar3 + 1;" (assignment_expression "*param_2 = pcVar3 + 1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "pcVar3 + 1" (identifier "pcVar3") (+ "+") (number_literal "1"))) (; ";"))) (} "}"))) (} "}"))) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (while_statement condition: (parenthesized_expression (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))) right: (binary_expression left: (binary_expression left: (identifier) right: (char_literal (character))) right: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))))))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (identifier) (identifier) (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (identifier)))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))))))) (return_statement (number_literal)))))

/* WARNING: Type propagation algorithm not settling */

int MASKED(int param_1,undefined4 *param_2,int *param_3,undefined4 *param_4)

{
  bool bVar1;
  char cVar2;
  char *pcVar3;
  int iVar4;
  undefined4 local_48;
  uint local_44;
  int local_40;
  int local_3c [3];
  char *local_30;
  
  pcVar3 = (char *)*param_2;
  local_3c[1] = 10;
  local_30 = pcVar3;
  if (param_3 != (int *)0x0) {
    iVar4 = (*(code *)PTR_xmalloc_0004dc10)(0x28);
    pcVar3 = (char *)*param_2;
    *param_3 = iVar4;
    *param_4 = 0;
  }
  local_3c[0] = 0;
  while ((cVar2 = *pcVar3, cVar2 != '_' && (cVar2 != '\0'))) {
    if (cVar2 == 'e') {
      if (param_3 == (int *)0x0) goto LAB_00026aec;
      goto LAB_00026ab8;
    }
    if (cVar2 == 'N') {
      *param_2 = pcVar3 + 1;
      iVar4 = FUN_000231a0(param_2,&local_40);
      if (iVar4 == 0) goto LAB_00026a8c;
LAB_0002697c:
      iVar4 = FUN_000231a0(param_2,&local_44);
      if ((iVar4 == 0) || (*(uint *)(param_1 + 0x14) <= local_44)) {
LAB_00026a8c:
        FUN_000232e8(local_30);
        return 0;
      }
      iVar4 = local_40 + -1;
      bVar1 = local_40 != 0;
      local_40 = iVar4;
      if (bVar1) {
        do {
          local_48 = *(undefined4 *)(*(int *)(param_1 + 0x10) + local_44 * 8);
          iVar4 = FUN_0002675c(param_1,&local_48,param_3,local_3c,local_3c + 1);
          if (iVar4 == 0) {
            return 0;
          }
          iVar4 = local_40 + -1;
          bVar1 = local_40 != 0;
          local_40 = iVar4;
        } while (bVar1);
      }
    }
    else {
      if (cVar2 == 'T') {
        *param_2 = pcVar3 + 1;
        local_40 = 1;
        goto LAB_0002697c;
      }
      iVar4 = FUN_0002675c(param_1,param_2,param_3,local_3c,local_3c + 1);
      if (iVar4 == 0) {
        return 0;
      }
    }
    pcVar3 = (char *)*param_2;
  }
  if (param_3 != (int *)0x0) {
LAB_00026ab8:
    *(undefined4 *)(*param_3 + local_3c[0] * 4) = 0;
    if (*pcVar3 == 'e') {
      *param_4 = 1;
LAB_00026aec:
      *param_2 = pcVar3 + 1;
    }
  }
  return 1;
}

