
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void bb_write_blocks(FILE *ofp,char *filename)

{
  int iVar1;
  int iVar2;
  int iVar3;
  Sym *pSVar4;
  uint val;
  
  val = 0;
  if (symtab.base < symtab.limit) {
    val = 0;
    pSVar4 = symtab.base;
    do {
      iVar2 = 0;
      do {
        if (*(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4) == 0 && (int)pSVar4->bb_addr[iVar2] == 0)
        goto LAB_00013a3f;
        iVar2 = iVar2 + 1;
      } while (iVar2 != 10);
      iVar2 = 10;
LAB_00013a3f:
      pSVar4 = pSVar4 + 1;
      val = val + iVar2;
    } while (pSVar4 < symtab.limit);
  }
  iVar2 = gmon_io_write_8(ofp,2);
  if (iVar2 == 0) {
    iVar2 = gmon_io_write_32(ofp,val);
    if (iVar2 == 0) {
      pSVar4 = symtab.base;
      if (symtab.base < symtab.limit) {
        do {
          iVar2 = 0;
          do {
            iVar3 = *(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4);
            iVar1 = (int)pSVar4->bb_addr[iVar2];
            if (iVar3 == 0 && iVar1 == 0) break;
            iVar3 = gmon_io_write_vma(ofp,CONCAT44(iVar3,iVar1));
            if (iVar3 != 0) goto LAB_00013af1;
            iVar3 = gmon_io_write_vma(ofp,(ulonglong)pSVar4->bb_calls[iVar2]);
            if (iVar3 != 0) goto LAB_00013af1;
            iVar2 = iVar2 + 1;
          } while (iVar2 != 10);
          pSVar4 = pSVar4 + 1;
        } while (pSVar4 < symtab.limit);
      }
      return;
    }
  }
LAB_00013af1:
  perror(filename);
                    /* WARNING: Subroutine does not return */
  done(1);
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void FUN_000139f0(undefined4 param_1,char *param_2)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  
  iVar4 = 0;
  if (DAT_0002e524 < DAT_0002e528) {
    iVar4 = 0;
    uVar3 = DAT_0002e524;
    do {
      iVar2 = 0;
      do {
        if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)
        goto LAB_00013a3f;
        iVar2 = iVar2 + 1;
      } while (iVar2 != 10);
      iVar2 = 10;
LAB_00013a3f:
      uVar3 = uVar3 + 0xfc;
      iVar4 = iVar4 + iVar2;
    } while (uVar3 < DAT_0002e528);
  }
  iVar2 = FUN_00019ea0(param_1,2);
  if (iVar2 == 0) {
    iVar4 = FUN_00019de0(param_1,iVar4);
    if (iVar4 == 0) {
      uVar3 = DAT_0002e524;
      if (DAT_0002e524 < DAT_0002e528) {
        do {
          iVar4 = 0;
          do {
            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);
            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);
            if (iVar2 == 0 && iVar1 == 0) break;
            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);
            if (iVar2 != 0) goto LAB_00013af1;
            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);
            if (iVar2 != 0) goto LAB_00013af1;
            iVar4 = iVar4 + 1;
          } while (iVar4 != 10);
          uVar3 = uVar3 + 0xfc;
        } while (uVar3 < DAT_0002e528);
      }
      return;
    }
  }
LAB_00013af1:
  perror(param_2);
                    /* WARNING: Subroutine does not return */
  FUN_0001adb0(1);
}


