
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Unknown calling convention */

bfd_boolean
pr_start_class_type(void *p,char *tag,uint id,bfd_boolean structp,uint size,bfd_boolean vptr,
                   bfd_boolean ownvptr)

{
  pr_handle *info;
  bfd_boolean bVar1;
  int iVar2;
  char *type;
  char *s;
  uint uVar3;
  char idbuf [20];
  
  *(int *)((int)p + 4) = *(int *)((int)p + 4) + 2;
  info = (pr_handle *)((int)p + 8);
  if ((vptr == 0) || (ownvptr != 0)) {
    s = (char *)0x0;
  }
  else {
    s = pop_type(info);
    if (s == (char *)0x0) {
      return 0;
    }
  }
  type = "class ";
  if (structp == 0) {
    type = "union class ";
  }
  bVar1 = push_type(info,type);
  if (bVar1 == 0) {
    return 0;
  }
  if (tag == (char *)0x0) {
    sprintf(idbuf,"%%anon%u",id);
    bVar1 = append_type(info,idbuf);
    if (bVar1 == 0) {
      return 0;
    }
  }
  else {
    bVar1 = append_type(info,tag);
    if (bVar1 == 0) {
      return 0;
    }
  }
  bVar1 = append_type(info," {");
  if (bVar1 == 0) {
    return 0;
  }
  if (vptr == 0 && size == 0) {
    if (tag == (char *)0x0 && ownvptr == 0) goto LAB_000382e9;
    iVar2 = append_type(info," /*");
joined_r0x00038478:
    if (iVar2 == 0) {
      return 0;
    }
  }
  else {
    bVar1 = append_type(info," /*");
    if (bVar1 == 0) {
      return 0;
    }
    if (size != 0) {
      sprintf(idbuf,"%u",size);
      bVar1 = append_type(info," size ");
      if (bVar1 == 0) {
        return 0;
      }
      bVar1 = append_type(info,idbuf);
      if (bVar1 == 0) {
        return 0;
      }
    }
    if (vptr != 0) {
      bVar1 = append_type(info," vtable ");
      if (bVar1 == 0) {
        return 0;
      }
      if (ownvptr == 0) {
        bVar1 = append_type(info,s);
        if (bVar1 == 0) {
          return 0;
        }
        iVar2 = append_type(info," ");
      }
      else {
        iVar2 = append_type(info,"self ");
      }
      goto joined_r0x00038478;
    }
  }
  if (tag != (char *)0x0) {
    sprintf(idbuf," id %u",id);
    bVar1 = append_type(info,idbuf);
    if (bVar1 == 0) {
      return 0;
    }
  }
  bVar1 = append_type(info," */");
  if (bVar1 == 0) {
    return 0;
  }
LAB_000382e9:
  *(undefined4 *)(*(int *)((int)p + 8) + 8) = 2;
  bVar1 = append_type(info,"\n");
  if (bVar1 == 0) {
    return 0;
  }
  uVar3 = 0;
  if (*(int *)((int)p + 4) != 0) {
    do {
      bVar1 = append_type(info," ");
      if (bVar1 == 0) {
        return 0;
      }
      uVar3 = uVar3 + 1;
    } while (uVar3 < *(uint *)((int)p + 4));
  }
  return 1;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Type propagation algorithm not settling */

undefined4
FUN_000381f0(int param_1,int param_2,undefined4 param_3,undefined4 param_4,int param_5,int param_6,
            int param_7)

{
  int iVar1;
  uint uVar2;
  char local_3a [38];
  undefined4 uStack_14;
  
  uStack_14 = 0x381f9;
  *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 2;
  if (((param_6 != 0) && (param_7 == 0)) && (iVar1 = FUN_00035e50(), iVar1 == 0)) {
    return 0;
  }
  iVar1 = FUN_00038020();
  if (iVar1 == 0) {
    return 0;
  }
  if (param_2 == 0) {
    sprintf(local_3a,"%%anon%u",param_3);
    iVar1 = FUN_00036640();
    if (iVar1 == 0) {
      return 0;
    }
  }
  else {
    iVar1 = FUN_00036640();
    if (iVar1 == 0) {
      return 0;
    }
  }
  iVar1 = FUN_00036640();
  if (iVar1 == 0) {
    return 0;
  }
  if (param_6 == 0 && param_5 == 0) {
    if (param_2 == 0 && param_7 == 0) goto LAB_000382e9;
    iVar1 = FUN_00036640();
joined_r0x00038478:
    if (iVar1 == 0) {
      return 0;
    }
  }
  else {
    iVar1 = FUN_00036640();
    if (iVar1 == 0) {
      return 0;
    }
    if (param_5 != 0) {
      sprintf(local_3a,"%u",param_5);
      iVar1 = FUN_00036640();
      if (iVar1 == 0) {
        return 0;
      }
      iVar1 = FUN_00036640();
      if (iVar1 == 0) {
        return 0;
      }
    }
    if (param_6 != 0) {
      iVar1 = FUN_00036640();
      if (iVar1 == 0) {
        return 0;
      }
      if (param_7 == 0) {
        iVar1 = FUN_00036640();
        if (iVar1 == 0) {
          return 0;
        }
        iVar1 = FUN_00036640();
      }
      else {
        iVar1 = FUN_00036640();
      }
      goto joined_r0x00038478;
    }
  }
  if (param_2 != 0) {
    sprintf(local_3a," id %u",param_3);
    iVar1 = FUN_00036640();
    if (iVar1 == 0) {
      return 0;
    }
  }
  iVar1 = FUN_00036640();
  if (iVar1 == 0) {
    return 0;
  }
LAB_000382e9:
  *(undefined4 *)(*(int *)(param_1 + 8) + 8) = 2;
  iVar1 = FUN_00036640();
  if (iVar1 == 0) {
    return 0;
  }
  uVar2 = 0;
  if (*(int *)(param_1 + 4) != 0) {
    do {
      iVar1 = FUN_00036640();
      if (iVar1 == 0) {
        return 0;
      }
      uVar2 = uVar2 + 1;
    } while (uVar2 < *(uint *)(param_1 + 4));
  }
  return 1;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x000153a0
ADD EBX,0x38e07
SUB ESP,0x3c
MOV ESI,dword ptr [ESP + 0x50]
MOV EAX,dword ptr [ESP + 0x64]
ADD dword ptr [ESI + 0x4],0x2
LEA EDI,[ESI + 0x8]
TEST EAX,EAX
JZ 0x00038221
MOV EAX,dword ptr [ESP + 0x68]
TEST EAX,EAX
JZ 0x00038350
XOR EBP,EBP
MOV EAX,dword ptr [ESP + 0x5c]
LEA EDX,[EBX + 0xfffe423c]
TEST EAX,EAX
LEA EAX,[EBX + 0xfffe4236]
CMOVZ EDX,EAX
MOV EAX,EDI
CALL 0x00038020
TEST EAX,EAX
JZ 0x00038340
MOV EAX,dword ptr [ESP + 0x54]
TEST EAX,EAX
JZ 0x00038368
MOV EDX,dword ptr [ESP + 0x54]
MOV EAX,EDI
CALL 0x00036640
TEST EAX,EAX
JZ 0x00038340
LEA EDX,[EBX + 0xfffe430b]
MOV EAX,EDI
CALL 0x00036640
TEST EAX,EAX
JZ 0x00038340
MOV EAX,dword ptr [ESP + 0x64]
OR EAX,dword ptr [ESP + 0x60]
JNZ 0x000383a0
MOV EAX,dword ptr [ESP + 0x54]
OR EAX,dword ptr [ESP + 0x68]
JZ 0x000382e9
LEA EDX,[EBX + 0xfffe430e]
MOV EAX,EDI
CALL 0x00036640
TEST EAX,EAX
JZ 0x00038340
MOV ECX,dword ptr [ESP + 0x54]
TEST ECX,ECX
JZ 0x000382d8
SUB ESP,0x4
LEA EAX,[EBX + 0xfffe4328]
PUSH dword ptr [ESP + 0x5c]
PUSH EAX
LEA EBP,[ESP + 0x1e]
PUSH EBP
CALL 0x000146c0
MOV EDX,EBP
MOV EAX,EDI
CALL 0x00036640
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00038342
LEA EDX,[EBX + 0xfffe440f]
MOV EAX,EDI
CALL 0x00036640
TEST EAX,EAX
JZ 0x00038340
MOV EAX,dword ptr [ESI + 0x8]
LEA EDX,[EBX + 0xfffe0850]
MOV dword ptr [EAX + 0x8],0x2
MOV EAX,EDI
CALL 0x00036640
TEST EAX,EAX
JZ 0x00038340
MOV EAX,dword ptr [ESI + 0x4]
XOR EBP,EBP
LEA EBX,[EBX + 0xfffdc64f]
TEST EAX,EAX
JNZ 0x0003832c
JMP 0x00038448
ADD EBP,0x1
CMP EBP,dword ptr [ESI + 0x4]
JNC 0x00038448
MOV EDX,EBX
MOV EAX,EDI
CALL 0x00036640
TEST EAX,EAX
JNZ 0x00038320
LEA ESI,[ESI]
XOR EAX,EAX
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,EDI
CALL 0x00035e50
MOV EBP,EAX
TEST EAX,EAX
JNZ 0x00038223
JMP 0x00038340
SUB ESP,0x4
LEA EAX,[EBX + 0xfffe42f5]
PUSH dword ptr [ESP + 0x5c]
PUSH EAX
LEA EDX,[ESP + 0x1e]
PUSH EDX
MOV dword ptr [ESP + 0x1c],EDX
CALL 0x000146c0
MOV EDX,dword ptr [ESP + 0x1c]
MOV EAX,EDI
CALL 0x00036640
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00038266
JMP 0x00038342
LEA EDX,[EBX + 0xfffe430e]
MOV EAX,EDI
CALL 0x00036640
TEST EAX,EAX
JZ 0x00038340
MOV EAX,dword ptr [ESP + 0x60]
TEST EAX,EAX
JZ 0x00038402
SUB ESP,0x4
LEA EAX,[EBX + 0xfffe432c]
PUSH dword ptr [ESP + 0x64]
PUSH EAX
LEA ECX,[ESP + 0x1e]
PUSH ECX
MOV dword ptr [ESP + 0x1c],ECX
CALL 0x000146c0
LEA EDX,[EBX + 0xfffe4312]
MOV EAX,EDI
CALL 0x00036640
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0xc]
TEST EAX,EAX
JZ 0x00038340
MOV EDX,ECX
MOV EAX,EDI
CALL 0x00036640
TEST EAX,EAX
JZ 0x00038340
MOV EAX,dword ptr [ESP + 0x64]
TEST EAX,EAX
JZ 0x000382a8
LEA EDX,[EBX + 0xfffe4319]
MOV EAX,EDI
CALL 0x00036640
TEST EAX,EAX
JZ 0x00038340
MOV EDX,dword ptr [ESP + 0x68]
TEST EDX,EDX
JZ 0x00038458
LEA EDX,[EBX + 0xfffe4322]
MOV EAX,EDI
CALL 0x00036640
TEST EAX,EAX
JNZ 0x000382a8
JMP 0x00038340
MOV EAX,0x1
JMP 0x00038342
MOV EDX,EBP
MOV EAX,EDI
CALL 0x00036640
TEST EAX,EAX
JZ 0x00038340
LEA EDX,[EBX + 0xfffdc64f]
MOV EAX,EDI
CALL 0x00036640
TEST EAX,EAX
JNZ 0x000382a8
JMP 0x00038340
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Type propagation algorithm not settling */\n\nundefined4\nFUN_000381f0(int param_1,int param_2,undefined4 param_3,undefined4 param_4,int param_5,int param_6,\n            int param_7)\n\n{\n  int iVar1;\n  uint uVar2;\n  char local_3a [38];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x381f9;\n  *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 2;\n  if (((param_6 != 0) && (param_7 == 0)) && (iVar1 = FUN_00035e50(), iVar1 == 0)) {\n    return 0;\n  }\n  iVar1 = FUN_00038020();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  if (param_2 == 0) {\n    sprintf(local_3a,"%%anon%u",param_3);\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  else {\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  iVar1 = FUN_00036640();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  if (param_6 == 0 && param_5 == 0) {\n    if (param_2 == 0 && param_7 == 0) goto LAB_000382e9;\n    iVar1 = FUN_00036640();\njoined_r0x00038478:\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  else {\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n    if (param_5 != 0) {\n      sprintf(local_3a,"%u",param_5);\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n    }\n    if (param_6 != 0) {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      if (param_7 == 0) {\n        iVar1 = FUN_00036640();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00036640();\n      }\n      else {\n        iVar1 = FUN_00036640();\n      }\n      goto joined_r0x00038478;\n    }\n  }\n  if (param_2 != 0) {\n    sprintf(local_3a," id %u",param_3);\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  iVar1 = FUN_00036640();\n  if (iVar1 == 0) {\n    return 0;\n  }\nLAB_000382e9:\n  *(undefined4 *)(*(int *)(param_1 + 8) + 8) = 2;\n  iVar1 = FUN_00036640();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  uVar2 = 0;\n  if (*(int *)(param_1 + 4) != 0) {\n    do {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      uVar2 = uVar2 + 1;\n    } while (uVar2 < *(uint *)(param_1 + 4));\n  }\n  return 1;\n}\n\n" comment comment (function_definition "undefined4\nFUN_000381f0(int param_1,int param_2,undefined4 param_3,undefined4 param_4,int param_5,int param_6,\n            int param_7)\n\n{\n  int iVar1;\n  uint uVar2;\n  char local_3a [38];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x381f9;\n  *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 2;\n  if (((param_6 != 0) && (param_7 == 0)) && (iVar1 = FUN_00035e50(), iVar1 == 0)) {\n    return 0;\n  }\n  iVar1 = FUN_00038020();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  if (param_2 == 0) {\n    sprintf(local_3a,"%%anon%u",param_3);\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  else {\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  iVar1 = FUN_00036640();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  if (param_6 == 0 && param_5 == 0) {\n    if (param_2 == 0 && param_7 == 0) goto LAB_000382e9;\n    iVar1 = FUN_00036640();\njoined_r0x00038478:\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  else {\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n    if (param_5 != 0) {\n      sprintf(local_3a,"%u",param_5);\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n    }\n    if (param_6 != 0) {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      if (param_7 == 0) {\n        iVar1 = FUN_00036640();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00036640();\n      }\n      else {\n        iVar1 = FUN_00036640();\n      }\n      goto joined_r0x00038478;\n    }\n  }\n  if (param_2 != 0) {\n    sprintf(local_3a," id %u",param_3);\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  iVar1 = FUN_00036640();\n  if (iVar1 == 0) {\n    return 0;\n  }\nLAB_000382e9:\n  *(undefined4 *)(*(int *)(param_1 + 8) + 8) = 2;\n  iVar1 = FUN_00036640();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  uVar2 = 0;\n  if (*(int *)(param_1 + 4) != 0) {\n    do {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      uVar2 = uVar2 + 1;\n    } while (uVar2 < *(uint *)(param_1 + 4));\n  }\n  return 1;\n}" type_identifier (function_declarator "FUN_000381f0(int param_1,int param_2,undefined4 param_3,undefined4 param_4,int param_5,int param_6,\n            int param_7)" identifier (parameter_list "(int param_1,int param_2,undefined4 param_3,undefined4 param_4,int param_5,int param_6,\n            int param_7)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "int param_7" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  char local_3a [38];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x381f9;\n  *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 2;\n  if (((param_6 != 0) && (param_7 == 0)) && (iVar1 = FUN_00035e50(), iVar1 == 0)) {\n    return 0;\n  }\n  iVar1 = FUN_00038020();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  if (param_2 == 0) {\n    sprintf(local_3a,"%%anon%u",param_3);\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  else {\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  iVar1 = FUN_00036640();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  if (param_6 == 0 && param_5 == 0) {\n    if (param_2 == 0 && param_7 == 0) goto LAB_000382e9;\n    iVar1 = FUN_00036640();\njoined_r0x00038478:\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  else {\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n    if (param_5 != 0) {\n      sprintf(local_3a,"%u",param_5);\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n    }\n    if (param_6 != 0) {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      if (param_7 == 0) {\n        iVar1 = FUN_00036640();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00036640();\n      }\n      else {\n        iVar1 = FUN_00036640();\n      }\n      goto joined_r0x00038478;\n    }\n  }\n  if (param_2 != 0) {\n    sprintf(local_3a," id %u",param_3);\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  iVar1 = FUN_00036640();\n  if (iVar1 == 0) {\n    return 0;\n  }\nLAB_000382e9:\n  *(undefined4 *)(*(int *)(param_1 + 8) + 8) = 2;\n  iVar1 = FUN_00036640();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  uVar2 = 0;\n  if (*(int *)(param_1 + 4) != 0) {\n    do {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      uVar2 = uVar2 + 1;\n    } while (uVar2 < *(uint *)(param_1 + 4));\n  }\n  return 1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "char local_3a [38];" primitive_type (array_declarator "local_3a [38]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x381f9;" (assignment_expression "uStack_14 = 0x381f9" identifier = number_literal) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 2;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 2" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 2" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (if_statement "if (((param_6 != 0) && (param_7 == 0)) && (iVar1 = FUN_00035e50(), iVar1 == 0)) {\n    return 0;\n  }" if (parenthesized_expression "(((param_6 != 0) && (param_7 == 0)) && (iVar1 = FUN_00035e50(), iVar1 == 0))" ( (binary_expression "((param_6 != 0) && (param_7 == 0)) && (iVar1 = FUN_00035e50(), iVar1 == 0)" (parenthesized_expression "((param_6 != 0) && (param_7 == 0))" ( (binary_expression "(param_6 != 0) && (param_7 == 0)" (parenthesized_expression "(param_6 != 0)" ( (binary_expression "param_6 != 0" identifier != number_literal) )) && (parenthesized_expression "(param_7 == 0)" ( (binary_expression "param_7 == 0" identifier == number_literal) ))) )) && (parenthesized_expression "(iVar1 = FUN_00035e50(), iVar1 == 0)" ( (comma_expression "iVar1 = FUN_00035e50(), iVar1 == 0" (assignment_expression "iVar1 = FUN_00035e50()" identifier = (call_expression "FUN_00035e50()" identifier (argument_list "()" ( )))) , (binary_expression "iVar1 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar1 = FUN_00038020();" (assignment_expression "iVar1 = FUN_00038020()" identifier = (call_expression "FUN_00038020()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (param_2 == 0) {\n    sprintf(local_3a,"%%anon%u",param_3);\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  else {\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    sprintf(local_3a,"%%anon%u",param_3);\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }" { (expression_statement "sprintf(local_3a,"%%anon%u",param_3);" (call_expression "sprintf(local_3a,"%%anon%u",param_3)" identifier (argument_list "(local_3a,"%%anon%u",param_3)" ( identifier , (string_literal ""%%anon%u"" " string_content ") , identifier ))) ;) (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" identifier = (call_expression "FUN_00036640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }" else (compound_statement "{\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }" { (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" identifier = (call_expression "FUN_00036640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) }))) (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" identifier = (call_expression "FUN_00036640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (param_6 == 0 && param_5 == 0) {\n    if (param_2 == 0 && param_7 == 0) goto LAB_000382e9;\n    iVar1 = FUN_00036640();\njoined_r0x00038478:\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  else {\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n    if (param_5 != 0) {\n      sprintf(local_3a,"%u",param_5);\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n    }\n    if (param_6 != 0) {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      if (param_7 == 0) {\n        iVar1 = FUN_00036640();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00036640();\n      }\n      else {\n        iVar1 = FUN_00036640();\n      }\n      goto joined_r0x00038478;\n    }\n  }" if (parenthesized_expression "(param_6 == 0 && param_5 == 0)" ( (binary_expression "param_6 == 0 && param_5 == 0" (binary_expression "param_6 == 0" identifier == number_literal) && (binary_expression "param_5 == 0" identifier == number_literal)) )) (compound_statement "{\n    if (param_2 == 0 && param_7 == 0) goto LAB_000382e9;\n    iVar1 = FUN_00036640();\njoined_r0x00038478:\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }" { (if_statement "if (param_2 == 0 && param_7 == 0) goto LAB_000382e9;" if (parenthesized_expression "(param_2 == 0 && param_7 == 0)" ( (binary_expression "param_2 == 0 && param_7 == 0" (binary_expression "param_2 == 0" identifier == number_literal) && (binary_expression "param_7 == 0" identifier == number_literal)) )) (goto_statement "goto LAB_000382e9;" goto statement_identifier ;)) (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" identifier = (call_expression "FUN_00036640()" identifier (argument_list "()" ( )))) ;) (labeled_statement "joined_r0x00038478:\n    if (iVar1 == 0) {\n      return 0;\n    }" statement_identifier : (if_statement "if (iVar1 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) }))) }) (else_clause "else {\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n    if (param_5 != 0) {\n      sprintf(local_3a,"%u",param_5);\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n    }\n    if (param_6 != 0) {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      if (param_7 == 0) {\n        iVar1 = FUN_00036640();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00036640();\n      }\n      else {\n        iVar1 = FUN_00036640();\n      }\n      goto joined_r0x00038478;\n    }\n  }" else (compound_statement "{\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n    if (param_5 != 0) {\n      sprintf(local_3a,"%u",param_5);\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n    }\n    if (param_6 != 0) {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      if (param_7 == 0) {\n        iVar1 = FUN_00036640();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00036640();\n      }\n      else {\n        iVar1 = FUN_00036640();\n      }\n      goto joined_r0x00038478;\n    }\n  }" { (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" identifier = (call_expression "FUN_00036640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (param_5 != 0) {\n      sprintf(local_3a,"%u",param_5);\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n    }" if (parenthesized_expression "(param_5 != 0)" ( (binary_expression "param_5 != 0" identifier != number_literal) )) (compound_statement "{\n      sprintf(local_3a,"%u",param_5);\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n    }" { (expression_statement "sprintf(local_3a,"%u",param_5);" (call_expression "sprintf(local_3a,"%u",param_5)" identifier (argument_list "(local_3a,"%u",param_5)" ( identifier , (string_literal ""%u"" " string_content ") , identifier ))) ;) (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" identifier = (call_expression "FUN_00036640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\n        return 0;\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" identifier = (call_expression "FUN_00036640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\n        return 0;\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) })) (if_statement "if (param_6 != 0) {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      if (param_7 == 0) {\n        iVar1 = FUN_00036640();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00036640();\n      }\n      else {\n        iVar1 = FUN_00036640();\n      }\n      goto joined_r0x00038478;\n    }" if (parenthesized_expression "(param_6 != 0)" ( (binary_expression "param_6 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      if (param_7 == 0) {\n        iVar1 = FUN_00036640();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00036640();\n      }\n      else {\n        iVar1 = FUN_00036640();\n      }\n      goto joined_r0x00038478;\n    }" { (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" identifier = (call_expression "FUN_00036640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\n        return 0;\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (param_7 == 0) {\n        iVar1 = FUN_00036640();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00036640();\n      }\n      else {\n        iVar1 = FUN_00036640();\n      }" if (parenthesized_expression "(param_7 == 0)" ( (binary_expression "param_7 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar1 = FUN_00036640();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00036640();\n      }" { (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" identifier = (call_expression "FUN_00036640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\n          return 0;\n        }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" identifier = (call_expression "FUN_00036640()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n        iVar1 = FUN_00036640();\n      }" else (compound_statement "{\n        iVar1 = FUN_00036640();\n      }" { (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" identifier = (call_expression "FUN_00036640()" identifier (argument_list "()" ( )))) ;) }))) (goto_statement "goto joined_r0x00038478;" goto statement_identifier ;) })) }))) (if_statement "if (param_2 != 0) {\n    sprintf(local_3a," id %u",param_3);\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n    sprintf(local_3a," id %u",param_3);\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }" { (expression_statement "sprintf(local_3a," id %u",param_3);" (call_expression "sprintf(local_3a," id %u",param_3)" identifier (argument_list "(local_3a," id %u",param_3)" ( identifier , (string_literal "" id %u"" " string_content ") , identifier ))) ;) (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" identifier = (call_expression "FUN_00036640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) })) (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" identifier = (call_expression "FUN_00036640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_000382e9:\n  *(undefined4 *)(*(int *)(param_1 + 8) + 8) = 2;" statement_identifier : (expression_statement "*(undefined4 *)(*(int *)(param_1 + 8) + 8) = 2;" (assignment_expression "*(undefined4 *)(*(int *)(param_1 + 8) + 8) = 2" (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 8) + 8)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 8) + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 8) + 8)" ( (binary_expression "*(int *)(param_1 + 8) + 8" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) )))) = number_literal) ;)) (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" identifier = (call_expression "FUN_00036640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (if_statement "if (*(int *)(param_1 + 4) != 0) {\n    do {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      uVar2 = uVar2 + 1;\n    } while (uVar2 < *(uint *)(param_1 + 4));\n  }" if (parenthesized_expression "(*(int *)(param_1 + 4) != 0)" ( (binary_expression "*(int *)(param_1 + 4) != 0" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    do {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      uVar2 = uVar2 + 1;\n    } while (uVar2 < *(uint *)(param_1 + 4));\n  }" { (do_statement "do {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      uVar2 = uVar2 + 1;\n    } while (uVar2 < *(uint *)(param_1 + 4));" do (compound_statement "{\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      uVar2 = uVar2 + 1;\n    }" { (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" identifier = (call_expression "FUN_00036640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\n        return 0;\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar2 = uVar2 + 1;" (assignment_expression "uVar2 = uVar2 + 1" identifier = (binary_expression "uVar2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar2 < *(uint *)(param_1 + 4))" ( (binary_expression "uVar2 < *(uint *)(param_1 + 4)" identifier < (pointer_expression "*(uint *)(param_1 + 4)" * (cast_expression "(uint *)(param_1 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )) ;) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Type propagation algorithm not settling */\n/* WARNING: Unknown calling convention */\n\nbfd_boolean\npr_start_class_type(void *p,char *tag,uint id,bfd_boolean structp,uint size,bfd_boolean vptr,\n                   bfd_boolean ownvptr)\n\n{\n  pr_handle *info;\n  bfd_boolean bVar1;\n  int iVar2;\n  char *type;\n  char *s;\n  uint uVar3;\n  char idbuf [20];\n  \n  *(int *)((int)p + 4) = *(int *)((int)p + 4) + 2;\n  info = (pr_handle *)((int)p + 8);\n  if ((vptr == 0) || (ownvptr != 0)) {\n    s = (char *)0x0;\n  }\n  else {\n    s = pop_type(info);\n    if (s == (char *)0x0) {\n      return 0;\n    }\n  }\n  type = "class ";\n  if (structp == 0) {\n    type = "union class ";\n  }\n  bVar1 = push_type(info,type);\n  if (bVar1 == 0) {\n    return 0;\n  }\n  if (tag == (char *)0x0) {\n    sprintf(idbuf,"%%anon%u",id);\n    bVar1 = append_type(info,idbuf);\n    if (bVar1 == 0) {\n      return 0;\n    }\n  }\n  else {\n    bVar1 = append_type(info,tag);\n    if (bVar1 == 0) {\n      return 0;\n    }\n  }\n  bVar1 = append_type(info," {");\n  if (bVar1 == 0) {\n    return 0;\n  }\n  if (vptr == 0 && size == 0) {\n    if (tag == (char *)0x0 && ownvptr == 0) goto LAB_000382e9;\n    iVar2 = append_type(info," /*");\njoined_r0x00038478:\n    if (iVar2 == 0) {\n      return 0;\n    }\n  }\n  else {\n    bVar1 = append_type(info," /*");\n    if (bVar1 == 0) {\n      return 0;\n    }\n    if (size != 0) {\n      sprintf(idbuf,"%u",size);\n      bVar1 = append_type(info," size ");\n      if (bVar1 == 0) {\n        return 0;\n      }\n      bVar1 = append_type(info,idbuf);\n      if (bVar1 == 0) {\n        return 0;\n      }\n    }\n    if (vptr != 0) {\n      bVar1 = append_type(info," vtable ");\n      if (bVar1 == 0) {\n        return 0;\n      }\n      if (ownvptr == 0) {\n        bVar1 = append_type(info,s);\n        if (bVar1 == 0) {\n          return 0;\n        }\n        iVar2 = append_type(info," ");\n      }\n      else {\n        iVar2 = append_type(info,"self ");\n      }\n      goto joined_r0x00038478;\n    }\n  }\n  if (tag != (char *)0x0) {\n    sprintf(idbuf," id %u",id);\n    bVar1 = append_type(info,idbuf);\n    if (bVar1 == 0) {\n      return 0;\n    }\n  }\n  bVar1 = append_type(info," */");\n  if (bVar1 == 0) {\n    return 0;\n  }\nLAB_000382e9:\n  *(undefined4 *)(*(int *)((int)p + 8) + 8) = 2;\n  bVar1 = append_type(info,"\n");\n  if (bVar1 == 0) {\n    return 0;\n  }\n  uVar3 = 0;\n  if (*(int *)((int)p + 4) != 0) {\n    do {\n      bVar1 = append_type(info," ");\n      if (bVar1 == 0) {\n        return 0;\n      }\n      uVar3 = uVar3 + 1;\n    } while (uVar3 < *(uint *)((int)p + 4));\n  }\n  return 1;\n}\n\n" comment comment comment (function_definition "bfd_boolean\npr_start_class_type(void *p,char *tag,uint id,bfd_boolean structp,uint size,bfd_boolean vptr,\n                   bfd_boolean ownvptr)\n\n{\n  pr_handle *info;\n  bfd_boolean bVar1;\n  int iVar2;\n  char *type;\n  char *s;\n  uint uVar3;\n  char idbuf [20];\n  \n  *(int *)((int)p + 4) = *(int *)((int)p + 4) + 2;\n  info = (pr_handle *)((int)p + 8);\n  if ((vptr == 0) || (ownvptr != 0)) {\n    s = (char *)0x0;\n  }\n  else {\n    s = pop_type(info);\n    if (s == (char *)0x0) {\n      return 0;\n    }\n  }\n  type = "class ";\n  if (structp == 0) {\n    type = "union class ";\n  }\n  bVar1 = push_type(info,type);\n  if (bVar1 == 0) {\n    return 0;\n  }\n  if (tag == (char *)0x0) {\n    sprintf(idbuf,"%%anon%u",id);\n    bVar1 = append_type(info,idbuf);\n    if (bVar1 == 0) {\n      return 0;\n    }\n  }\n  else {\n    bVar1 = append_type(info,tag);\n    if (bVar1 == 0) {\n      return 0;\n    }\n  }\n  bVar1 = append_type(info," {");\n  if (bVar1 == 0) {\n    return 0;\n  }\n  if (vptr == 0 && size == 0) {\n    if (tag == (char *)0x0 && ownvptr == 0) goto LAB_000382e9;\n    iVar2 = append_type(info," /*");\njoined_r0x00038478:\n    if (iVar2 == 0) {\n      return 0;\n    }\n  }\n  else {\n    bVar1 = append_type(info," /*");\n    if (bVar1 == 0) {\n      return 0;\n    }\n    if (size != 0) {\n      sprintf(idbuf,"%u",size);\n      bVar1 = append_type(info," size ");\n      if (bVar1 == 0) {\n        return 0;\n      }\n      bVar1 = append_type(info,idbuf);\n      if (bVar1 == 0) {\n        return 0;\n      }\n    }\n    if (vptr != 0) {\n      bVar1 = append_type(info," vtable ");\n      if (bVar1 == 0) {\n        return 0;\n      }\n      if (ownvptr == 0) {\n        bVar1 = append_type(info,s);\n        if (bVar1 == 0) {\n          return 0;\n        }\n        iVar2 = append_type(info," ");\n      }\n      else {\n        iVar2 = append_type(info,"self ");\n      }\n      goto joined_r0x00038478;\n    }\n  }\n  if (tag != (char *)0x0) {\n    sprintf(idbuf," id %u",id);\n    bVar1 = append_type(info,idbuf);\n    if (bVar1 == 0) {\n      return 0;\n    }\n  }\n  bVar1 = append_type(info," */");\n  if (bVar1 == 0) {\n    return 0;\n  }\nLAB_000382e9:\n  *(undefined4 *)(*(int *)((int)p + 8) + 8) = 2;\n  bVar1 = append_type(info,"\n");\n  if (bVar1 == 0) {\n    return 0;\n  }\n  uVar3 = 0;\n  if (*(int *)((int)p + 4) != 0) {\n    do {\n      bVar1 = append_type(info," ");\n      if (bVar1 == 0) {\n        return 0;\n      }\n      uVar3 = uVar3 + 1;\n    } while (uVar3 < *(uint *)((int)p + 4));\n  }\n  return 1;\n}" type_identifier (function_declarator "pr_start_class_type(void *p,char *tag,uint id,bfd_boolean structp,uint size,bfd_boolean vptr,\n                   bfd_boolean ownvptr)" identifier (parameter_list "(void *p,char *tag,uint id,bfd_boolean structp,uint size,bfd_boolean vptr,\n                   bfd_boolean ownvptr)" ( (parameter_declaration "void *p" primitive_type (pointer_declarator "*p" * identifier)) , (parameter_declaration "char *tag" primitive_type (pointer_declarator "*tag" * identifier)) , (parameter_declaration "uint id" type_identifier identifier) , (parameter_declaration "bfd_boolean structp" type_identifier identifier) , (parameter_declaration "uint size" type_identifier identifier) , (parameter_declaration "bfd_boolean vptr" type_identifier identifier) , (parameter_declaration "bfd_boolean ownvptr" type_identifier identifier) ))) (compound_statement "{\n  pr_handle *info;\n  bfd_boolean bVar1;\n  int iVar2;\n  char *type;\n  char *s;\n  uint uVar3;\n  char idbuf [20];\n  \n  *(int *)((int)p + 4) = *(int *)((int)p + 4) + 2;\n  info = (pr_handle *)((int)p + 8);\n  if ((vptr == 0) || (ownvptr != 0)) {\n    s = (char *)0x0;\n  }\n  else {\n    s = pop_type(info);\n    if (s == (char *)0x0) {\n      return 0;\n    }\n  }\n  type = "class ";\n  if (structp == 0) {\n    type = "union class ";\n  }\n  bVar1 = push_type(info,type);\n  if (bVar1 == 0) {\n    return 0;\n  }\n  if (tag == (char *)0x0) {\n    sprintf(idbuf,"%%anon%u",id);\n    bVar1 = append_type(info,idbuf);\n    if (bVar1 == 0) {\n      return 0;\n    }\n  }\n  else {\n    bVar1 = append_type(info,tag);\n    if (bVar1 == 0) {\n      return 0;\n    }\n  }\n  bVar1 = append_type(info," {");\n  if (bVar1 == 0) {\n    return 0;\n  }\n  if (vptr == 0 && size == 0) {\n    if (tag == (char *)0x0 && ownvptr == 0) goto LAB_000382e9;\n    iVar2 = append_type(info," /*");\njoined_r0x00038478:\n    if (iVar2 == 0) {\n      return 0;\n    }\n  }\n  else {\n    bVar1 = append_type(info," /*");\n    if (bVar1 == 0) {\n      return 0;\n    }\n    if (size != 0) {\n      sprintf(idbuf,"%u",size);\n      bVar1 = append_type(info," size ");\n      if (bVar1 == 0) {\n        return 0;\n      }\n      bVar1 = append_type(info,idbuf);\n      if (bVar1 == 0) {\n        return 0;\n      }\n    }\n    if (vptr != 0) {\n      bVar1 = append_type(info," vtable ");\n      if (bVar1 == 0) {\n        return 0;\n      }\n      if (ownvptr == 0) {\n        bVar1 = append_type(info,s);\n        if (bVar1 == 0) {\n          return 0;\n        }\n        iVar2 = append_type(info," ");\n      }\n      else {\n        iVar2 = append_type(info,"self ");\n      }\n      goto joined_r0x00038478;\n    }\n  }\n  if (tag != (char *)0x0) {\n    sprintf(idbuf," id %u",id);\n    bVar1 = append_type(info,idbuf);\n    if (bVar1 == 0) {\n      return 0;\n    }\n  }\n  bVar1 = append_type(info," */");\n  if (bVar1 == 0) {\n    return 0;\n  }\nLAB_000382e9:\n  *(undefined4 *)(*(int *)((int)p + 8) + 8) = 2;\n  bVar1 = append_type(info,"\n");\n  if (bVar1 == 0) {\n    return 0;\n  }\n  uVar3 = 0;\n  if (*(int *)((int)p + 4) != 0) {\n    do {\n      bVar1 = append_type(info," ");\n      if (bVar1 == 0) {\n        return 0;\n      }\n      uVar3 = uVar3 + 1;\n    } while (uVar3 < *(uint *)((int)p + 4));\n  }\n  return 1;\n}" { (declaration "pr_handle *info;" type_identifier (pointer_declarator "*info" * identifier) ;) (declaration "bfd_boolean bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *type;" primitive_type (pointer_declarator "*type" * identifier) ;) (declaration "char *s;" primitive_type (pointer_declarator "*s" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "char idbuf [20];" primitive_type (array_declarator "idbuf [20]" identifier [ number_literal ]) ;) (expression_statement "*(int *)((int)p + 4) = *(int *)((int)p + 4) + 2;" (assignment_expression "*(int *)((int)p + 4) = *(int *)((int)p + 4) + 2" (pointer_expression "*(int *)((int)p + 4)" * (cast_expression "(int *)((int)p + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 4)" ( (binary_expression "(int)p + 4" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(int *)((int)p + 4) + 2" (pointer_expression "*(int *)((int)p + 4)" * (cast_expression "(int *)((int)p + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 4)" ( (binary_expression "(int)p + 4" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal)) ;) (expression_statement "info = (pr_handle *)((int)p + 8);" (assignment_expression "info = (pr_handle *)((int)p + 8)" identifier = (cast_expression "(pr_handle *)((int)p + 8)" ( (type_descriptor "pr_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 8)" ( (binary_expression "(int)p + 8" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if ((vptr == 0) || (ownvptr != 0)) {\n    s = (char *)0x0;\n  }\n  else {\n    s = pop_type(info);\n    if (s == (char *)0x0) {\n      return 0;\n    }\n  }" if (parenthesized_expression "((vptr == 0) || (ownvptr != 0))" ( (binary_expression "(vptr == 0) || (ownvptr != 0)" (parenthesized_expression "(vptr == 0)" ( (binary_expression "vptr == 0" identifier == number_literal) )) || (parenthesized_expression "(ownvptr != 0)" ( (binary_expression "ownvptr != 0" identifier != number_literal) ))) )) (compound_statement "{\n    s = (char *)0x0;\n  }" { (expression_statement "s = (char *)0x0;" (assignment_expression "s = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    s = pop_type(info);\n    if (s == (char *)0x0) {\n      return 0;\n    }\n  }" else (compound_statement "{\n    s = pop_type(info);\n    if (s == (char *)0x0) {\n      return 0;\n    }\n  }" { (expression_statement "s = pop_type(info);" (assignment_expression "s = pop_type(info)" identifier = (call_expression "pop_type(info)" identifier (argument_list "(info)" ( identifier )))) ;) (if_statement "if (s == (char *)0x0) {\n      return 0;\n    }" if (parenthesized_expression "(s == (char *)0x0)" ( (binary_expression "s == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) }))) (expression_statement "type = "class ";" (assignment_expression "type = "class "" identifier = (string_literal ""class "" " string_content ")) ;) (if_statement "if (structp == 0) {\n    type = "union class ";\n  }" if (parenthesized_expression "(structp == 0)" ( (binary_expression "structp == 0" identifier == number_literal) )) (compound_statement "{\n    type = "union class ";\n  }" { (expression_statement "type = "union class ";" (assignment_expression "type = "union class "" identifier = (string_literal ""union class "" " string_content ")) ;) })) (expression_statement "bVar1 = push_type(info,type);" (assignment_expression "bVar1 = push_type(info,type)" identifier = (call_expression "push_type(info,type)" identifier (argument_list "(info,type)" ( identifier , identifier )))) ;) (if_statement "if (bVar1 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (tag == (char *)0x0) {\n    sprintf(idbuf,"%%anon%u",id);\n    bVar1 = append_type(info,idbuf);\n    if (bVar1 == 0) {\n      return 0;\n    }\n  }\n  else {\n    bVar1 = append_type(info,tag);\n    if (bVar1 == 0) {\n      return 0;\n    }\n  }" if (parenthesized_expression "(tag == (char *)0x0)" ( (binary_expression "tag == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sprintf(idbuf,"%%anon%u",id);\n    bVar1 = append_type(info,idbuf);\n    if (bVar1 == 0) {\n      return 0;\n    }\n  }" { (expression_statement "sprintf(idbuf,"%%anon%u",id);" (call_expression "sprintf(idbuf,"%%anon%u",id)" identifier (argument_list "(idbuf,"%%anon%u",id)" ( identifier , (string_literal ""%%anon%u"" " string_content ") , identifier ))) ;) (expression_statement "bVar1 = append_type(info,idbuf);" (assignment_expression "bVar1 = append_type(info,idbuf)" identifier = (call_expression "append_type(info,idbuf)" identifier (argument_list "(info,idbuf)" ( identifier , identifier )))) ;) (if_statement "if (bVar1 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\n    bVar1 = append_type(info,tag);\n    if (bVar1 == 0) {\n      return 0;\n    }\n  }" else (compound_statement "{\n    bVar1 = append_type(info,tag);\n    if (bVar1 == 0) {\n      return 0;\n    }\n  }" { (expression_statement "bVar1 = append_type(info,tag);" (assignment_expression "bVar1 = append_type(info,tag)" identifier = (call_expression "append_type(info,tag)" identifier (argument_list "(info,tag)" ( identifier , identifier )))) ;) (if_statement "if (bVar1 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) }))) (expression_statement "bVar1 = append_type(info," {");" (assignment_expression "bVar1 = append_type(info," {")" identifier = (call_expression "append_type(info," {")" identifier (argument_list "(info," {")" ( identifier , (string_literal "" {"" " string_content ") )))) ;) (if_statement "if (bVar1 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (vptr == 0 && size == 0) {\n    if (tag == (char *)0x0 && ownvptr == 0) goto LAB_000382e9;\n    iVar2 = append_type(info," /*");\njoined_r0x00038478:\n    if (iVar2 == 0) {\n      return 0;\n    }\n  }\n  else {\n    bVar1 = append_type(info," /*");\n    if (bVar1 == 0) {\n      return 0;\n    }\n    if (size != 0) {\n      sprintf(idbuf,"%u",size);\n      bVar1 = append_type(info," size ");\n      if (bVar1 == 0) {\n        return 0;\n      }\n      bVar1 = append_type(info,idbuf);\n      if (bVar1 == 0) {\n        return 0;\n      }\n    }\n    if (vptr != 0) {\n      bVar1 = append_type(info," vtable ");\n      if (bVar1 == 0) {\n        return 0;\n      }\n      if (ownvptr == 0) {\n        bVar1 = append_type(info,s);\n        if (bVar1 == 0) {\n          return 0;\n        }\n        iVar2 = append_type(info," ");\n      }\n      else {\n        iVar2 = append_type(info,"self ");\n      }\n      goto joined_r0x00038478;\n    }\n  }" if (parenthesized_expression "(vptr == 0 && size == 0)" ( (binary_expression "vptr == 0 && size == 0" (binary_expression "vptr == 0" identifier == number_literal) && (binary_expression "size == 0" identifier == number_literal)) )) (compound_statement "{\n    if (tag == (char *)0x0 && ownvptr == 0) goto LAB_000382e9;\n    iVar2 = append_type(info," /*");\njoined_r0x00038478:\n    if (iVar2 == 0) {\n      return 0;\n    }\n  }" { (if_statement "if (tag == (char *)0x0 && ownvptr == 0) goto LAB_000382e9;" if (parenthesized_expression "(tag == (char *)0x0 && ownvptr == 0)" ( (binary_expression "tag == (char *)0x0 && ownvptr == 0" (binary_expression "tag == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "ownvptr == 0" identifier == number_literal)) )) (goto_statement "goto LAB_000382e9;" goto statement_identifier ;)) (expression_statement "iVar2 = append_type(info," /*");" (assignment_expression "iVar2 = append_type(info," /*")" identifier = (call_expression "append_type(info," /*")" identifier (argument_list "(info," /*")" ( identifier , (string_literal "" /*"" " string_content ") )))) ;) (labeled_statement "joined_r0x00038478:\n    if (iVar2 == 0) {\n      return 0;\n    }" statement_identifier : (if_statement "if (iVar2 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) }))) }) (else_clause "else {\n    bVar1 = append_type(info," /*");\n    if (bVar1 == 0) {\n      return 0;\n    }\n    if (size != 0) {\n      sprintf(idbuf,"%u",size);\n      bVar1 = append_type(info," size ");\n      if (bVar1 == 0) {\n        return 0;\n      }\n      bVar1 = append_type(info,idbuf);\n      if (bVar1 == 0) {\n        return 0;\n      }\n    }\n    if (vptr != 0) {\n      bVar1 = append_type(info," vtable ");\n      if (bVar1 == 0) {\n        return 0;\n      }\n      if (ownvptr == 0) {\n        bVar1 = append_type(info,s);\n        if (bVar1 == 0) {\n          return 0;\n        }\n        iVar2 = append_type(info," ");\n      }\n      else {\n        iVar2 = append_type(info,"self ");\n      }\n      goto joined_r0x00038478;\n    }\n  }" else (compound_statement "{\n    bVar1 = append_type(info," /*");\n    if (bVar1 == 0) {\n      return 0;\n    }\n    if (size != 0) {\n      sprintf(idbuf,"%u",size);\n      bVar1 = append_type(info," size ");\n      if (bVar1 == 0) {\n        return 0;\n      }\n      bVar1 = append_type(info,idbuf);\n      if (bVar1 == 0) {\n        return 0;\n      }\n    }\n    if (vptr != 0) {\n      bVar1 = append_type(info," vtable ");\n      if (bVar1 == 0) {\n        return 0;\n      }\n      if (ownvptr == 0) {\n        bVar1 = append_type(info,s);\n        if (bVar1 == 0) {\n          return 0;\n        }\n        iVar2 = append_type(info," ");\n      }\n      else {\n        iVar2 = append_type(info,"self ");\n      }\n      goto joined_r0x00038478;\n    }\n  }" { (expression_statement "bVar1 = append_type(info," /*");" (assignment_expression "bVar1 = append_type(info," /*")" identifier = (call_expression "append_type(info," /*")" identifier (argument_list "(info," /*")" ( identifier , (string_literal "" /*"" " string_content ") )))) ;) (if_statement "if (bVar1 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (size != 0) {\n      sprintf(idbuf,"%u",size);\n      bVar1 = append_type(info," size ");\n      if (bVar1 == 0) {\n        return 0;\n      }\n      bVar1 = append_type(info,idbuf);\n      if (bVar1 == 0) {\n        return 0;\n      }\n    }" if (parenthesized_expression "(size != 0)" ( (binary_expression "size != 0" identifier != number_literal) )) (compound_statement "{\n      sprintf(idbuf,"%u",size);\n      bVar1 = append_type(info," size ");\n      if (bVar1 == 0) {\n        return 0;\n      }\n      bVar1 = append_type(info,idbuf);\n      if (bVar1 == 0) {\n        return 0;\n      }\n    }" { (expression_statement "sprintf(idbuf,"%u",size);" (call_expression "sprintf(idbuf,"%u",size)" identifier (argument_list "(idbuf,"%u",size)" ( identifier , (string_literal ""%u"" " string_content ") , identifier ))) ;) (expression_statement "bVar1 = append_type(info," size ");" (assignment_expression "bVar1 = append_type(info," size ")" identifier = (call_expression "append_type(info," size ")" identifier (argument_list "(info," size ")" ( identifier , (string_literal "" size "" " string_content ") )))) ;) (if_statement "if (bVar1 == 0) {\n        return 0;\n      }" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar1 = append_type(info,idbuf);" (assignment_expression "bVar1 = append_type(info,idbuf)" identifier = (call_expression "append_type(info,idbuf)" identifier (argument_list "(info,idbuf)" ( identifier , identifier )))) ;) (if_statement "if (bVar1 == 0) {\n        return 0;\n      }" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) })) (if_statement "if (vptr != 0) {\n      bVar1 = append_type(info," vtable ");\n      if (bVar1 == 0) {\n        return 0;\n      }\n      if (ownvptr == 0) {\n        bVar1 = append_type(info,s);\n        if (bVar1 == 0) {\n          return 0;\n        }\n        iVar2 = append_type(info," ");\n      }\n      else {\n        iVar2 = append_type(info,"self ");\n      }\n      goto joined_r0x00038478;\n    }" if (parenthesized_expression "(vptr != 0)" ( (binary_expression "vptr != 0" identifier != number_literal) )) (compound_statement "{\n      bVar1 = append_type(info," vtable ");\n      if (bVar1 == 0) {\n        return 0;\n      }\n      if (ownvptr == 0) {\n        bVar1 = append_type(info,s);\n        if (bVar1 == 0) {\n          return 0;\n        }\n        iVar2 = append_type(info," ");\n      }\n      else {\n        iVar2 = append_type(info,"self ");\n      }\n      goto joined_r0x00038478;\n    }" { (expression_statement "bVar1 = append_type(info," vtable ");" (assignment_expression "bVar1 = append_type(info," vtable ")" identifier = (call_expression "append_type(info," vtable ")" identifier (argument_list "(info," vtable ")" ( identifier , (string_literal "" vtable "" " string_content ") )))) ;) (if_statement "if (bVar1 == 0) {\n        return 0;\n      }" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (ownvptr == 0) {\n        bVar1 = append_type(info,s);\n        if (bVar1 == 0) {\n          return 0;\n        }\n        iVar2 = append_type(info," ");\n      }\n      else {\n        iVar2 = append_type(info,"self ");\n      }" if (parenthesized_expression "(ownvptr == 0)" ( (binary_expression "ownvptr == 0" identifier == number_literal) )) (compound_statement "{\n        bVar1 = append_type(info,s);\n        if (bVar1 == 0) {\n          return 0;\n        }\n        iVar2 = append_type(info," ");\n      }" { (expression_statement "bVar1 = append_type(info,s);" (assignment_expression "bVar1 = append_type(info,s)" identifier = (call_expression "append_type(info,s)" identifier (argument_list "(info,s)" ( identifier , identifier )))) ;) (if_statement "if (bVar1 == 0) {\n          return 0;\n        }" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar2 = append_type(info," ");" (assignment_expression "iVar2 = append_type(info," ")" identifier = (call_expression "append_type(info," ")" identifier (argument_list "(info," ")" ( identifier , (string_literal "" "" " string_content ") )))) ;) }) (else_clause "else {\n        iVar2 = append_type(info,"self ");\n      }" else (compound_statement "{\n        iVar2 = append_type(info,"self ");\n      }" { (expression_statement "iVar2 = append_type(info,"self ");" (assignment_expression "iVar2 = append_type(info,"self ")" identifier = (call_expression "append_type(info,"self ")" identifier (argument_list "(info,"self ")" ( identifier , (string_literal ""self "" " string_content ") )))) ;) }))) (goto_statement "goto joined_r0x00038478;" goto statement_identifier ;) })) }))) (if_statement "if (tag != (char *)0x0) {\n    sprintf(idbuf," id %u",id);\n    bVar1 = append_type(info,idbuf);\n    if (bVar1 == 0) {\n      return 0;\n    }\n  }" if (parenthesized_expression "(tag != (char *)0x0)" ( (binary_expression "tag != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sprintf(idbuf," id %u",id);\n    bVar1 = append_type(info,idbuf);\n    if (bVar1 == 0) {\n      return 0;\n    }\n  }" { (expression_statement "sprintf(idbuf," id %u",id);" (call_expression "sprintf(idbuf," id %u",id)" identifier (argument_list "(idbuf," id %u",id)" ( identifier , (string_literal "" id %u"" " string_content ") , identifier ))) ;) (expression_statement "bVar1 = append_type(info,idbuf);" (assignment_expression "bVar1 = append_type(info,idbuf)" identifier = (call_expression "append_type(info,idbuf)" identifier (argument_list "(info,idbuf)" ( identifier , identifier )))) ;) (if_statement "if (bVar1 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) })) (expression_statement "bVar1 = append_type(info," */");" (assignment_expression "bVar1 = append_type(info," */")" identifier = (call_expression "append_type(info," */")" identifier (argument_list "(info," */")" ( identifier , (string_literal "" */"" " string_content ") )))) ;) (if_statement "if (bVar1 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_000382e9:\n  *(undefined4 *)(*(int *)((int)p + 8) + 8) = 2;" statement_identifier : (expression_statement "*(undefined4 *)(*(int *)((int)p + 8) + 8) = 2;" (assignment_expression "*(undefined4 *)(*(int *)((int)p + 8) + 8) = 2" (pointer_expression "*(undefined4 *)(*(int *)((int)p + 8) + 8)" * (cast_expression "(undefined4 *)(*(int *)((int)p + 8) + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)p + 8) + 8)" ( (binary_expression "*(int *)((int)p + 8) + 8" (pointer_expression "*(int *)((int)p + 8)" * (cast_expression "(int *)((int)p + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 8)" ( (binary_expression "(int)p + 8" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) )))) = number_literal) ;)) (expression_statement "bVar1 = append_type(info,"\n");" (assignment_expression "bVar1 = append_type(info,"\n")" identifier = (call_expression "append_type(info,"\n")" identifier (argument_list "(info,"\n")" ( identifier , (string_literal ""\n"" " escape_sequence ") )))) ;) (if_statement "if (bVar1 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (if_statement "if (*(int *)((int)p + 4) != 0) {\n    do {\n      bVar1 = append_type(info," ");\n      if (bVar1 == 0) {\n        return 0;\n      }\n      uVar3 = uVar3 + 1;\n    } while (uVar3 < *(uint *)((int)p + 4));\n  }" if (parenthesized_expression "(*(int *)((int)p + 4) != 0)" ( (binary_expression "*(int *)((int)p + 4) != 0" (pointer_expression "*(int *)((int)p + 4)" * (cast_expression "(int *)((int)p + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 4)" ( (binary_expression "(int)p + 4" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n    do {\n      bVar1 = append_type(info," ");\n      if (bVar1 == 0) {\n        return 0;\n      }\n      uVar3 = uVar3 + 1;\n    } while (uVar3 < *(uint *)((int)p + 4));\n  }" { (do_statement "do {\n      bVar1 = append_type(info," ");\n      if (bVar1 == 0) {\n        return 0;\n      }\n      uVar3 = uVar3 + 1;\n    } while (uVar3 < *(uint *)((int)p + 4));" do (compound_statement "{\n      bVar1 = append_type(info," ");\n      if (bVar1 == 0) {\n        return 0;\n      }\n      uVar3 = uVar3 + 1;\n    }" { (expression_statement "bVar1 = append_type(info," ");" (assignment_expression "bVar1 = append_type(info," ")" identifier = (call_expression "append_type(info," ")" identifier (argument_list "(info," ")" ( identifier , (string_literal "" "" " string_content ") )))) ;) (if_statement "if (bVar1 == 0) {\n        return 0;\n      }" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 < *(uint *)((int)p + 4))" ( (binary_expression "uVar3 < *(uint *)((int)p + 4)" identifier < (pointer_expression "*(uint *)((int)p + 4)" * (cast_expression "(uint *)((int)p + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 4)" ( (binary_expression "(int)p + 4" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) ;) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "undefined4\nFUN_000381f0(int param_1,int param_2,undefined4 param_3,undefined4 param_4,int param_5,int param_6,\n            int param_7)\n\n{\n  int iVar1;\n  uint uVar2;\n  char local_3a [38];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x381f9;\n  *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 2;\n  if (((param_6 != 0) && (param_7 == 0)) && (iVar1 = FUN_00035e50(), iVar1 == 0)) {\n    return 0;\n  }\n  iVar1 = FUN_00038020();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  if (param_2 == 0) {\n    sprintf(local_3a,"%%anon%u",param_3);\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  else {\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  iVar1 = FUN_00036640();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  if (param_6 == 0 && param_5 == 0) {\n    if (param_2 == 0 && param_7 == 0) goto LAB_000382e9;\n    iVar1 = FUN_00036640();\njoined_r0x00038478:\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  else {\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n    if (param_5 != 0) {\n      sprintf(local_3a,"%u",param_5);\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n    }\n    if (param_6 != 0) {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      if (param_7 == 0) {\n        iVar1 = FUN_00036640();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00036640();\n      }\n      else {\n        iVar1 = FUN_00036640();\n      }\n      goto joined_r0x00038478;\n    }\n  }\n  if (param_2 != 0) {\n    sprintf(local_3a," id %u",param_3);\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  iVar1 = FUN_00036640();\n  if (iVar1 == 0) {\n    return 0;\n  }\nLAB_000382e9:\n  *(undefined4 *)(*(int *)(param_1 + 8) + 8) = 2;\n  iVar1 = FUN_00036640();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  uVar2 = 0;\n  if (*(int *)(param_1 + 4) != 0) {\n    do {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      uVar2 = uVar2 + 1;\n    } while (uVar2 < *(uint *)(param_1 + 4));\n  }\n  return 1;\n}\n\n" (function_definition "undefined4\nFUN_000381f0(int param_1,int param_2,undefined4 param_3,undefined4 param_4,int param_5,int param_6,\n            int param_7)\n\n{\n  int iVar1;\n  uint uVar2;\n  char local_3a [38];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x381f9;\n  *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 2;\n  if (((param_6 != 0) && (param_7 == 0)) && (iVar1 = FUN_00035e50(), iVar1 == 0)) {\n    return 0;\n  }\n  iVar1 = FUN_00038020();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  if (param_2 == 0) {\n    sprintf(local_3a,"%%anon%u",param_3);\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  else {\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  iVar1 = FUN_00036640();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  if (param_6 == 0 && param_5 == 0) {\n    if (param_2 == 0 && param_7 == 0) goto LAB_000382e9;\n    iVar1 = FUN_00036640();\njoined_r0x00038478:\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  else {\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n    if (param_5 != 0) {\n      sprintf(local_3a,"%u",param_5);\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n    }\n    if (param_6 != 0) {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      if (param_7 == 0) {\n        iVar1 = FUN_00036640();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00036640();\n      }\n      else {\n        iVar1 = FUN_00036640();\n      }\n      goto joined_r0x00038478;\n    }\n  }\n  if (param_2 != 0) {\n    sprintf(local_3a," id %u",param_3);\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  iVar1 = FUN_00036640();\n  if (iVar1 == 0) {\n    return 0;\n  }\nLAB_000382e9:\n  *(undefined4 *)(*(int *)(param_1 + 8) + 8) = 2;\n  iVar1 = FUN_00036640();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  uVar2 = 0;\n  if (*(int *)(param_1 + 4) != 0) {\n    do {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      uVar2 = uVar2 + 1;\n    } while (uVar2 < *(uint *)(param_1 + 4));\n  }\n  return 1;\n}" type_identifier (function_declarator "FUN_000381f0(int param_1,int param_2,undefined4 param_3,undefined4 param_4,int param_5,int param_6,\n            int param_7)" identifier (parameter_list "(int param_1,int param_2,undefined4 param_3,undefined4 param_4,int param_5,int param_6,\n            int param_7)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "int param_7" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  char local_3a [38];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x381f9;\n  *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 2;\n  if (((param_6 != 0) && (param_7 == 0)) && (iVar1 = FUN_00035e50(), iVar1 == 0)) {\n    return 0;\n  }\n  iVar1 = FUN_00038020();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  if (param_2 == 0) {\n    sprintf(local_3a,"%%anon%u",param_3);\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  else {\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  iVar1 = FUN_00036640();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  if (param_6 == 0 && param_5 == 0) {\n    if (param_2 == 0 && param_7 == 0) goto LAB_000382e9;\n    iVar1 = FUN_00036640();\njoined_r0x00038478:\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  else {\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n    if (param_5 != 0) {\n      sprintf(local_3a,"%u",param_5);\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n    }\n    if (param_6 != 0) {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      if (param_7 == 0) {\n        iVar1 = FUN_00036640();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00036640();\n      }\n      else {\n        iVar1 = FUN_00036640();\n      }\n      goto joined_r0x00038478;\n    }\n  }\n  if (param_2 != 0) {\n    sprintf(local_3a," id %u",param_3);\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  iVar1 = FUN_00036640();\n  if (iVar1 == 0) {\n    return 0;\n  }\nLAB_000382e9:\n  *(undefined4 *)(*(int *)(param_1 + 8) + 8) = 2;\n  iVar1 = FUN_00036640();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  uVar2 = 0;\n  if (*(int *)(param_1 + 4) != 0) {\n    do {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      uVar2 = uVar2 + 1;\n    } while (uVar2 < *(uint *)(param_1 + 4));\n  }\n  return 1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "char local_3a [38];" primitive_type (array_declarator "local_3a [38]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x381f9;" (assignment_expression "uStack_14 = 0x381f9" identifier = number_literal) ;) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 2;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 2" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + 2" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + number_literal)) ;) (if_statement "if (((param_6 != 0) && (param_7 == 0)) && (iVar1 = FUN_00035e50(), iVar1 == 0)) {\n    return 0;\n  }" if (parenthesized_expression "(((param_6 != 0) && (param_7 == 0)) && (iVar1 = FUN_00035e50(), iVar1 == 0))" ( (binary_expression "((param_6 != 0) && (param_7 == 0)) && (iVar1 = FUN_00035e50(), iVar1 == 0)" (parenthesized_expression "((param_6 != 0) && (param_7 == 0))" ( (binary_expression "(param_6 != 0) && (param_7 == 0)" (parenthesized_expression "(param_6 != 0)" ( (binary_expression "param_6 != 0" identifier != number_literal) )) && (parenthesized_expression "(param_7 == 0)" ( (binary_expression "param_7 == 0" identifier == number_literal) ))) )) && (parenthesized_expression "(iVar1 = FUN_00035e50(), iVar1 == 0)" ( (comma_expression "iVar1 = FUN_00035e50(), iVar1 == 0" (assignment_expression "iVar1 = FUN_00035e50()" identifier = (call_expression "FUN_00035e50()" identifier (argument_list "()" ( )))) , (binary_expression "iVar1 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar1 = FUN_00038020();" (assignment_expression "iVar1 = FUN_00038020()" identifier = (call_expression "FUN_00038020()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (param_2 == 0) {\n    sprintf(local_3a,"%%anon%u",param_3);\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  else {\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    sprintf(local_3a,"%%anon%u",param_3);\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }" { (expression_statement "sprintf(local_3a,"%%anon%u",param_3);" (call_expression "sprintf(local_3a,"%%anon%u",param_3)" identifier (argument_list "(local_3a,"%%anon%u",param_3)" ( identifier , (string_literal ""%%anon%u"" " string_content ") , identifier ))) ;) (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" identifier = (call_expression "FUN_00036640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }" else (compound_statement "{\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }" { (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" identifier = (call_expression "FUN_00036640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) }))) (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" identifier = (call_expression "FUN_00036640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (param_6 == 0 && param_5 == 0) {\n    if (param_2 == 0 && param_7 == 0) goto LAB_000382e9;\n    iVar1 = FUN_00036640();\njoined_r0x00038478:\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  else {\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n    if (param_5 != 0) {\n      sprintf(local_3a,"%u",param_5);\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n    }\n    if (param_6 != 0) {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      if (param_7 == 0) {\n        iVar1 = FUN_00036640();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00036640();\n      }\n      else {\n        iVar1 = FUN_00036640();\n      }\n      goto joined_r0x00038478;\n    }\n  }" if (parenthesized_expression "(param_6 == 0 && param_5 == 0)" ( (binary_expression "param_6 == 0 && param_5 == 0" (binary_expression "param_6 == 0" identifier == number_literal) && (binary_expression "param_5 == 0" identifier == number_literal)) )) (compound_statement "{\n    if (param_2 == 0 && param_7 == 0) goto LAB_000382e9;\n    iVar1 = FUN_00036640();\njoined_r0x00038478:\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }" { (if_statement "if (param_2 == 0 && param_7 == 0) goto LAB_000382e9;" if (parenthesized_expression "(param_2 == 0 && param_7 == 0)" ( (binary_expression "param_2 == 0 && param_7 == 0" (binary_expression "param_2 == 0" identifier == number_literal) && (binary_expression "param_7 == 0" identifier == number_literal)) )) (goto_statement "goto LAB_000382e9;" goto statement_identifier ;)) (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" identifier = (call_expression "FUN_00036640()" identifier (argument_list "()" ( )))) ;) (labeled_statement "joined_r0x00038478:\n    if (iVar1 == 0) {\n      return 0;\n    }" statement_identifier : (if_statement "if (iVar1 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) }))) }) (else_clause "else {\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n    if (param_5 != 0) {\n      sprintf(local_3a,"%u",param_5);\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n    }\n    if (param_6 != 0) {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      if (param_7 == 0) {\n        iVar1 = FUN_00036640();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00036640();\n      }\n      else {\n        iVar1 = FUN_00036640();\n      }\n      goto joined_r0x00038478;\n    }\n  }" else (compound_statement "{\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n    if (param_5 != 0) {\n      sprintf(local_3a,"%u",param_5);\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n    }\n    if (param_6 != 0) {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      if (param_7 == 0) {\n        iVar1 = FUN_00036640();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00036640();\n      }\n      else {\n        iVar1 = FUN_00036640();\n      }\n      goto joined_r0x00038478;\n    }\n  }" { (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" identifier = (call_expression "FUN_00036640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (param_5 != 0) {\n      sprintf(local_3a,"%u",param_5);\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n    }" if (parenthesized_expression "(param_5 != 0)" ( (binary_expression "param_5 != 0" identifier != number_literal) )) (compound_statement "{\n      sprintf(local_3a,"%u",param_5);\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n    }" { (expression_statement "sprintf(local_3a,"%u",param_5);" (call_expression "sprintf(local_3a,"%u",param_5)" identifier (argument_list "(local_3a,"%u",param_5)" ( identifier , (string_literal ""%u"" " string_content ") , identifier ))) ;) (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" identifier = (call_expression "FUN_00036640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\n        return 0;\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" identifier = (call_expression "FUN_00036640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\n        return 0;\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) })) (if_statement "if (param_6 != 0) {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      if (param_7 == 0) {\n        iVar1 = FUN_00036640();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00036640();\n      }\n      else {\n        iVar1 = FUN_00036640();\n      }\n      goto joined_r0x00038478;\n    }" if (parenthesized_expression "(param_6 != 0)" ( (binary_expression "param_6 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      if (param_7 == 0) {\n        iVar1 = FUN_00036640();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00036640();\n      }\n      else {\n        iVar1 = FUN_00036640();\n      }\n      goto joined_r0x00038478;\n    }" { (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" identifier = (call_expression "FUN_00036640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\n        return 0;\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (param_7 == 0) {\n        iVar1 = FUN_00036640();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00036640();\n      }\n      else {\n        iVar1 = FUN_00036640();\n      }" if (parenthesized_expression "(param_7 == 0)" ( (binary_expression "param_7 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar1 = FUN_00036640();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00036640();\n      }" { (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" identifier = (call_expression "FUN_00036640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\n          return 0;\n        }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" identifier = (call_expression "FUN_00036640()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n        iVar1 = FUN_00036640();\n      }" else (compound_statement "{\n        iVar1 = FUN_00036640();\n      }" { (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" identifier = (call_expression "FUN_00036640()" identifier (argument_list "()" ( )))) ;) }))) (goto_statement "goto joined_r0x00038478;" goto statement_identifier ;) })) }))) (if_statement "if (param_2 != 0) {\n    sprintf(local_3a," id %u",param_3);\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n    sprintf(local_3a," id %u",param_3);\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }" { (expression_statement "sprintf(local_3a," id %u",param_3);" (call_expression "sprintf(local_3a," id %u",param_3)" identifier (argument_list "(local_3a," id %u",param_3)" ( identifier , (string_literal "" id %u"" " string_content ") , identifier ))) ;) (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" identifier = (call_expression "FUN_00036640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) })) (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" identifier = (call_expression "FUN_00036640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_000382e9:\n  *(undefined4 *)(*(int *)(param_1 + 8) + 8) = 2;" statement_identifier : (expression_statement "*(undefined4 *)(*(int *)(param_1 + 8) + 8) = 2;" (assignment_expression "*(undefined4 *)(*(int *)(param_1 + 8) + 8) = 2" (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 8) + 8)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 8) + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 8) + 8)" ( (binary_expression "*(int *)(param_1 + 8) + 8" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) )))) = number_literal) ;)) (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" identifier = (call_expression "FUN_00036640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (if_statement "if (*(int *)(param_1 + 4) != 0) {\n    do {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      uVar2 = uVar2 + 1;\n    } while (uVar2 < *(uint *)(param_1 + 4));\n  }" if (parenthesized_expression "(*(int *)(param_1 + 4) != 0)" ( (binary_expression "*(int *)(param_1 + 4) != 0" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    do {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      uVar2 = uVar2 + 1;\n    } while (uVar2 < *(uint *)(param_1 + 4));\n  }" { (do_statement "do {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      uVar2 = uVar2 + 1;\n    } while (uVar2 < *(uint *)(param_1 + 4));" do (compound_statement "{\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      uVar2 = uVar2 + 1;\n    }" { (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" identifier = (call_expression "FUN_00036640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 0) {\n        return 0;\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar2 = uVar2 + 1;" (assignment_expression "uVar2 = uVar2 + 1" identifier = (binary_expression "uVar2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar2 < *(uint *)(param_1 + 4))" ( (binary_expression "uVar2 < *(uint *)(param_1 + 4)" identifier < (pointer_expression "*(uint *)(param_1 + 4)" * (cast_expression "(uint *)(param_1 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" 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 IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }))) (goto_statement goto statement_identifier ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (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) )))) + LIT) )))) = LIT) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) })) (return_statement return LIT ;) })))
(function_definition "undefined4\nFUN_000381f0(int param_1,int param_2,undefined4 param_3,undefined4 param_4,int param_5,int param_6,\n            int param_7)\n\n{\n  int iVar1;\n  uint uVar2;\n  char local_3a [38];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x381f9;\n  *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 2;\n  if (((param_6 != 0) && (param_7 == 0)) && (iVar1 = FUN_00035e50(), iVar1 == 0)) {\n    return 0;\n  }\n  iVar1 = FUN_00038020();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  if (param_2 == 0) {\n    sprintf(local_3a,"%%anon%u",param_3);\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  else {\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  iVar1 = FUN_00036640();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  if (param_6 == 0 && param_5 == 0) {\n    if (param_2 == 0 && param_7 == 0) goto LAB_000382e9;\n    iVar1 = FUN_00036640();\njoined_r0x00038478:\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  else {\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n    if (param_5 != 0) {\n      sprintf(local_3a,"%u",param_5);\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n    }\n    if (param_6 != 0) {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      if (param_7 == 0) {\n        iVar1 = FUN_00036640();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00036640();\n      }\n      else {\n        iVar1 = FUN_00036640();\n      }\n      goto joined_r0x00038478;\n    }\n  }\n  if (param_2 != 0) {\n    sprintf(local_3a," id %u",param_3);\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  iVar1 = FUN_00036640();\n  if (iVar1 == 0) {\n    return 0;\n  }\nLAB_000382e9:\n  *(undefined4 *)(*(int *)(param_1 + 8) + 8) = 2;\n  iVar1 = FUN_00036640();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  uVar2 = 0;\n  if (*(int *)(param_1 + 4) != 0) {\n    do {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      uVar2 = uVar2 + 1;\n    } while (uVar2 < *(uint *)(param_1 + 4));\n  }\n  return 1;\n}" (type_identifier "undefined4") (function_declarator "FUN_000381f0(int param_1,int param_2,undefined4 param_3,undefined4 param_4,int param_5,int param_6,\n            int param_7)" (identifier "FUN_000381f0") (parameter_list "(int param_1,int param_2,undefined4 param_3,undefined4 param_4,int param_5,int param_6,\n            int param_7)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) (, ",") (parameter_declaration "int param_6" (primitive_type "int") (identifier "param_6")) (, ",") (parameter_declaration "int param_7" (primitive_type "int") (identifier "param_7")) () ")"))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  char local_3a [38];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x381f9;\n  *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 2;\n  if (((param_6 != 0) && (param_7 == 0)) && (iVar1 = FUN_00035e50(), iVar1 == 0)) {\n    return 0;\n  }\n  iVar1 = FUN_00038020();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  if (param_2 == 0) {\n    sprintf(local_3a,"%%anon%u",param_3);\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  else {\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  iVar1 = FUN_00036640();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  if (param_6 == 0 && param_5 == 0) {\n    if (param_2 == 0 && param_7 == 0) goto LAB_000382e9;\n    iVar1 = FUN_00036640();\njoined_r0x00038478:\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  else {\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n    if (param_5 != 0) {\n      sprintf(local_3a,"%u",param_5);\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n    }\n    if (param_6 != 0) {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      if (param_7 == 0) {\n        iVar1 = FUN_00036640();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00036640();\n      }\n      else {\n        iVar1 = FUN_00036640();\n      }\n      goto joined_r0x00038478;\n    }\n  }\n  if (param_2 != 0) {\n    sprintf(local_3a," id %u",param_3);\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  iVar1 = FUN_00036640();\n  if (iVar1 == 0) {\n    return 0;\n  }\nLAB_000382e9:\n  *(undefined4 *)(*(int *)(param_1 + 8) + 8) = 2;\n  iVar1 = FUN_00036640();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  uVar2 = 0;\n  if (*(int *)(param_1 + 4) != 0) {\n    do {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      uVar2 = uVar2 + 1;\n    } while (uVar2 < *(uint *)(param_1 + 4));\n  }\n  return 1;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "char local_3a [38];" (primitive_type "char") (array_declarator "local_3a [38]" (identifier "local_3a") ([ "[") (number_literal "38") (] "]")) (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x381f9;" (assignment_expression "uStack_14 = 0x381f9" (identifier "uStack_14") (= "=") (number_literal "0x381f9")) (; ";")) (expression_statement "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 2;" (assignment_expression "*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 2" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 4) + 2" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "2"))) (; ";")) (if_statement "if (((param_6 != 0) && (param_7 == 0)) && (iVar1 = FUN_00035e50(), iVar1 == 0)) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(((param_6 != 0) && (param_7 == 0)) && (iVar1 = FUN_00035e50(), iVar1 == 0))" (( "(") (binary_expression "((param_6 != 0) && (param_7 == 0)) && (iVar1 = FUN_00035e50(), iVar1 == 0)" (parenthesized_expression "((param_6 != 0) && (param_7 == 0))" (( "(") (binary_expression "(param_6 != 0) && (param_7 == 0)" (parenthesized_expression "(param_6 != 0)" (( "(") (binary_expression "param_6 != 0" (identifier "param_6") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(param_7 == 0)" (( "(") (binary_expression "param_7 == 0" (identifier "param_7") (== "==") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar1 = FUN_00035e50(), iVar1 == 0)" (( "(") (comma_expression "iVar1 = FUN_00035e50(), iVar1 == 0" (assignment_expression "iVar1 = FUN_00035e50()" (identifier "iVar1") (= "=") (call_expression "FUN_00035e50()" (identifier "FUN_00035e50") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar1 = FUN_00038020();" (assignment_expression "iVar1 = FUN_00038020()" (identifier "iVar1") (= "=") (call_expression "FUN_00038020()" (identifier "FUN_00038020") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (param_2 == 0) {\n    sprintf(local_3a,"%%anon%u",param_3);\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  else {\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    sprintf(local_3a,"%%anon%u",param_3);\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }" ({ "{") (expression_statement "sprintf(local_3a,"%%anon%u",param_3);" (call_expression "sprintf(local_3a,"%%anon%u",param_3)" (identifier "sprintf") (argument_list "(local_3a,"%%anon%u",param_3)" (( "(") (identifier "local_3a") (, ",") (string_literal ""%%anon%u"" (" """) (string_content "%%anon%u") (" """)) (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" (identifier "iVar1") (= "=") (call_expression "FUN_00036640()" (identifier "FUN_00036640") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }" (else "else") (compound_statement "{\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }" ({ "{") (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" (identifier "iVar1") (= "=") (call_expression "FUN_00036640()" (identifier "FUN_00036640") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}")))) (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" (identifier "iVar1") (= "=") (call_expression "FUN_00036640()" (identifier "FUN_00036640") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (param_6 == 0 && param_5 == 0) {\n    if (param_2 == 0 && param_7 == 0) goto LAB_000382e9;\n    iVar1 = FUN_00036640();\njoined_r0x00038478:\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }\n  else {\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n    if (param_5 != 0) {\n      sprintf(local_3a,"%u",param_5);\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n    }\n    if (param_6 != 0) {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      if (param_7 == 0) {\n        iVar1 = FUN_00036640();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00036640();\n      }\n      else {\n        iVar1 = FUN_00036640();\n      }\n      goto joined_r0x00038478;\n    }\n  }" (if "if") (parenthesized_expression "(param_6 == 0 && param_5 == 0)" (( "(") (binary_expression "param_6 == 0 && param_5 == 0" (binary_expression "param_6 == 0" (identifier "param_6") (== "==") (number_literal "0")) (&& "&&") (binary_expression "param_5 == 0" (identifier "param_5") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n    if (param_2 == 0 && param_7 == 0) goto LAB_000382e9;\n    iVar1 = FUN_00036640();\njoined_r0x00038478:\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }" ({ "{") (if_statement "if (param_2 == 0 && param_7 == 0) goto LAB_000382e9;" (if "if") (parenthesized_expression "(param_2 == 0 && param_7 == 0)" (( "(") (binary_expression "param_2 == 0 && param_7 == 0" (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) (&& "&&") (binary_expression "param_7 == 0" (identifier "param_7") (== "==") (number_literal "0"))) () ")")) (goto_statement "goto LAB_000382e9;" (goto "goto") (statement_identifier "LAB_000382e9") (; ";"))) (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" (identifier "iVar1") (= "=") (call_expression "FUN_00036640()" (identifier "FUN_00036640") (argument_list "()" (( "(") () ")")))) (; ";")) (labeled_statement "joined_r0x00038478:\n    if (iVar1 == 0) {\n      return 0;\n    }" (statement_identifier "joined_r0x00038478") (: ":") (if_statement "if (iVar1 == 0) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n    if (param_5 != 0) {\n      sprintf(local_3a,"%u",param_5);\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n    }\n    if (param_6 != 0) {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      if (param_7 == 0) {\n        iVar1 = FUN_00036640();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00036640();\n      }\n      else {\n        iVar1 = FUN_00036640();\n      }\n      goto joined_r0x00038478;\n    }\n  }" (else "else") (compound_statement "{\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n    if (param_5 != 0) {\n      sprintf(local_3a,"%u",param_5);\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n    }\n    if (param_6 != 0) {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      if (param_7 == 0) {\n        iVar1 = FUN_00036640();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00036640();\n      }\n      else {\n        iVar1 = FUN_00036640();\n      }\n      goto joined_r0x00038478;\n    }\n  }" ({ "{") (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" (identifier "iVar1") (= "=") (call_expression "FUN_00036640()" (identifier "FUN_00036640") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (param_5 != 0) {\n      sprintf(local_3a,"%u",param_5);\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n    }" (if "if") (parenthesized_expression "(param_5 != 0)" (( "(") (binary_expression "param_5 != 0" (identifier "param_5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      sprintf(local_3a,"%u",param_5);\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n    }" ({ "{") (expression_statement "sprintf(local_3a,"%u",param_5);" (call_expression "sprintf(local_3a,"%u",param_5)" (identifier "sprintf") (argument_list "(local_3a,"%u",param_5)" (( "(") (identifier "local_3a") (, ",") (string_literal ""%u"" (" """) (string_content "%u") (" """)) (, ",") (identifier "param_5") () ")"))) (; ";")) (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" (identifier "iVar1") (= "=") (call_expression "FUN_00036640()" (identifier "FUN_00036640") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" (identifier "iVar1") (= "=") (call_expression "FUN_00036640()" (identifier "FUN_00036640") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}"))) (if_statement "if (param_6 != 0) {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      if (param_7 == 0) {\n        iVar1 = FUN_00036640();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00036640();\n      }\n      else {\n        iVar1 = FUN_00036640();\n      }\n      goto joined_r0x00038478;\n    }" (if "if") (parenthesized_expression "(param_6 != 0)" (( "(") (binary_expression "param_6 != 0" (identifier "param_6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      if (param_7 == 0) {\n        iVar1 = FUN_00036640();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00036640();\n      }\n      else {\n        iVar1 = FUN_00036640();\n      }\n      goto joined_r0x00038478;\n    }" ({ "{") (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" (identifier "iVar1") (= "=") (call_expression "FUN_00036640()" (identifier "FUN_00036640") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (param_7 == 0) {\n        iVar1 = FUN_00036640();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00036640();\n      }\n      else {\n        iVar1 = FUN_00036640();\n      }" (if "if") (parenthesized_expression "(param_7 == 0)" (( "(") (binary_expression "param_7 == 0" (identifier "param_7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar1 = FUN_00036640();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00036640();\n      }" ({ "{") (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" (identifier "iVar1") (= "=") (call_expression "FUN_00036640()" (identifier "FUN_00036640") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n          return 0;\n        }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" (identifier "iVar1") (= "=") (call_expression "FUN_00036640()" (identifier "FUN_00036640") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (else_clause "else {\n        iVar1 = FUN_00036640();\n      }" (else "else") (compound_statement "{\n        iVar1 = FUN_00036640();\n      }" ({ "{") (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" (identifier "iVar1") (= "=") (call_expression "FUN_00036640()" (identifier "FUN_00036640") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")))) (goto_statement "goto joined_r0x00038478;" (goto "goto") (statement_identifier "joined_r0x00038478") (; ";")) (} "}"))) (} "}")))) (if_statement "if (param_2 != 0) {\n    sprintf(local_3a," id %u",param_3);\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }" (if "if") (parenthesized_expression "(param_2 != 0)" (( "(") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    sprintf(local_3a," id %u",param_3);\n    iVar1 = FUN_00036640();\n    if (iVar1 == 0) {\n      return 0;\n    }\n  }" ({ "{") (expression_statement "sprintf(local_3a," id %u",param_3);" (call_expression "sprintf(local_3a," id %u",param_3)" (identifier "sprintf") (argument_list "(local_3a," id %u",param_3)" (( "(") (identifier "local_3a") (, ",") (string_literal "" id %u"" (" """) (string_content " id %u") (" """)) (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" (identifier "iVar1") (= "=") (call_expression "FUN_00036640()" (identifier "FUN_00036640") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" (identifier "iVar1") (= "=") (call_expression "FUN_00036640()" (identifier "FUN_00036640") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (labeled_statement "LAB_000382e9:\n  *(undefined4 *)(*(int *)(param_1 + 8) + 8) = 2;" (statement_identifier "LAB_000382e9") (: ":") (expression_statement "*(undefined4 *)(*(int *)(param_1 + 8) + 8) = 2;" (assignment_expression "*(undefined4 *)(*(int *)(param_1 + 8) + 8) = 2" (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 8) + 8)" (* "*") (cast_expression "(undefined4 *)(*(int *)(param_1 + 8) + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 8) + 8)" (( "(") (binary_expression "*(int *)(param_1 + 8) + 8" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "2")) (; ";"))) (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" (identifier "iVar1") (= "=") (call_expression "FUN_00036640()" (identifier "FUN_00036640") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (if_statement "if (*(int *)(param_1 + 4) != 0) {\n    do {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      uVar2 = uVar2 + 1;\n    } while (uVar2 < *(uint *)(param_1 + 4));\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 4) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 4) != 0" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    do {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      uVar2 = uVar2 + 1;\n    } while (uVar2 < *(uint *)(param_1 + 4));\n  }" ({ "{") (do_statement "do {\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      uVar2 = uVar2 + 1;\n    } while (uVar2 < *(uint *)(param_1 + 4));" (do "do") (compound_statement "{\n      iVar1 = FUN_00036640();\n      if (iVar1 == 0) {\n        return 0;\n      }\n      uVar2 = uVar2 + 1;\n    }" ({ "{") (expression_statement "iVar1 = FUN_00036640();" (assignment_expression "iVar1 = FUN_00036640()" (identifier "iVar1") (= "=") (call_expression "FUN_00036640()" (identifier "FUN_00036640") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "uVar2 = uVar2 + 1;" (assignment_expression "uVar2 = uVar2 + 1" (identifier "uVar2") (= "=") (binary_expression "uVar2 + 1" (identifier "uVar2") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar2 < *(uint *)(param_1 + 4))" (( "(") (binary_expression "uVar2 < *(uint *)(param_1 + 4)" (identifier "uVar2") (< "<") (pointer_expression "*(uint *)(param_1 + 4)" (* "*") (cast_expression "(uint *)(param_1 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) () ")")) (; ";")) (} "}"))) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Unknown calling convention */

type_1
function_1(void *p,char *var_8,type_2 id,type_1 var_5,type_2 var_11,type_1 var_1,
                   type_1 var_2)

{
  type_3 *info;
  type_1 var_7;
  int var_12;
  char *type;
  char *var_4;
  type_2 var_13;
  char idbuf [20];
  
  *(int *)((int)p + 4) = *(int *)((int)p + 4) + 2;
  info = (type_3 *)((int)p + 8);
  if ((var_1 == 0) || (var_2 != 0)) {
    var_4 = (char *)0x0;
  }
  else {
    var_4 = var_3(info);
    if (var_4 == (char *)0x0) {
      return 0;
    }
  }
  type = "class ";
  if (var_5 == 0) {
    type = "union class ";
  }
  var_7 = var_6(info,type);
  if (var_7 == 0) {
    return 0;
  }
  if (var_8 == (char *)0x0) {
    var_9(idbuf,"%%anon%u",id);
    var_7 = var_10(info,idbuf);
    if (var_7 == 0) {
      return 0;
    }
  }
  else {
    var_7 = var_10(info,var_8);
    if (var_7 == 0) {
      return 0;
    }
  }
  var_7 = var_10(info," {");
  if (var_7 == 0) {
    return 0;
  }
  if (var_1 == 0 && var_11 == 0) {
    if (var_8 == (char *)0x0 && var_2 == 0) goto LAB_000382e9;
    var_12 = var_10(info," /*");
joined_r0x00038478:
    if (var_12 == 0) {
      return 0;
    }
  }
  else {
    var_7 = var_10(info," /*");
    if (var_7 == 0) {
      return 0;
    }
    if (var_11 != 0) {
      var_9(idbuf,"%u",var_11);
      var_7 = var_10(info," size ");
      if (var_7 == 0) {
        return 0;
      }
      var_7 = var_10(info,idbuf);
      if (var_7 == 0) {
        return 0;
      }
    }
    if (var_1 != 0) {
      var_7 = var_10(info," vtable ");
      if (var_7 == 0) {
        return 0;
      }
      if (var_2 == 0) {
        var_7 = var_10(info,var_4);
        if (var_7 == 0) {
          return 0;
        }
        var_12 = var_10(info," ");
      }
      else {
        var_12 = var_10(info,"self ");
      }
      goto joined_r0x00038478;
    }
  }
  if (var_8 != (char *)0x0) {
    var_9(idbuf," id %u",id);
    var_7 = var_10(info,idbuf);
    if (var_7 == 0) {
      return 0;
    }
  }
  var_7 = var_10(info," */");
  if (var_7 == 0) {
    return 0;
  }
LAB_000382e9:
  *(type_4 *)(*(int *)((int)p + 8) + 8) = 2;
  var_7 = var_10(info,"\n");
  if (var_7 == 0) {
    return 0;
  }
  var_13 = 0;
  if (*(int *)((int)p + 4) != 0) {
    do {
      var_7 = var_10(info," ");
      if (var_7 == 0) {
        return 0;
      }
      var_13 = var_13 + 1;
    } while (var_13 < *(type_2 *)((int)p + 4));
  }
  return 1;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_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: (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: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (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: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (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: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (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: (call_expression function: (identifier) arguments: (argument_list))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list))))))) (goto_statement label: (statement_identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (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: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (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: (number_literal))) (if_statement condition: (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: (number_literal))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (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))))) condition: (parenthesized_expression (binary_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: (identifier) right: (number_literal)))))))))) (return_statement (number_literal)))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Type propagation algorithm not settling */

undefined4
MASKED(int param_1,int param_2,undefined4 param_3,undefined4 param_4,int param_5,int param_6,
            int param_7)

{
  int iVar1;
  uint uVar2;
  char local_3a [38];
  undefined4 uStack_14;
  
  uStack_14 = 0x381f9;
  *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 2;
  if (((param_6 != 0) && (param_7 == 0)) && (iVar1 = FUN_00035e50(), iVar1 == 0)) {
    return 0;
  }
  iVar1 = FUN_00038020();
  if (iVar1 == 0) {
    return 0;
  }
  if (param_2 == 0) {
    sprintf(local_3a,"%%anon%u",param_3);
    iVar1 = FUN_00036640();
    if (iVar1 == 0) {
      return 0;
    }
  }
  else {
    iVar1 = FUN_00036640();
    if (iVar1 == 0) {
      return 0;
    }
  }
  iVar1 = FUN_00036640();
  if (iVar1 == 0) {
    return 0;
  }
  if (param_6 == 0 && param_5 == 0) {
    if (param_2 == 0 && param_7 == 0) goto LAB_000382e9;
    iVar1 = FUN_00036640();
joined_r0x00038478:
    if (iVar1 == 0) {
      return 0;
    }
  }
  else {
    iVar1 = FUN_00036640();
    if (iVar1 == 0) {
      return 0;
    }
    if (param_5 != 0) {
      sprintf(local_3a,"%u",param_5);
      iVar1 = FUN_00036640();
      if (iVar1 == 0) {
        return 0;
      }
      iVar1 = FUN_00036640();
      if (iVar1 == 0) {
        return 0;
      }
    }
    if (param_6 != 0) {
      iVar1 = FUN_00036640();
      if (iVar1 == 0) {
        return 0;
      }
      if (param_7 == 0) {
        iVar1 = FUN_00036640();
        if (iVar1 == 0) {
          return 0;
        }
        iVar1 = FUN_00036640();
      }
      else {
        iVar1 = FUN_00036640();
      }
      goto joined_r0x00038478;
    }
  }
  if (param_2 != 0) {
    sprintf(local_3a," id %u",param_3);
    iVar1 = FUN_00036640();
    if (iVar1 == 0) {
      return 0;
    }
  }
  iVar1 = FUN_00036640();
  if (iVar1 == 0) {
    return 0;
  }
LAB_000382e9:
  *(undefined4 *)(*(int *)(param_1 + 8) + 8) = 2;
  iVar1 = FUN_00036640();
  if (iVar1 == 0) {
    return 0;
  }
  uVar2 = 0;
  if (*(int *)(param_1 + 4) != 0) {
    do {
      iVar1 = FUN_00036640();
      if (iVar1 == 0) {
        return 0;
      }
      uVar2 = uVar2 + 1;
    } while (uVar2 < *(uint *)(param_1 + 4));
  }
  return 1;
}