PUSH EBP
PUSH EDI
PUSH ESI
XOR ESI,ESI
PUSH EBX
CALL 0x00013030
ADD EBX,0x19605
SUB ESP,0x1c
MOV EBP,dword ptr [ESP + 0x30]
LEA EAX,[EBX + 0x1520]
MOV EDX,dword ptr [EAX + 0x4]
MOV EDI,dword ptr [EAX + 0x8]
MOV dword ptr [ESP + 0xc],EAX
CMP EDX,EDI
JNC 0x00013a4b
LEA ESI,[ESI]
XOR EAX,EAX
LEA ESI,[ESI]
MOV ECX,dword ptr [EDX + EAX*0x8 + 0x2c]
OR ECX,dword ptr [EDX + EAX*0x8 + 0x28]
JZ 0x00013a3f
ADD EAX,0x1
CMP EAX,0xa
JNZ 0x00013a28
MOV EAX,0xa
ADD EDX,0xfc
ADD ESI,EAX
CMP EDX,EDI
JC 0x00013a20
SUB ESP,0x8
PUSH 0x2
PUSH EBP
CALL 0x00019ea0
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00013af1
SUB ESP,0x8
PUSH ESI
PUSH EBP
CALL 0x00019de0
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00013af1
MOV EAX,dword ptr [ESP + 0xc]
MOV EDI,dword ptr [EAX + 0x4]
CMP EDI,dword ptr [EAX + 0x8]
JNC 0x00013ae9
NOP
MOV dword ptr [ESP + 0x30],EBP
XOR ESI,ESI
LEA ESI,[ESI]
LEA ESI,[ESI]
MOV EDX,dword ptr [EDI + ESI*0x8 + 0x2c]
MOV EAX,dword ptr [EDI + ESI*0x8 + 0x28]
MOV EBP,EDX
OR EBP,EAX
JZ 0x00013ad6
SUB ESP,0x4
PUSH EDX
PUSH EAX
PUSH dword ptr [ESP + 0x3c]
CALL 0x00019e30
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00013af1
MOV EAX,dword ptr [EDI + ESI*0x4 + 0x78]
SUB ESP,0x4
XOR EDX,EDX
PUSH EDX
PUSH EAX
PUSH dword ptr [ESP + 0x3c]
CALL 0x00019e30
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00013af1
ADD ESI,0x1
CMP ESI,0xa
JNZ 0x00013a90
MOV EAX,dword ptr [ESP + 0xc]
MOV EBP,dword ptr [ESP + 0x30]
ADD EDI,0xfc
CMP dword ptr [EAX + 0x8],EDI
JA 0x00013a80
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0xc
PUSH dword ptr [ESP + 0x40]
CALL 0x000121b0
MOV dword ptr [ESP],0x1
CALL 0x0001adb0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_000139f0(undefined4 param_1,char *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  \n  iVar4 = 0;\n  if (DAT_0002e524 < DAT_0002e528) {\n    iVar4 = 0;\n    uVar3 = DAT_0002e524;\n    do {\n      iVar2 = 0;\n      do {\n        if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);\n      iVar2 = 10;\nLAB_00013a3f:\n      uVar3 = uVar3 + 0xfc;\n      iVar4 = iVar4 + iVar2;\n    } while (uVar3 < DAT_0002e528);\n  }\n  iVar2 = FUN_00019ea0(param_1,2);\n  if (iVar2 == 0) {\n    iVar4 = FUN_00019de0(param_1,iVar4);\n    if (iVar4 == 0) {\n      uVar3 = DAT_0002e524;\n      if (DAT_0002e524 < DAT_0002e528) {\n        do {\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        } while (uVar3 < DAT_0002e528);\n      }\n      return;\n    }\n  }\nLAB_00013af1:\n  perror(param_2);\n                    /* WARNING: Subroutine does not return */\n  FUN_0001adb0(1);\n}\n\n" comment (function_definition "void FUN_000139f0(undefined4 param_1,char *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  \n  iVar4 = 0;\n  if (DAT_0002e524 < DAT_0002e528) {\n    iVar4 = 0;\n    uVar3 = DAT_0002e524;\n    do {\n      iVar2 = 0;\n      do {\n        if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);\n      iVar2 = 10;\nLAB_00013a3f:\n      uVar3 = uVar3 + 0xfc;\n      iVar4 = iVar4 + iVar2;\n    } while (uVar3 < DAT_0002e528);\n  }\n  iVar2 = FUN_00019ea0(param_1,2);\n  if (iVar2 == 0) {\n    iVar4 = FUN_00019de0(param_1,iVar4);\n    if (iVar4 == 0) {\n      uVar3 = DAT_0002e524;\n      if (DAT_0002e524 < DAT_0002e528) {\n        do {\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        } while (uVar3 < DAT_0002e528);\n      }\n      return;\n    }\n  }\nLAB_00013af1:\n  perror(param_2);\n                    /* WARNING: Subroutine does not return */\n  FUN_0001adb0(1);\n}" primitive_type (function_declarator "FUN_000139f0(undefined4 param_1,char *param_2)" identifier (parameter_list "(undefined4 param_1,char *param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  \n  iVar4 = 0;\n  if (DAT_0002e524 < DAT_0002e528) {\n    iVar4 = 0;\n    uVar3 = DAT_0002e524;\n    do {\n      iVar2 = 0;\n      do {\n        if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);\n      iVar2 = 10;\nLAB_00013a3f:\n      uVar3 = uVar3 + 0xfc;\n      iVar4 = iVar4 + iVar2;\n    } while (uVar3 < DAT_0002e528);\n  }\n  iVar2 = FUN_00019ea0(param_1,2);\n  if (iVar2 == 0) {\n    iVar4 = FUN_00019de0(param_1,iVar4);\n    if (iVar4 == 0) {\n      uVar3 = DAT_0002e524;\n      if (DAT_0002e524 < DAT_0002e528) {\n        do {\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        } while (uVar3 < DAT_0002e528);\n      }\n      return;\n    }\n  }\nLAB_00013af1:\n  perror(param_2);\n                    /* WARNING: Subroutine does not return */\n  FUN_0001adb0(1);\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (if_statement "if (DAT_0002e524 < DAT_0002e528) {\n    iVar4 = 0;\n    uVar3 = DAT_0002e524;\n    do {\n      iVar2 = 0;\n      do {\n        if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);\n      iVar2 = 10;\nLAB_00013a3f:\n      uVar3 = uVar3 + 0xfc;\n      iVar4 = iVar4 + iVar2;\n    } while (uVar3 < DAT_0002e528);\n  }" if (parenthesized_expression "(DAT_0002e524 < DAT_0002e528)" ( (binary_expression "DAT_0002e524 < DAT_0002e528" identifier < identifier) )) (compound_statement "{\n    iVar4 = 0;\n    uVar3 = DAT_0002e524;\n    do {\n      iVar2 = 0;\n      do {\n        if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);\n      iVar2 = 10;\nLAB_00013a3f:\n      uVar3 = uVar3 + 0xfc;\n      iVar4 = iVar4 + iVar2;\n    } while (uVar3 < DAT_0002e528);\n  }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = DAT_0002e524;" (assignment_expression "uVar3 = DAT_0002e524" identifier = identifier) ;) (do_statement "do {\n      iVar2 = 0;\n      do {\n        if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);\n      iVar2 = 10;\nLAB_00013a3f:\n      uVar3 = uVar3 + 0xfc;\n      iVar4 = iVar4 + iVar2;\n    } while (uVar3 < DAT_0002e528);" do (compound_statement "{\n      iVar2 = 0;\n      do {\n        if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);\n      iVar2 = 10;\nLAB_00013a3f:\n      uVar3 = uVar3 + 0xfc;\n      iVar4 = iVar4 + iVar2;\n    }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (do_statement "do {\n        if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);" do (compound_statement "{\n        if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      }" { (if_statement "if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)\n        goto LAB_00013a3f;" if (parenthesized_expression "(*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)" ( (binary_expression "*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0" (binary_expression "*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0" (pointer_expression "*(int *)(uVar3 + 0x2c + iVar2 * 8)" * (cast_expression "(int *)(uVar3 + 0x2c + iVar2 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 + 0x2c + iVar2 * 8)" ( (binary_expression "uVar3 + 0x2c + iVar2 * 8" (binary_expression "uVar3 + 0x2c" identifier + number_literal) + (binary_expression "iVar2 * 8" identifier * number_literal)) )))) == number_literal) && (binary_expression "*(int *)(uVar3 + 0x28 + iVar2 * 8) == 0" (pointer_expression "*(int *)(uVar3 + 0x28 + iVar2 * 8)" * (cast_expression "(int *)(uVar3 + 0x28 + iVar2 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 + 0x28 + iVar2 * 8)" ( (binary_expression "uVar3 + 0x28 + iVar2 * 8" (binary_expression "uVar3 + 0x28" identifier + number_literal) + (binary_expression "iVar2 * 8" identifier * number_literal)) )))) == number_literal)) )) (goto_statement "goto LAB_00013a3f;" goto statement_identifier ;)) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar2 != 10)" ( (binary_expression "iVar2 != 10" identifier != number_literal) )) ;) (expression_statement "iVar2 = 10;" (assignment_expression "iVar2 = 10" identifier = number_literal) ;) (labeled_statement "LAB_00013a3f:\n      uVar3 = uVar3 + 0xfc;" statement_identifier : (expression_statement "uVar3 = uVar3 + 0xfc;" (assignment_expression "uVar3 = uVar3 + 0xfc" identifier = (binary_expression "uVar3 + 0xfc" identifier + number_literal)) ;)) (expression_statement "iVar4 = iVar4 + iVar2;" (assignment_expression "iVar4 = iVar4 + iVar2" identifier = (binary_expression "iVar4 + iVar2" identifier + identifier)) ;) }) while (parenthesized_expression "(uVar3 < DAT_0002e528)" ( (binary_expression "uVar3 < DAT_0002e528" identifier < identifier) )) ;) })) (expression_statement "iVar2 = FUN_00019ea0(param_1,2);" (assignment_expression "iVar2 = FUN_00019ea0(param_1,2)" identifier = (call_expression "FUN_00019ea0(param_1,2)" identifier (argument_list "(param_1,2)" ( identifier , number_literal )))) ;) (if_statement "if (iVar2 == 0) {\n    iVar4 = FUN_00019de0(param_1,iVar4);\n    if (iVar4 == 0) {\n      uVar3 = DAT_0002e524;\n      if (DAT_0002e524 < DAT_0002e528) {\n        do {\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        } while (uVar3 < DAT_0002e528);\n      }\n      return;\n    }\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar4 = FUN_00019de0(param_1,iVar4);\n    if (iVar4 == 0) {\n      uVar3 = DAT_0002e524;\n      if (DAT_0002e524 < DAT_0002e528) {\n        do {\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        } while (uVar3 < DAT_0002e528);\n      }\n      return;\n    }\n  }" { (expression_statement "iVar4 = FUN_00019de0(param_1,iVar4);" (assignment_expression "iVar4 = FUN_00019de0(param_1,iVar4)" identifier = (call_expression "FUN_00019de0(param_1,iVar4)" identifier (argument_list "(param_1,iVar4)" ( identifier , identifier )))) ;) (if_statement "if (iVar4 == 0) {\n      uVar3 = DAT_0002e524;\n      if (DAT_0002e524 < DAT_0002e528) {\n        do {\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        } while (uVar3 < DAT_0002e528);\n      }\n      return;\n    }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar3 = DAT_0002e524;\n      if (DAT_0002e524 < DAT_0002e528) {\n        do {\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        } while (uVar3 < DAT_0002e528);\n      }\n      return;\n    }" { (expression_statement "uVar3 = DAT_0002e524;" (assignment_expression "uVar3 = DAT_0002e524" identifier = identifier) ;) (if_statement "if (DAT_0002e524 < DAT_0002e528) {\n        do {\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        } while (uVar3 < DAT_0002e528);\n      }" if (parenthesized_expression "(DAT_0002e524 < DAT_0002e528)" ( (binary_expression "DAT_0002e524 < DAT_0002e528" identifier < identifier) )) (compound_statement "{\n        do {\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        } while (uVar3 < DAT_0002e528);\n      }" { (do_statement "do {\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        } while (uVar3 < DAT_0002e528);" do (compound_statement "{\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);" do (compound_statement "{\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          }" { (expression_statement "iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);" (assignment_expression "iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8)" identifier = (pointer_expression "*(int *)(uVar3 + 0x2c + iVar4 * 8)" * (cast_expression "(int *)(uVar3 + 0x2c + iVar4 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 + 0x2c + iVar4 * 8)" ( (binary_expression "uVar3 + 0x2c + iVar4 * 8" (binary_expression "uVar3 + 0x2c" identifier + number_literal) + (binary_expression "iVar4 * 8" identifier * number_literal)) ))))) ;) (expression_statement "iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);" (assignment_expression "iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8)" identifier = (pointer_expression "*(int *)(uVar3 + 0x28 + iVar4 * 8)" * (cast_expression "(int *)(uVar3 + 0x28 + iVar4 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 + 0x28 + iVar4 * 8)" ( (binary_expression "uVar3 + 0x28 + iVar4 * 8" (binary_expression "uVar3 + 0x28" identifier + number_literal) + (binary_expression "iVar4 * 8" identifier * number_literal)) ))))) ;) (if_statement "if (iVar2 == 0 && iVar1 == 0) break;" if (parenthesized_expression "(iVar2 == 0 && iVar1 == 0)" ( (binary_expression "iVar2 == 0 && iVar1 == 0" (binary_expression "iVar2 == 0" identifier == number_literal) && (binary_expression "iVar1 == 0" identifier == number_literal)) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = FUN_00019e30(param_1,iVar1,iVar2);" (assignment_expression "iVar2 = FUN_00019e30(param_1,iVar1,iVar2)" identifier = (call_expression "FUN_00019e30(param_1,iVar1,iVar2)" identifier (argument_list "(param_1,iVar1,iVar2)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar2 != 0) goto LAB_00013af1;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00013af1;" goto statement_identifier ;)) (expression_statement "iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);" (assignment_expression "iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0)" identifier = (call_expression "FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0)" identifier (argument_list "(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0)" ( identifier , (pointer_expression "*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4)" * (cast_expression "(undefined4 *)(uVar3 + 0x78 + iVar4 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 + 0x78 + iVar4 * 4)" ( (binary_expression "uVar3 + 0x78 + iVar4 * 4" (binary_expression "uVar3 + 0x78" identifier + number_literal) + (binary_expression "iVar4 * 4" identifier * number_literal)) )))) , number_literal )))) ;) (if_statement "if (iVar2 != 0) goto LAB_00013af1;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00013af1;" goto statement_identifier ;)) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 != 10)" ( (binary_expression "iVar4 != 10" identifier != number_literal) )) ;) (expression_statement "uVar3 = uVar3 + 0xfc;" (assignment_expression "uVar3 = uVar3 + 0xfc" identifier = (binary_expression "uVar3 + 0xfc" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 < DAT_0002e528)" ( (binary_expression "uVar3 < DAT_0002e528" identifier < identifier) )) ;) })) (return_statement "return;" return ;) })) })) (labeled_statement "LAB_00013af1:\n  perror(param_2);" statement_identifier : (expression_statement "perror(param_2);" (call_expression "perror(param_2)" identifier (argument_list "(param_2)" ( identifier ))) ;)) comment (expression_statement "FUN_0001adb0(1);" (call_expression "FUN_0001adb0(1)" identifier (argument_list "(1)" ( number_literal ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid bb_write_blocks(FILE *ofp,char *filename)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  Sym *pSVar4;\n  uint val;\n  \n  val = 0;\n  if (symtab.base < symtab.limit) {\n    val = 0;\n    pSVar4 = symtab.base;\n    do {\n      iVar2 = 0;\n      do {\n        if (*(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4) == 0 && (int)pSVar4->bb_addr[iVar2] == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);\n      iVar2 = 10;\nLAB_00013a3f:\n      pSVar4 = pSVar4 + 1;\n      val = val + iVar2;\n    } while (pSVar4 < symtab.limit);\n  }\n  iVar2 = gmon_io_write_8(ofp,2);\n  if (iVar2 == 0) {\n    iVar2 = gmon_io_write_32(ofp,val);\n    if (iVar2 == 0) {\n      pSVar4 = symtab.base;\n      if (symtab.base < symtab.limit) {\n        do {\n          iVar2 = 0;\n          do {\n            iVar3 = *(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4);\n            iVar1 = (int)pSVar4->bb_addr[iVar2];\n            if (iVar3 == 0 && iVar1 == 0) break;\n            iVar3 = gmon_io_write_vma(ofp,CONCAT44(iVar3,iVar1));\n            if (iVar3 != 0) goto LAB_00013af1;\n            iVar3 = gmon_io_write_vma(ofp,(ulonglong)pSVar4->bb_calls[iVar2]);\n            if (iVar3 != 0) goto LAB_00013af1;\n            iVar2 = iVar2 + 1;\n          } while (iVar2 != 10);\n          pSVar4 = pSVar4 + 1;\n        } while (pSVar4 < symtab.limit);\n      }\n      return;\n    }\n  }\nLAB_00013af1:\n  perror(filename);\n                    /* WARNING: Subroutine does not return */\n  done(1);\n}\n\n" comment (function_definition "void bb_write_blocks(FILE *ofp,char *filename)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  Sym *pSVar4;\n  uint val;\n  \n  val = 0;\n  if (symtab.base < symtab.limit) {\n    val = 0;\n    pSVar4 = symtab.base;\n    do {\n      iVar2 = 0;\n      do {\n        if (*(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4) == 0 && (int)pSVar4->bb_addr[iVar2] == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);\n      iVar2 = 10;\nLAB_00013a3f:\n      pSVar4 = pSVar4 + 1;\n      val = val + iVar2;\n    } while (pSVar4 < symtab.limit);\n  }\n  iVar2 = gmon_io_write_8(ofp,2);\n  if (iVar2 == 0) {\n    iVar2 = gmon_io_write_32(ofp,val);\n    if (iVar2 == 0) {\n      pSVar4 = symtab.base;\n      if (symtab.base < symtab.limit) {\n        do {\n          iVar2 = 0;\n          do {\n            iVar3 = *(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4);\n            iVar1 = (int)pSVar4->bb_addr[iVar2];\n            if (iVar3 == 0 && iVar1 == 0) break;\n            iVar3 = gmon_io_write_vma(ofp,CONCAT44(iVar3,iVar1));\n            if (iVar3 != 0) goto LAB_00013af1;\n            iVar3 = gmon_io_write_vma(ofp,(ulonglong)pSVar4->bb_calls[iVar2]);\n            if (iVar3 != 0) goto LAB_00013af1;\n            iVar2 = iVar2 + 1;\n          } while (iVar2 != 10);\n          pSVar4 = pSVar4 + 1;\n        } while (pSVar4 < symtab.limit);\n      }\n      return;\n    }\n  }\nLAB_00013af1:\n  perror(filename);\n                    /* WARNING: Subroutine does not return */\n  done(1);\n}" primitive_type (function_declarator "bb_write_blocks(FILE *ofp,char *filename)" identifier (parameter_list "(FILE *ofp,char *filename)" ( (parameter_declaration "FILE *ofp" type_identifier (pointer_declarator "*ofp" * identifier)) , (parameter_declaration "char *filename" primitive_type (pointer_declarator "*filename" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  Sym *pSVar4;\n  uint val;\n  \n  val = 0;\n  if (symtab.base < symtab.limit) {\n    val = 0;\n    pSVar4 = symtab.base;\n    do {\n      iVar2 = 0;\n      do {\n        if (*(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4) == 0 && (int)pSVar4->bb_addr[iVar2] == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);\n      iVar2 = 10;\nLAB_00013a3f:\n      pSVar4 = pSVar4 + 1;\n      val = val + iVar2;\n    } while (pSVar4 < symtab.limit);\n  }\n  iVar2 = gmon_io_write_8(ofp,2);\n  if (iVar2 == 0) {\n    iVar2 = gmon_io_write_32(ofp,val);\n    if (iVar2 == 0) {\n      pSVar4 = symtab.base;\n      if (symtab.base < symtab.limit) {\n        do {\n          iVar2 = 0;\n          do {\n            iVar3 = *(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4);\n            iVar1 = (int)pSVar4->bb_addr[iVar2];\n            if (iVar3 == 0 && iVar1 == 0) break;\n            iVar3 = gmon_io_write_vma(ofp,CONCAT44(iVar3,iVar1));\n            if (iVar3 != 0) goto LAB_00013af1;\n            iVar3 = gmon_io_write_vma(ofp,(ulonglong)pSVar4->bb_calls[iVar2]);\n            if (iVar3 != 0) goto LAB_00013af1;\n            iVar2 = iVar2 + 1;\n          } while (iVar2 != 10);\n          pSVar4 = pSVar4 + 1;\n        } while (pSVar4 < symtab.limit);\n      }\n      return;\n    }\n  }\nLAB_00013af1:\n  perror(filename);\n                    /* WARNING: Subroutine does not return */\n  done(1);\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "Sym *pSVar4;" type_identifier (pointer_declarator "*pSVar4" * identifier) ;) (declaration "uint val;" type_identifier identifier ;) (expression_statement "val = 0;" (assignment_expression "val = 0" identifier = number_literal) ;) (if_statement "if (symtab.base < symtab.limit) {\n    val = 0;\n    pSVar4 = symtab.base;\n    do {\n      iVar2 = 0;\n      do {\n        if (*(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4) == 0 && (int)pSVar4->bb_addr[iVar2] == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);\n      iVar2 = 10;\nLAB_00013a3f:\n      pSVar4 = pSVar4 + 1;\n      val = val + iVar2;\n    } while (pSVar4 < symtab.limit);\n  }" if (parenthesized_expression "(symtab.base < symtab.limit)" ( (binary_expression "symtab.base < symtab.limit" (field_expression "symtab.base" identifier . field_identifier) < (field_expression "symtab.limit" identifier . field_identifier)) )) (compound_statement "{\n    val = 0;\n    pSVar4 = symtab.base;\n    do {\n      iVar2 = 0;\n      do {\n        if (*(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4) == 0 && (int)pSVar4->bb_addr[iVar2] == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);\n      iVar2 = 10;\nLAB_00013a3f:\n      pSVar4 = pSVar4 + 1;\n      val = val + iVar2;\n    } while (pSVar4 < symtab.limit);\n  }" { (expression_statement "val = 0;" (assignment_expression "val = 0" identifier = number_literal) ;) (expression_statement "pSVar4 = symtab.base;" (assignment_expression "pSVar4 = symtab.base" identifier = (field_expression "symtab.base" identifier . field_identifier)) ;) (do_statement "do {\n      iVar2 = 0;\n      do {\n        if (*(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4) == 0 && (int)pSVar4->bb_addr[iVar2] == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);\n      iVar2 = 10;\nLAB_00013a3f:\n      pSVar4 = pSVar4 + 1;\n      val = val + iVar2;\n    } while (pSVar4 < symtab.limit);" do (compound_statement "{\n      iVar2 = 0;\n      do {\n        if (*(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4) == 0 && (int)pSVar4->bb_addr[iVar2] == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);\n      iVar2 = 10;\nLAB_00013a3f:\n      pSVar4 = pSVar4 + 1;\n      val = val + iVar2;\n    }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (do_statement "do {\n        if (*(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4) == 0 && (int)pSVar4->bb_addr[iVar2] == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);" do (compound_statement "{\n        if (*(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4) == 0 && (int)pSVar4->bb_addr[iVar2] == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      }" { (if_statement "if (*(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4) == 0 && (int)pSVar4->bb_addr[iVar2] == 0)\n        goto LAB_00013a3f;" if (parenthesized_expression "(*(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4) == 0 && (int)pSVar4->bb_addr[iVar2] == 0)" ( (binary_expression "*(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4) == 0 && (int)pSVar4->bb_addr[iVar2] == 0" (binary_expression "*(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4) == 0" (pointer_expression "*(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4)" * (cast_expression "(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pSVar4->bb_addr + iVar2 * 8 + 4)" ( (binary_expression "(int)pSVar4->bb_addr + iVar2 * 8 + 4" (binary_expression "(int)pSVar4->bb_addr + iVar2 * 8" (cast_expression "(int)pSVar4->bb_addr" ( (type_descriptor "int" primitive_type) ) (field_expression "pSVar4->bb_addr" identifier -> field_identifier)) + (binary_expression "iVar2 * 8" identifier * number_literal)) + number_literal) )))) == number_literal) && (binary_expression "(int)pSVar4->bb_addr[iVar2] == 0" (cast_expression "(int)pSVar4->bb_addr[iVar2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "pSVar4->bb_addr[iVar2]" (field_expression "pSVar4->bb_addr" identifier -> field_identifier) [ identifier ])) == number_literal)) )) (goto_statement "goto LAB_00013a3f;" goto statement_identifier ;)) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar2 != 10)" ( (binary_expression "iVar2 != 10" identifier != number_literal) )) ;) (expression_statement "iVar2 = 10;" (assignment_expression "iVar2 = 10" identifier = number_literal) ;) (labeled_statement "LAB_00013a3f:\n      pSVar4 = pSVar4 + 1;" statement_identifier : (expression_statement "pSVar4 = pSVar4 + 1;" (assignment_expression "pSVar4 = pSVar4 + 1" identifier = (binary_expression "pSVar4 + 1" identifier + number_literal)) ;)) (expression_statement "val = val + iVar2;" (assignment_expression "val = val + iVar2" identifier = (binary_expression "val + iVar2" identifier + identifier)) ;) }) while (parenthesized_expression "(pSVar4 < symtab.limit)" ( (binary_expression "pSVar4 < symtab.limit" identifier < (field_expression "symtab.limit" identifier . field_identifier)) )) ;) })) (expression_statement "iVar2 = gmon_io_write_8(ofp,2);" (assignment_expression "iVar2 = gmon_io_write_8(ofp,2)" identifier = (call_expression "gmon_io_write_8(ofp,2)" identifier (argument_list "(ofp,2)" ( identifier , number_literal )))) ;) (if_statement "if (iVar2 == 0) {\n    iVar2 = gmon_io_write_32(ofp,val);\n    if (iVar2 == 0) {\n      pSVar4 = symtab.base;\n      if (symtab.base < symtab.limit) {\n        do {\n          iVar2 = 0;\n          do {\n            iVar3 = *(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4);\n            iVar1 = (int)pSVar4->bb_addr[iVar2];\n            if (iVar3 == 0 && iVar1 == 0) break;\n            iVar3 = gmon_io_write_vma(ofp,CONCAT44(iVar3,iVar1));\n            if (iVar3 != 0) goto LAB_00013af1;\n            iVar3 = gmon_io_write_vma(ofp,(ulonglong)pSVar4->bb_calls[iVar2]);\n            if (iVar3 != 0) goto LAB_00013af1;\n            iVar2 = iVar2 + 1;\n          } while (iVar2 != 10);\n          pSVar4 = pSVar4 + 1;\n        } while (pSVar4 < symtab.limit);\n      }\n      return;\n    }\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar2 = gmon_io_write_32(ofp,val);\n    if (iVar2 == 0) {\n      pSVar4 = symtab.base;\n      if (symtab.base < symtab.limit) {\n        do {\n          iVar2 = 0;\n          do {\n            iVar3 = *(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4);\n            iVar1 = (int)pSVar4->bb_addr[iVar2];\n            if (iVar3 == 0 && iVar1 == 0) break;\n            iVar3 = gmon_io_write_vma(ofp,CONCAT44(iVar3,iVar1));\n            if (iVar3 != 0) goto LAB_00013af1;\n            iVar3 = gmon_io_write_vma(ofp,(ulonglong)pSVar4->bb_calls[iVar2]);\n            if (iVar3 != 0) goto LAB_00013af1;\n            iVar2 = iVar2 + 1;\n          } while (iVar2 != 10);\n          pSVar4 = pSVar4 + 1;\n        } while (pSVar4 < symtab.limit);\n      }\n      return;\n    }\n  }" { (expression_statement "iVar2 = gmon_io_write_32(ofp,val);" (assignment_expression "iVar2 = gmon_io_write_32(ofp,val)" identifier = (call_expression "gmon_io_write_32(ofp,val)" identifier (argument_list "(ofp,val)" ( identifier , identifier )))) ;) (if_statement "if (iVar2 == 0) {\n      pSVar4 = symtab.base;\n      if (symtab.base < symtab.limit) {\n        do {\n          iVar2 = 0;\n          do {\n            iVar3 = *(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4);\n            iVar1 = (int)pSVar4->bb_addr[iVar2];\n            if (iVar3 == 0 && iVar1 == 0) break;\n            iVar3 = gmon_io_write_vma(ofp,CONCAT44(iVar3,iVar1));\n            if (iVar3 != 0) goto LAB_00013af1;\n            iVar3 = gmon_io_write_vma(ofp,(ulonglong)pSVar4->bb_calls[iVar2]);\n            if (iVar3 != 0) goto LAB_00013af1;\n            iVar2 = iVar2 + 1;\n          } while (iVar2 != 10);\n          pSVar4 = pSVar4 + 1;\n        } while (pSVar4 < symtab.limit);\n      }\n      return;\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      pSVar4 = symtab.base;\n      if (symtab.base < symtab.limit) {\n        do {\n          iVar2 = 0;\n          do {\n            iVar3 = *(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4);\n            iVar1 = (int)pSVar4->bb_addr[iVar2];\n            if (iVar3 == 0 && iVar1 == 0) break;\n            iVar3 = gmon_io_write_vma(ofp,CONCAT44(iVar3,iVar1));\n            if (iVar3 != 0) goto LAB_00013af1;\n            iVar3 = gmon_io_write_vma(ofp,(ulonglong)pSVar4->bb_calls[iVar2]);\n            if (iVar3 != 0) goto LAB_00013af1;\n            iVar2 = iVar2 + 1;\n          } while (iVar2 != 10);\n          pSVar4 = pSVar4 + 1;\n        } while (pSVar4 < symtab.limit);\n      }\n      return;\n    }" { (expression_statement "pSVar4 = symtab.base;" (assignment_expression "pSVar4 = symtab.base" identifier = (field_expression "symtab.base" identifier . field_identifier)) ;) (if_statement "if (symtab.base < symtab.limit) {\n        do {\n          iVar2 = 0;\n          do {\n            iVar3 = *(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4);\n            iVar1 = (int)pSVar4->bb_addr[iVar2];\n            if (iVar3 == 0 && iVar1 == 0) break;\n            iVar3 = gmon_io_write_vma(ofp,CONCAT44(iVar3,iVar1));\n            if (iVar3 != 0) goto LAB_00013af1;\n            iVar3 = gmon_io_write_vma(ofp,(ulonglong)pSVar4->bb_calls[iVar2]);\n            if (iVar3 != 0) goto LAB_00013af1;\n            iVar2 = iVar2 + 1;\n          } while (iVar2 != 10);\n          pSVar4 = pSVar4 + 1;\n        } while (pSVar4 < symtab.limit);\n      }" if (parenthesized_expression "(symtab.base < symtab.limit)" ( (binary_expression "symtab.base < symtab.limit" (field_expression "symtab.base" identifier . field_identifier) < (field_expression "symtab.limit" identifier . field_identifier)) )) (compound_statement "{\n        do {\n          iVar2 = 0;\n          do {\n            iVar3 = *(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4);\n            iVar1 = (int)pSVar4->bb_addr[iVar2];\n            if (iVar3 == 0 && iVar1 == 0) break;\n            iVar3 = gmon_io_write_vma(ofp,CONCAT44(iVar3,iVar1));\n            if (iVar3 != 0) goto LAB_00013af1;\n            iVar3 = gmon_io_write_vma(ofp,(ulonglong)pSVar4->bb_calls[iVar2]);\n            if (iVar3 != 0) goto LAB_00013af1;\n            iVar2 = iVar2 + 1;\n          } while (iVar2 != 10);\n          pSVar4 = pSVar4 + 1;\n        } while (pSVar4 < symtab.limit);\n      }" { (do_statement "do {\n          iVar2 = 0;\n          do {\n            iVar3 = *(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4);\n            iVar1 = (int)pSVar4->bb_addr[iVar2];\n            if (iVar3 == 0 && iVar1 == 0) break;\n            iVar3 = gmon_io_write_vma(ofp,CONCAT44(iVar3,iVar1));\n            if (iVar3 != 0) goto LAB_00013af1;\n            iVar3 = gmon_io_write_vma(ofp,(ulonglong)pSVar4->bb_calls[iVar2]);\n            if (iVar3 != 0) goto LAB_00013af1;\n            iVar2 = iVar2 + 1;\n          } while (iVar2 != 10);\n          pSVar4 = pSVar4 + 1;\n        } while (pSVar4 < symtab.limit);" do (compound_statement "{\n          iVar2 = 0;\n          do {\n            iVar3 = *(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4);\n            iVar1 = (int)pSVar4->bb_addr[iVar2];\n            if (iVar3 == 0 && iVar1 == 0) break;\n            iVar3 = gmon_io_write_vma(ofp,CONCAT44(iVar3,iVar1));\n            if (iVar3 != 0) goto LAB_00013af1;\n            iVar3 = gmon_io_write_vma(ofp,(ulonglong)pSVar4->bb_calls[iVar2]);\n            if (iVar3 != 0) goto LAB_00013af1;\n            iVar2 = iVar2 + 1;\n          } while (iVar2 != 10);\n          pSVar4 = pSVar4 + 1;\n        }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (do_statement "do {\n            iVar3 = *(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4);\n            iVar1 = (int)pSVar4->bb_addr[iVar2];\n            if (iVar3 == 0 && iVar1 == 0) break;\n            iVar3 = gmon_io_write_vma(ofp,CONCAT44(iVar3,iVar1));\n            if (iVar3 != 0) goto LAB_00013af1;\n            iVar3 = gmon_io_write_vma(ofp,(ulonglong)pSVar4->bb_calls[iVar2]);\n            if (iVar3 != 0) goto LAB_00013af1;\n            iVar2 = iVar2 + 1;\n          } while (iVar2 != 10);" do (compound_statement "{\n            iVar3 = *(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4);\n            iVar1 = (int)pSVar4->bb_addr[iVar2];\n            if (iVar3 == 0 && iVar1 == 0) break;\n            iVar3 = gmon_io_write_vma(ofp,CONCAT44(iVar3,iVar1));\n            if (iVar3 != 0) goto LAB_00013af1;\n            iVar3 = gmon_io_write_vma(ofp,(ulonglong)pSVar4->bb_calls[iVar2]);\n            if (iVar3 != 0) goto LAB_00013af1;\n            iVar2 = iVar2 + 1;\n          }" { (expression_statement "iVar3 = *(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4);" (assignment_expression "iVar3 = *(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4)" identifier = (pointer_expression "*(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4)" * (cast_expression "(int *)((int)pSVar4->bb_addr + iVar2 * 8 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pSVar4->bb_addr + iVar2 * 8 + 4)" ( (binary_expression "(int)pSVar4->bb_addr + iVar2 * 8 + 4" (binary_expression "(int)pSVar4->bb_addr + iVar2 * 8" (cast_expression "(int)pSVar4->bb_addr" ( (type_descriptor "int" primitive_type) ) (field_expression "pSVar4->bb_addr" identifier -> field_identifier)) + (binary_expression "iVar2 * 8" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "iVar1 = (int)pSVar4->bb_addr[iVar2];" (assignment_expression "iVar1 = (int)pSVar4->bb_addr[iVar2]" identifier = (cast_expression "(int)pSVar4->bb_addr[iVar2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "pSVar4->bb_addr[iVar2]" (field_expression "pSVar4->bb_addr" identifier -> field_identifier) [ identifier ]))) ;) (if_statement "if (iVar3 == 0 && iVar1 == 0) break;" if (parenthesized_expression "(iVar3 == 0 && iVar1 == 0)" ( (binary_expression "iVar3 == 0 && iVar1 == 0" (binary_expression "iVar3 == 0" identifier == number_literal) && (binary_expression "iVar1 == 0" identifier == number_literal)) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = gmon_io_write_vma(ofp,CONCAT44(iVar3,iVar1));" (assignment_expression "iVar3 = gmon_io_write_vma(ofp,CONCAT44(iVar3,iVar1))" identifier = (call_expression "gmon_io_write_vma(ofp,CONCAT44(iVar3,iVar1))" identifier (argument_list "(ofp,CONCAT44(iVar3,iVar1))" ( identifier , (call_expression "CONCAT44(iVar3,iVar1)" identifier (argument_list "(iVar3,iVar1)" ( identifier , identifier ))) )))) ;) (if_statement "if (iVar3 != 0) goto LAB_00013af1;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00013af1;" goto statement_identifier ;)) (expression_statement "iVar3 = gmon_io_write_vma(ofp,(ulonglong)pSVar4->bb_calls[iVar2]);" (assignment_expression "iVar3 = gmon_io_write_vma(ofp,(ulonglong)pSVar4->bb_calls[iVar2])" identifier = (call_expression "gmon_io_write_vma(ofp,(ulonglong)pSVar4->bb_calls[iVar2])" identifier (argument_list "(ofp,(ulonglong)pSVar4->bb_calls[iVar2])" ( identifier , (cast_expression "(ulonglong)pSVar4->bb_calls[iVar2]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "pSVar4->bb_calls[iVar2]" (field_expression "pSVar4->bb_calls" identifier -> field_identifier) [ identifier ])) )))) ;) (if_statement "if (iVar3 != 0) goto LAB_00013af1;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00013af1;" goto statement_identifier ;)) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar2 != 10)" ( (binary_expression "iVar2 != 10" identifier != number_literal) )) ;) (expression_statement "pSVar4 = pSVar4 + 1;" (assignment_expression "pSVar4 = pSVar4 + 1" identifier = (binary_expression "pSVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pSVar4 < symtab.limit)" ( (binary_expression "pSVar4 < symtab.limit" identifier < (field_expression "symtab.limit" identifier . field_identifier)) )) ;) })) (return_statement "return;" return ;) })) })) (labeled_statement "LAB_00013af1:\n  perror(filename);" statement_identifier : (expression_statement "perror(filename);" (call_expression "perror(filename)" identifier (argument_list "(filename)" ( identifier ))) ;)) comment (expression_statement "done(1);" (call_expression "done(1)" identifier (argument_list "(1)" ( number_literal ))) ;) })))
(translation_unit "void FUN_000139f0(undefined4 param_1,char *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  \n  iVar4 = 0;\n  if (DAT_0002e524 < DAT_0002e528) {\n    iVar4 = 0;\n    uVar3 = DAT_0002e524;\n    do {\n      iVar2 = 0;\n      do {\n        if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);\n      iVar2 = 10;\nLAB_00013a3f:\n      uVar3 = uVar3 + 0xfc;\n      iVar4 = iVar4 + iVar2;\n    } while (uVar3 < DAT_0002e528);\n  }\n  iVar2 = FUN_00019ea0(param_1,2);\n  if (iVar2 == 0) {\n    iVar4 = FUN_00019de0(param_1,iVar4);\n    if (iVar4 == 0) {\n      uVar3 = DAT_0002e524;\n      if (DAT_0002e524 < DAT_0002e528) {\n        do {\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        } while (uVar3 < DAT_0002e528);\n      }\n      return;\n    }\n  }\nLAB_00013af1:\n  perror(param_2);\n                    \n  FUN_0001adb0(1);\n}\n\n" (function_definition "void FUN_000139f0(undefined4 param_1,char *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  \n  iVar4 = 0;\n  if (DAT_0002e524 < DAT_0002e528) {\n    iVar4 = 0;\n    uVar3 = DAT_0002e524;\n    do {\n      iVar2 = 0;\n      do {\n        if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);\n      iVar2 = 10;\nLAB_00013a3f:\n      uVar3 = uVar3 + 0xfc;\n      iVar4 = iVar4 + iVar2;\n    } while (uVar3 < DAT_0002e528);\n  }\n  iVar2 = FUN_00019ea0(param_1,2);\n  if (iVar2 == 0) {\n    iVar4 = FUN_00019de0(param_1,iVar4);\n    if (iVar4 == 0) {\n      uVar3 = DAT_0002e524;\n      if (DAT_0002e524 < DAT_0002e528) {\n        do {\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        } while (uVar3 < DAT_0002e528);\n      }\n      return;\n    }\n  }\nLAB_00013af1:\n  perror(param_2);\n                    \n  FUN_0001adb0(1);\n}" primitive_type (function_declarator "FUN_000139f0(undefined4 param_1,char *param_2)" identifier (parameter_list "(undefined4 param_1,char *param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  \n  iVar4 = 0;\n  if (DAT_0002e524 < DAT_0002e528) {\n    iVar4 = 0;\n    uVar3 = DAT_0002e524;\n    do {\n      iVar2 = 0;\n      do {\n        if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);\n      iVar2 = 10;\nLAB_00013a3f:\n      uVar3 = uVar3 + 0xfc;\n      iVar4 = iVar4 + iVar2;\n    } while (uVar3 < DAT_0002e528);\n  }\n  iVar2 = FUN_00019ea0(param_1,2);\n  if (iVar2 == 0) {\n    iVar4 = FUN_00019de0(param_1,iVar4);\n    if (iVar4 == 0) {\n      uVar3 = DAT_0002e524;\n      if (DAT_0002e524 < DAT_0002e528) {\n        do {\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        } while (uVar3 < DAT_0002e528);\n      }\n      return;\n    }\n  }\nLAB_00013af1:\n  perror(param_2);\n                    \n  FUN_0001adb0(1);\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (if_statement "if (DAT_0002e524 < DAT_0002e528) {\n    iVar4 = 0;\n    uVar3 = DAT_0002e524;\n    do {\n      iVar2 = 0;\n      do {\n        if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);\n      iVar2 = 10;\nLAB_00013a3f:\n      uVar3 = uVar3 + 0xfc;\n      iVar4 = iVar4 + iVar2;\n    } while (uVar3 < DAT_0002e528);\n  }" if (parenthesized_expression "(DAT_0002e524 < DAT_0002e528)" ( (binary_expression "DAT_0002e524 < DAT_0002e528" identifier < identifier) )) (compound_statement "{\n    iVar4 = 0;\n    uVar3 = DAT_0002e524;\n    do {\n      iVar2 = 0;\n      do {\n        if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);\n      iVar2 = 10;\nLAB_00013a3f:\n      uVar3 = uVar3 + 0xfc;\n      iVar4 = iVar4 + iVar2;\n    } while (uVar3 < DAT_0002e528);\n  }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = DAT_0002e524;" (assignment_expression "uVar3 = DAT_0002e524" identifier = identifier) ;) (do_statement "do {\n      iVar2 = 0;\n      do {\n        if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);\n      iVar2 = 10;\nLAB_00013a3f:\n      uVar3 = uVar3 + 0xfc;\n      iVar4 = iVar4 + iVar2;\n    } while (uVar3 < DAT_0002e528);" do (compound_statement "{\n      iVar2 = 0;\n      do {\n        if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);\n      iVar2 = 10;\nLAB_00013a3f:\n      uVar3 = uVar3 + 0xfc;\n      iVar4 = iVar4 + iVar2;\n    }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (do_statement "do {\n        if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);" do (compound_statement "{\n        if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      }" { (if_statement "if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)\n        goto LAB_00013a3f;" if (parenthesized_expression "(*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)" ( (binary_expression "*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0" (binary_expression "*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0" (pointer_expression "*(int *)(uVar3 + 0x2c + iVar2 * 8)" * (cast_expression "(int *)(uVar3 + 0x2c + iVar2 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 + 0x2c + iVar2 * 8)" ( (binary_expression "uVar3 + 0x2c + iVar2 * 8" (binary_expression "uVar3 + 0x2c" identifier + number_literal) + (binary_expression "iVar2 * 8" identifier * number_literal)) )))) == number_literal) && (binary_expression "*(int *)(uVar3 + 0x28 + iVar2 * 8) == 0" (pointer_expression "*(int *)(uVar3 + 0x28 + iVar2 * 8)" * (cast_expression "(int *)(uVar3 + 0x28 + iVar2 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 + 0x28 + iVar2 * 8)" ( (binary_expression "uVar3 + 0x28 + iVar2 * 8" (binary_expression "uVar3 + 0x28" identifier + number_literal) + (binary_expression "iVar2 * 8" identifier * number_literal)) )))) == number_literal)) )) (goto_statement "goto LAB_00013a3f;" goto statement_identifier ;)) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar2 != 10)" ( (binary_expression "iVar2 != 10" identifier != number_literal) )) ;) (expression_statement "iVar2 = 10;" (assignment_expression "iVar2 = 10" identifier = number_literal) ;) (labeled_statement "LAB_00013a3f:\n      uVar3 = uVar3 + 0xfc;" statement_identifier : (expression_statement "uVar3 = uVar3 + 0xfc;" (assignment_expression "uVar3 = uVar3 + 0xfc" identifier = (binary_expression "uVar3 + 0xfc" identifier + number_literal)) ;)) (expression_statement "iVar4 = iVar4 + iVar2;" (assignment_expression "iVar4 = iVar4 + iVar2" identifier = (binary_expression "iVar4 + iVar2" identifier + identifier)) ;) }) while (parenthesized_expression "(uVar3 < DAT_0002e528)" ( (binary_expression "uVar3 < DAT_0002e528" identifier < identifier) )) ;) })) (expression_statement "iVar2 = FUN_00019ea0(param_1,2);" (assignment_expression "iVar2 = FUN_00019ea0(param_1,2)" identifier = (call_expression "FUN_00019ea0(param_1,2)" identifier (argument_list "(param_1,2)" ( identifier , number_literal )))) ;) (if_statement "if (iVar2 == 0) {\n    iVar4 = FUN_00019de0(param_1,iVar4);\n    if (iVar4 == 0) {\n      uVar3 = DAT_0002e524;\n      if (DAT_0002e524 < DAT_0002e528) {\n        do {\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        } while (uVar3 < DAT_0002e528);\n      }\n      return;\n    }\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar4 = FUN_00019de0(param_1,iVar4);\n    if (iVar4 == 0) {\n      uVar3 = DAT_0002e524;\n      if (DAT_0002e524 < DAT_0002e528) {\n        do {\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        } while (uVar3 < DAT_0002e528);\n      }\n      return;\n    }\n  }" { (expression_statement "iVar4 = FUN_00019de0(param_1,iVar4);" (assignment_expression "iVar4 = FUN_00019de0(param_1,iVar4)" identifier = (call_expression "FUN_00019de0(param_1,iVar4)" identifier (argument_list "(param_1,iVar4)" ( identifier , identifier )))) ;) (if_statement "if (iVar4 == 0) {\n      uVar3 = DAT_0002e524;\n      if (DAT_0002e524 < DAT_0002e528) {\n        do {\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        } while (uVar3 < DAT_0002e528);\n      }\n      return;\n    }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar3 = DAT_0002e524;\n      if (DAT_0002e524 < DAT_0002e528) {\n        do {\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        } while (uVar3 < DAT_0002e528);\n      }\n      return;\n    }" { (expression_statement "uVar3 = DAT_0002e524;" (assignment_expression "uVar3 = DAT_0002e524" identifier = identifier) ;) (if_statement "if (DAT_0002e524 < DAT_0002e528) {\n        do {\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        } while (uVar3 < DAT_0002e528);\n      }" if (parenthesized_expression "(DAT_0002e524 < DAT_0002e528)" ( (binary_expression "DAT_0002e524 < DAT_0002e528" identifier < identifier) )) (compound_statement "{\n        do {\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        } while (uVar3 < DAT_0002e528);\n      }" { (do_statement "do {\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        } while (uVar3 < DAT_0002e528);" do (compound_statement "{\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);" do (compound_statement "{\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          }" { (expression_statement "iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);" (assignment_expression "iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8)" identifier = (pointer_expression "*(int *)(uVar3 + 0x2c + iVar4 * 8)" * (cast_expression "(int *)(uVar3 + 0x2c + iVar4 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 + 0x2c + iVar4 * 8)" ( (binary_expression "uVar3 + 0x2c + iVar4 * 8" (binary_expression "uVar3 + 0x2c" identifier + number_literal) + (binary_expression "iVar4 * 8" identifier * number_literal)) ))))) ;) (expression_statement "iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);" (assignment_expression "iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8)" identifier = (pointer_expression "*(int *)(uVar3 + 0x28 + iVar4 * 8)" * (cast_expression "(int *)(uVar3 + 0x28 + iVar4 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 + 0x28 + iVar4 * 8)" ( (binary_expression "uVar3 + 0x28 + iVar4 * 8" (binary_expression "uVar3 + 0x28" identifier + number_literal) + (binary_expression "iVar4 * 8" identifier * number_literal)) ))))) ;) (if_statement "if (iVar2 == 0 && iVar1 == 0) break;" if (parenthesized_expression "(iVar2 == 0 && iVar1 == 0)" ( (binary_expression "iVar2 == 0 && iVar1 == 0" (binary_expression "iVar2 == 0" identifier == number_literal) && (binary_expression "iVar1 == 0" identifier == number_literal)) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = FUN_00019e30(param_1,iVar1,iVar2);" (assignment_expression "iVar2 = FUN_00019e30(param_1,iVar1,iVar2)" identifier = (call_expression "FUN_00019e30(param_1,iVar1,iVar2)" identifier (argument_list "(param_1,iVar1,iVar2)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar2 != 0) goto LAB_00013af1;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00013af1;" goto statement_identifier ;)) (expression_statement "iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);" (assignment_expression "iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0)" identifier = (call_expression "FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0)" identifier (argument_list "(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0)" ( identifier , (pointer_expression "*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4)" * (cast_expression "(undefined4 *)(uVar3 + 0x78 + iVar4 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 + 0x78 + iVar4 * 4)" ( (binary_expression "uVar3 + 0x78 + iVar4 * 4" (binary_expression "uVar3 + 0x78" identifier + number_literal) + (binary_expression "iVar4 * 4" identifier * number_literal)) )))) , number_literal )))) ;) (if_statement "if (iVar2 != 0) goto LAB_00013af1;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00013af1;" goto statement_identifier ;)) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 != 10)" ( (binary_expression "iVar4 != 10" identifier != number_literal) )) ;) (expression_statement "uVar3 = uVar3 + 0xfc;" (assignment_expression "uVar3 = uVar3 + 0xfc" identifier = (binary_expression "uVar3 + 0xfc" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 < DAT_0002e528)" ( (binary_expression "uVar3 < DAT_0002e528" identifier < identifier) )) ;) })) (return_statement "return;" return ;) })) })) (labeled_statement "LAB_00013af1:\n  perror(param_2);" statement_identifier : (expression_statement "perror(param_2);" (call_expression "perror(param_2)" identifier (argument_list "(param_2)" ( identifier ))) ;)) (expression_statement "FUN_0001adb0(1);" (call_expression "FUN_0001adb0(1)" identifier (argument_list "(1)" ( number_literal ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) == LIT) && (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) == LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (return_statement return ;) })) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })))
(function_definition "void FUN_000139f0(undefined4 param_1,char *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  \n  iVar4 = 0;\n  if (DAT_0002e524 < DAT_0002e528) {\n    iVar4 = 0;\n    uVar3 = DAT_0002e524;\n    do {\n      iVar2 = 0;\n      do {\n        if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);\n      iVar2 = 10;\nLAB_00013a3f:\n      uVar3 = uVar3 + 0xfc;\n      iVar4 = iVar4 + iVar2;\n    } while (uVar3 < DAT_0002e528);\n  }\n  iVar2 = FUN_00019ea0(param_1,2);\n  if (iVar2 == 0) {\n    iVar4 = FUN_00019de0(param_1,iVar4);\n    if (iVar4 == 0) {\n      uVar3 = DAT_0002e524;\n      if (DAT_0002e524 < DAT_0002e528) {\n        do {\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        } while (uVar3 < DAT_0002e528);\n      }\n      return;\n    }\n  }\nLAB_00013af1:\n  perror(param_2);\n                    \n  FUN_0001adb0(1);\n}" (primitive_type "void") (function_declarator "FUN_000139f0(undefined4 param_1,char *param_2)" (identifier "FUN_000139f0") (parameter_list "(undefined4 param_1,char *param_2)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "char *param_2" (primitive_type "char") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  \n  iVar4 = 0;\n  if (DAT_0002e524 < DAT_0002e528) {\n    iVar4 = 0;\n    uVar3 = DAT_0002e524;\n    do {\n      iVar2 = 0;\n      do {\n        if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);\n      iVar2 = 10;\nLAB_00013a3f:\n      uVar3 = uVar3 + 0xfc;\n      iVar4 = iVar4 + iVar2;\n    } while (uVar3 < DAT_0002e528);\n  }\n  iVar2 = FUN_00019ea0(param_1,2);\n  if (iVar2 == 0) {\n    iVar4 = FUN_00019de0(param_1,iVar4);\n    if (iVar4 == 0) {\n      uVar3 = DAT_0002e524;\n      if (DAT_0002e524 < DAT_0002e528) {\n        do {\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        } while (uVar3 < DAT_0002e528);\n      }\n      return;\n    }\n  }\nLAB_00013af1:\n  perror(param_2);\n                    \n  FUN_0001adb0(1);\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (if_statement "if (DAT_0002e524 < DAT_0002e528) {\n    iVar4 = 0;\n    uVar3 = DAT_0002e524;\n    do {\n      iVar2 = 0;\n      do {\n        if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);\n      iVar2 = 10;\nLAB_00013a3f:\n      uVar3 = uVar3 + 0xfc;\n      iVar4 = iVar4 + iVar2;\n    } while (uVar3 < DAT_0002e528);\n  }" (if "if") (parenthesized_expression "(DAT_0002e524 < DAT_0002e528)" (( "(") (binary_expression "DAT_0002e524 < DAT_0002e528" (identifier "DAT_0002e524") (< "<") (identifier "DAT_0002e528")) () ")")) (compound_statement "{\n    iVar4 = 0;\n    uVar3 = DAT_0002e524;\n    do {\n      iVar2 = 0;\n      do {\n        if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);\n      iVar2 = 10;\nLAB_00013a3f:\n      uVar3 = uVar3 + 0xfc;\n      iVar4 = iVar4 + iVar2;\n    } while (uVar3 < DAT_0002e528);\n  }" ({ "{") (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar3 = DAT_0002e524;" (assignment_expression "uVar3 = DAT_0002e524" (identifier "uVar3") (= "=") (identifier "DAT_0002e524")) (; ";")) (do_statement "do {\n      iVar2 = 0;\n      do {\n        if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);\n      iVar2 = 10;\nLAB_00013a3f:\n      uVar3 = uVar3 + 0xfc;\n      iVar4 = iVar4 + iVar2;\n    } while (uVar3 < DAT_0002e528);" (do "do") (compound_statement "{\n      iVar2 = 0;\n      do {\n        if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);\n      iVar2 = 10;\nLAB_00013a3f:\n      uVar3 = uVar3 + 0xfc;\n      iVar4 = iVar4 + iVar2;\n    }" ({ "{") (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 10);" (do "do") (compound_statement "{\n        if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)\n        goto LAB_00013a3f;\n        iVar2 = iVar2 + 1;\n      }" ({ "{") (if_statement "if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)\n        goto LAB_00013a3f;" (if "if") (parenthesized_expression "(*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)" (( "(") (binary_expression "*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0" (binary_expression "*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0" (pointer_expression "*(int *)(uVar3 + 0x2c + iVar2 * 8)" (* "*") (cast_expression "(int *)(uVar3 + 0x2c + iVar2 * 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar3 + 0x2c + iVar2 * 8)" (( "(") (binary_expression "uVar3 + 0x2c + iVar2 * 8" (binary_expression "uVar3 + 0x2c" (identifier "uVar3") (+ "+") (number_literal "0x2c")) (+ "+") (binary_expression "iVar2 * 8" (identifier "iVar2") (* "*") (number_literal "8"))) () ")")))) (== "==") (number_literal "0")) (&& "&&") (binary_expression "*(int *)(uVar3 + 0x28 + iVar2 * 8) == 0" (pointer_expression "*(int *)(uVar3 + 0x28 + iVar2 * 8)" (* "*") (cast_expression "(int *)(uVar3 + 0x28 + iVar2 * 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar3 + 0x28 + iVar2 * 8)" (( "(") (binary_expression "uVar3 + 0x28 + iVar2 * 8" (binary_expression "uVar3 + 0x28" (identifier "uVar3") (+ "+") (number_literal "0x28")) (+ "+") (binary_expression "iVar2 * 8" (identifier "iVar2") (* "*") (number_literal "8"))) () ")")))) (== "==") (number_literal "0"))) () ")")) (goto_statement "goto LAB_00013a3f;" (goto "goto") (statement_identifier "LAB_00013a3f") (; ";"))) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" (identifier "iVar2") (= "=") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar2 != 10)" (( "(") (binary_expression "iVar2 != 10" (identifier "iVar2") (!= "!=") (number_literal "10")) () ")")) (; ";")) (expression_statement "iVar2 = 10;" (assignment_expression "iVar2 = 10" (identifier "iVar2") (= "=") (number_literal "10")) (; ";")) (labeled_statement "LAB_00013a3f:\n      uVar3 = uVar3 + 0xfc;" (statement_identifier "LAB_00013a3f") (: ":") (expression_statement "uVar3 = uVar3 + 0xfc;" (assignment_expression "uVar3 = uVar3 + 0xfc" (identifier "uVar3") (= "=") (binary_expression "uVar3 + 0xfc" (identifier "uVar3") (+ "+") (number_literal "0xfc"))) (; ";"))) (expression_statement "iVar4 = iVar4 + iVar2;" (assignment_expression "iVar4 = iVar4 + iVar2" (identifier "iVar4") (= "=") (binary_expression "iVar4 + iVar2" (identifier "iVar4") (+ "+") (identifier "iVar2"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar3 < DAT_0002e528)" (( "(") (binary_expression "uVar3 < DAT_0002e528" (identifier "uVar3") (< "<") (identifier "DAT_0002e528")) () ")")) (; ";")) (} "}"))) (expression_statement "iVar2 = FUN_00019ea0(param_1,2);" (assignment_expression "iVar2 = FUN_00019ea0(param_1,2)" (identifier "iVar2") (= "=") (call_expression "FUN_00019ea0(param_1,2)" (identifier "FUN_00019ea0") (argument_list "(param_1,2)" (( "(") (identifier "param_1") (, ",") (number_literal "2") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n    iVar4 = FUN_00019de0(param_1,iVar4);\n    if (iVar4 == 0) {\n      uVar3 = DAT_0002e524;\n      if (DAT_0002e524 < DAT_0002e528) {\n        do {\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        } while (uVar3 < DAT_0002e528);\n      }\n      return;\n    }\n  }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar4 = FUN_00019de0(param_1,iVar4);\n    if (iVar4 == 0) {\n      uVar3 = DAT_0002e524;\n      if (DAT_0002e524 < DAT_0002e528) {\n        do {\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        } while (uVar3 < DAT_0002e528);\n      }\n      return;\n    }\n  }" ({ "{") (expression_statement "iVar4 = FUN_00019de0(param_1,iVar4);" (assignment_expression "iVar4 = FUN_00019de0(param_1,iVar4)" (identifier "iVar4") (= "=") (call_expression "FUN_00019de0(param_1,iVar4)" (identifier "FUN_00019de0") (argument_list "(param_1,iVar4)" (( "(") (identifier "param_1") (, ",") (identifier "iVar4") () ")")))) (; ";")) (if_statement "if (iVar4 == 0) {\n      uVar3 = DAT_0002e524;\n      if (DAT_0002e524 < DAT_0002e528) {\n        do {\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        } while (uVar3 < DAT_0002e528);\n      }\n      return;\n    }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar3 = DAT_0002e524;\n      if (DAT_0002e524 < DAT_0002e528) {\n        do {\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        } while (uVar3 < DAT_0002e528);\n      }\n      return;\n    }" ({ "{") (expression_statement "uVar3 = DAT_0002e524;" (assignment_expression "uVar3 = DAT_0002e524" (identifier "uVar3") (= "=") (identifier "DAT_0002e524")) (; ";")) (if_statement "if (DAT_0002e524 < DAT_0002e528) {\n        do {\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        } while (uVar3 < DAT_0002e528);\n      }" (if "if") (parenthesized_expression "(DAT_0002e524 < DAT_0002e528)" (( "(") (binary_expression "DAT_0002e524 < DAT_0002e528" (identifier "DAT_0002e524") (< "<") (identifier "DAT_0002e528")) () ")")) (compound_statement "{\n        do {\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        } while (uVar3 < DAT_0002e528);\n      }" ({ "{") (do_statement "do {\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        } while (uVar3 < DAT_0002e528);" (do "do") (compound_statement "{\n          iVar4 = 0;\n          do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);\n          uVar3 = uVar3 + 0xfc;\n        }" ({ "{") (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          } while (iVar4 != 10);" (do "do") (compound_statement "{\n            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);\n            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);\n            if (iVar2 == 0 && iVar1 == 0) break;\n            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);\n            if (iVar2 != 0) goto LAB_00013af1;\n            iVar4 = iVar4 + 1;\n          }" ({ "{") (expression_statement "iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);" (assignment_expression "iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(uVar3 + 0x2c + iVar4 * 8)" (* "*") (cast_expression "(int *)(uVar3 + 0x2c + iVar4 * 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar3 + 0x2c + iVar4 * 8)" (( "(") (binary_expression "uVar3 + 0x2c + iVar4 * 8" (binary_expression "uVar3 + 0x2c" (identifier "uVar3") (+ "+") (number_literal "0x2c")) (+ "+") (binary_expression "iVar4 * 8" (identifier "iVar4") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);" (assignment_expression "iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(uVar3 + 0x28 + iVar4 * 8)" (* "*") (cast_expression "(int *)(uVar3 + 0x28 + iVar4 * 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar3 + 0x28 + iVar4 * 8)" (( "(") (binary_expression "uVar3 + 0x28 + iVar4 * 8" (binary_expression "uVar3 + 0x28" (identifier "uVar3") (+ "+") (number_literal "0x28")) (+ "+") (binary_expression "iVar4 * 8" (identifier "iVar4") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (iVar2 == 0 && iVar1 == 0) break;" (if "if") (parenthesized_expression "(iVar2 == 0 && iVar1 == 0)" (( "(") (binary_expression "iVar2 == 0 && iVar1 == 0" (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) (&& "&&") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar2 = FUN_00019e30(param_1,iVar1,iVar2);" (assignment_expression "iVar2 = FUN_00019e30(param_1,iVar1,iVar2)" (identifier "iVar2") (= "=") (call_expression "FUN_00019e30(param_1,iVar1,iVar2)" (identifier "FUN_00019e30") (argument_list "(param_1,iVar1,iVar2)" (( "(") (identifier "param_1") (, ",") (identifier "iVar1") (, ",") (identifier "iVar2") () ")")))) (; ";")) (if_statement "if (iVar2 != 0) goto LAB_00013af1;" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00013af1;" (goto "goto") (statement_identifier "LAB_00013af1") (; ";"))) (expression_statement "iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);" (assignment_expression "iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0)" (identifier "iVar2") (= "=") (call_expression "FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0)" (identifier "FUN_00019e30") (argument_list "(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4)" (* "*") (cast_expression "(undefined4 *)(uVar3 + 0x78 + iVar4 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar3 + 0x78 + iVar4 * 4)" (( "(") (binary_expression "uVar3 + 0x78 + iVar4 * 4" (binary_expression "uVar3 + 0x78" (identifier "uVar3") (+ "+") (number_literal "0x78")) (+ "+") (binary_expression "iVar4 * 4" (identifier "iVar4") (* "*") (number_literal "4"))) () ")")))) (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar2 != 0) goto LAB_00013af1;" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00013af1;" (goto "goto") (statement_identifier "LAB_00013af1") (; ";"))) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar4 != 10)" (( "(") (binary_expression "iVar4 != 10" (identifier "iVar4") (!= "!=") (number_literal "10")) () ")")) (; ";")) (expression_statement "uVar3 = uVar3 + 0xfc;" (assignment_expression "uVar3 = uVar3 + 0xfc" (identifier "uVar3") (= "=") (binary_expression "uVar3 + 0xfc" (identifier "uVar3") (+ "+") (number_literal "0xfc"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar3 < DAT_0002e528)" (( "(") (binary_expression "uVar3 < DAT_0002e528" (identifier "uVar3") (< "<") (identifier "DAT_0002e528")) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_00013af1:\n  perror(param_2);" (statement_identifier "LAB_00013af1") (: ":") (expression_statement "perror(param_2);" (call_expression "perror(param_2)" (identifier "perror") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))) (; ";"))) (expression_statement "FUN_0001adb0(1);" (call_expression "FUN_0001adb0(1)" (identifier "FUN_0001adb0") (argument_list "(1)" (( "(") (number_literal "1") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void function_1(type_1 *ofp,char *filename)

{
  int var_7;
  int var_1;
  int var_6;
  type_2 *var_2;
  type_3 var_3;
  
  var_3 = 0;
  if (symtab.base < symtab.limit) {
    var_3 = 0;
    var_2 = symtab.base;
    do {
      var_1 = 0;
      do {
        if (*(int *)((int)var_2->bb_addr + var_1 * 8 + 4) == 0 && (int)var_2->bb_addr[var_1] == 0)
        goto LAB_00013a3f;
        var_1 = var_1 + 1;
      } while (var_1 != 10);
      var_1 = 10;
LAB_00013a3f:
      var_2 = var_2 + 1;
      var_3 = var_3 + var_1;
    } while (var_2 < symtab.limit);
  }
  var_1 = var_4(ofp,2);
  if (var_1 == 0) {
    var_1 = var_5(ofp,var_3);
    if (var_1 == 0) {
      var_2 = symtab.base;
      if (symtab.base < symtab.limit) {
        do {
          var_1 = 0;
          do {
            var_6 = *(int *)((int)var_2->bb_addr + var_1 * 8 + 4);
            var_7 = (int)var_2->bb_addr[var_1];
            if (var_6 == 0 && var_7 == 0) break;
            var_6 = var_8(ofp,var_9(var_6,var_7));
            if (var_6 != 0) goto LAB_00013af1;
            var_6 = var_8(ofp,(type_4)var_2->bb_calls[var_1]);
            if (var_6 != 0) goto LAB_00013af1;
            var_1 = var_1 + 1;
          } while (var_1 != 10);
          var_2 = var_2 + 1;
        } while (var_2 < symtab.limit);
      }
      return;
    }
  }
LAB_00013af1:
  var_10(filename);
                    /* WARNING: Subroutine does not return */
  var_11(1);
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))))) 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: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (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 (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (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: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (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 (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))))) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (return_statement))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void MASKED(undefined4 param_1,char *param_2)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  
  iVar4 = 0;
  if (DAT_0002e524 < DAT_0002e528) {
    iVar4 = 0;
    uVar3 = DAT_0002e524;
    do {
      iVar2 = 0;
      do {
        if (*(int *)(uVar3 + 0x2c + iVar2 * 8) == 0 && *(int *)(uVar3 + 0x28 + iVar2 * 8) == 0)
        goto LAB_00013a3f;
        iVar2 = iVar2 + 1;
      } while (iVar2 != 10);
      iVar2 = 10;
LAB_00013a3f:
      uVar3 = uVar3 + 0xfc;
      iVar4 = iVar4 + iVar2;
    } while (uVar3 < DAT_0002e528);
  }
  iVar2 = FUN_00019ea0(param_1,2);
  if (iVar2 == 0) {
    iVar4 = FUN_00019de0(param_1,iVar4);
    if (iVar4 == 0) {
      uVar3 = DAT_0002e524;
      if (DAT_0002e524 < DAT_0002e528) {
        do {
          iVar4 = 0;
          do {
            iVar2 = *(int *)(uVar3 + 0x2c + iVar4 * 8);
            iVar1 = *(int *)(uVar3 + 0x28 + iVar4 * 8);
            if (iVar2 == 0 && iVar1 == 0) break;
            iVar2 = FUN_00019e30(param_1,iVar1,iVar2);
            if (iVar2 != 0) goto LAB_00013af1;
            iVar2 = FUN_00019e30(param_1,*(undefined4 *)(uVar3 + 0x78 + iVar4 * 4),0);
            if (iVar2 != 0) goto LAB_00013af1;
            iVar4 = iVar4 + 1;
          } while (iVar4 != 10);
          uVar3 = uVar3 + 0xfc;
        } while (uVar3 < DAT_0002e528);
      }
      return;
    }
  }
LAB_00013af1:
  perror(param_2);
                    /* WARNING: Subroutine does not return */
  FUN_0001adb0(1);
}

