
void cg_write_arcs(FILE *ofp,char *filename)

{
  int iVar1;
  arc *paVar2;
  Sym *pSVar3;
  
  pSVar3 = symtab.base;
  if (symtab.base < symtab.limit) {
    do {
      for (paVar2 = (pSVar3->cg).children; paVar2 != (arc *)0x0; paVar2 = paVar2->next_child) {
        while( true ) {
          iVar1 = gmon_io_write_8(ofp,1);
          if ((((iVar1 != 0) || (iVar1 = gmon_io_write_vma(ofp,paVar2->parent->addr), iVar1 != 0))
              || (iVar1 = gmon_io_write_vma(ofp,paVar2->child->addr), iVar1 != 0)) ||
             (iVar1 = gmon_io_write_32(ofp,(uint)paVar2->count), iVar1 != 0)) {
            perror(filename);
                    /* WARNING: Subroutine does not return */
            done(1);
          }
          if (((byte)debug_level & 0x40) != 0) break;
          paVar2 = paVar2->next_child;
          if (paVar2 == (arc *)0x0) goto LAB_0010434b;
        }
        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",paVar2->parent->addr,
               paVar2->child->addr,paVar2->count);
      }
LAB_0010434b:
      pSVar3 = pSVar3 + 1;
    } while (pSVar3 < symtab.limit);
  }
  return;
}



void FUN_00104290(undefined8 param_1,char *param_2)

{
  int iVar1;
  undefined8 *puVar2;
  ulong uVar3;
  
  uVar3 = DAT_00119b38;
  if (DAT_00119b38 < DAT_00119b40) {
    do {
      for (puVar2 = *(undefined8 **)(uVar3 + 0x150); puVar2 != (undefined8 *)0x0;
          puVar2 = (undefined8 *)puVar2[6]) {
        while( true ) {
          iVar1 = FUN_001096f0(param_1,1);
          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))
              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||
             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {
            perror(param_2);
                    /* WARNING: Subroutine does not return */
            FUN_0010a4c0(1);
          }
          if (((byte)DAT_001195e4 & 0x40) != 0) break;
          puVar2 = (undefined8 *)puVar2[6];
          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;
        }
        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,
               *(undefined8 *)puVar2[1],puVar2[2]);
      }
LAB_0010434b:
      uVar3 = uVar3 + 0x158;
    } while (uVar3 < DAT_00119b40);
  }
  return;
}


PUSH R14
PUSH R13
MOV R13,qword ptr [0x00119b38]
CMP R13,qword ptr [0x00119b40]
PUSH R12
PUSH RBP
PUSH RBX
JNC 0x0010435f
MOV R14,RSI
MOV RBP,RDI
LEA R12,[0x110260]
NOP dword ptr [RAX]
MOV RBX,qword ptr [R13 + 0x150]
TEST RBX,RBX
JNZ 0x001042d9
JMP 0x0010434b
MOV RBX,qword ptr [RBX + 0x30]
TEST RBX,RBX
JZ 0x0010434b
MOV ESI,0x1
MOV RDI,RBP
CALL 0x001096f0
TEST EAX,EAX
JNZ 0x00104368
MOV RAX,qword ptr [RBX]
MOV RDI,RBP
MOV RSI,qword ptr [RAX]
CALL 0x00109680
TEST EAX,EAX
JNZ 0x00104368
MOV RAX,qword ptr [RBX + 0x8]
MOV RDI,RBP
MOV RSI,qword ptr [RAX]
CALL 0x00109680
TEST EAX,EAX
JNZ 0x00104368
MOV ESI,dword ptr [RBX + 0x10]
MOV RDI,RBP
CALL 0x00109630
TEST EAX,EAX
JNZ 0x00104368
TEST byte ptr [0x001195e4],0x40
JZ 0x001042d0
MOV RAX,qword ptr [RBX]
MOV RDX,qword ptr [RBX + 0x8]
MOV RDI,R12
MOV RCX,qword ptr [RBX + 0x10]
MOV RSI,qword ptr [RAX]
MOV RDX,qword ptr [RDX]
XOR EAX,EAX
CALL 0x001021c0
MOV RBX,qword ptr [RBX + 0x30]
TEST RBX,RBX
JNZ 0x001042d9
ADD R13,0x158
CMP qword ptr [0x00119b40],R13
JA 0x001042c0
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
MOV RDI,R14
CALL 0x00102400
MOV EDI,0x1
CALL 0x0010a4c0
(translation_unit "void FUN_00104290(undefined8 param_1,char *param_2)\n\n{\n  int iVar1;\n  undefined8 *puVar2;\n  ulong uVar3;\n  \n  uVar3 = DAT_00119b38;\n  if (DAT_00119b38 < DAT_00119b40) {\n    do {\n      for (puVar2 = *(undefined8 **)(uVar3 + 0x150); puVar2 != (undefined8 *)0x0;\n          puVar2 = (undefined8 *)puVar2[6]) {\n        while( true ) {\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    /* WARNING: Subroutine does not return */\n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2]);\n      }\nLAB_0010434b:\n      uVar3 = uVar3 + 0x158;\n    } while (uVar3 < DAT_00119b40);\n  }\n  return;\n}\n\n" (function_definition "void FUN_00104290(undefined8 param_1,char *param_2)\n\n{\n  int iVar1;\n  undefined8 *puVar2;\n  ulong uVar3;\n  \n  uVar3 = DAT_00119b38;\n  if (DAT_00119b38 < DAT_00119b40) {\n    do {\n      for (puVar2 = *(undefined8 **)(uVar3 + 0x150); puVar2 != (undefined8 *)0x0;\n          puVar2 = (undefined8 *)puVar2[6]) {\n        while( true ) {\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    /* WARNING: Subroutine does not return */\n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2]);\n      }\nLAB_0010434b:\n      uVar3 = uVar3 + 0x158;\n    } while (uVar3 < DAT_00119b40);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00104290(undefined8 param_1,char *param_2)" identifier (parameter_list "(undefined8 param_1,char *param_2)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  undefined8 *puVar2;\n  ulong uVar3;\n  \n  uVar3 = DAT_00119b38;\n  if (DAT_00119b38 < DAT_00119b40) {\n    do {\n      for (puVar2 = *(undefined8 **)(uVar3 + 0x150); puVar2 != (undefined8 *)0x0;\n          puVar2 = (undefined8 *)puVar2[6]) {\n        while( true ) {\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    /* WARNING: Subroutine does not return */\n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2]);\n      }\nLAB_0010434b:\n      uVar3 = uVar3 + 0x158;\n    } while (uVar3 < DAT_00119b40);\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "ulong uVar3;" type_identifier identifier ;) (expression_statement "uVar3 = DAT_00119b38;" (assignment_expression "uVar3 = DAT_00119b38" identifier = identifier) ;) (if_statement "if (DAT_00119b38 < DAT_00119b40) {\n    do {\n      for (puVar2 = *(undefined8 **)(uVar3 + 0x150); puVar2 != (undefined8 *)0x0;\n          puVar2 = (undefined8 *)puVar2[6]) {\n        while( true ) {\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    /* WARNING: Subroutine does not return */\n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2]);\n      }\nLAB_0010434b:\n      uVar3 = uVar3 + 0x158;\n    } while (uVar3 < DAT_00119b40);\n  }" if (parenthesized_expression "(DAT_00119b38 < DAT_00119b40)" ( (binary_expression "DAT_00119b38 < DAT_00119b40" identifier < identifier) )) (compound_statement "{\n    do {\n      for (puVar2 = *(undefined8 **)(uVar3 + 0x150); puVar2 != (undefined8 *)0x0;\n          puVar2 = (undefined8 *)puVar2[6]) {\n        while( true ) {\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    /* WARNING: Subroutine does not return */\n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2]);\n      }\nLAB_0010434b:\n      uVar3 = uVar3 + 0x158;\n    } while (uVar3 < DAT_00119b40);\n  }" { (do_statement "do {\n      for (puVar2 = *(undefined8 **)(uVar3 + 0x150); puVar2 != (undefined8 *)0x0;\n          puVar2 = (undefined8 *)puVar2[6]) {\n        while( true ) {\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    /* WARNING: Subroutine does not return */\n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2]);\n      }\nLAB_0010434b:\n      uVar3 = uVar3 + 0x158;\n    } while (uVar3 < DAT_00119b40);" do (compound_statement "{\n      for (puVar2 = *(undefined8 **)(uVar3 + 0x150); puVar2 != (undefined8 *)0x0;\n          puVar2 = (undefined8 *)puVar2[6]) {\n        while( true ) {\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    /* WARNING: Subroutine does not return */\n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2]);\n      }\nLAB_0010434b:\n      uVar3 = uVar3 + 0x158;\n    }" { (for_statement "for (puVar2 = *(undefined8 **)(uVar3 + 0x150); puVar2 != (undefined8 *)0x0;\n          puVar2 = (undefined8 *)puVar2[6]) {\n        while( true ) {\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    /* WARNING: Subroutine does not return */\n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2]);\n      }" for ( (assignment_expression "puVar2 = *(undefined8 **)(uVar3 + 0x150)" identifier = (pointer_expression "*(undefined8 **)(uVar3 + 0x150)" * (cast_expression "(undefined8 **)(uVar3 + 0x150)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar3 + 0x150)" ( (binary_expression "uVar3 + 0x150" identifier + number_literal) ))))) ; (binary_expression "puVar2 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "puVar2 = (undefined8 *)puVar2[6]" identifier = (cast_expression "(undefined8 *)puVar2[6]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[6]" identifier [ number_literal ]))) ) (compound_statement "{\n        while( true ) {\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    /* WARNING: Subroutine does not return */\n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2]);\n      }" { (while_statement "while( true ) {\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    /* WARNING: Subroutine does not return */\n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    /* WARNING: Subroutine does not return */\n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }" { (expression_statement "iVar1 = FUN_001096f0(param_1,1);" (assignment_expression "iVar1 = FUN_001096f0(param_1,1)" identifier = (call_expression "FUN_001096f0(param_1,1)" identifier (argument_list "(param_1,1)" ( identifier , number_literal )))) ;) (if_statement "if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    /* WARNING: Subroutine does not return */\n            FUN_0010a4c0(1);\n          }" if (parenthesized_expression "((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0))" ( (binary_expression "(((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)" (parenthesized_expression "(((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0))" ( (binary_expression "((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)" (parenthesized_expression "((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))" ( (binary_expression "(iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0)" (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0)" ( (comma_expression "iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0" (assignment_expression "iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2)" identifier = (call_expression "FUN_00109680(param_1,*(undefined8 *)*puVar2)" identifier (argument_list "(param_1,*(undefined8 *)*puVar2)" ( identifier , (pointer_expression "*(undefined8 *)*puVar2" * (cast_expression "(undefined8 *)*puVar2" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) )))) , (binary_expression "iVar1 != 0" identifier != number_literal)) ))) )) || (parenthesized_expression "(iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)" ( (comma_expression "iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0" (assignment_expression "iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1])" identifier = (call_expression "FUN_00109680(param_1,*(undefined8 *)puVar2[1])" identifier (argument_list "(param_1,*(undefined8 *)puVar2[1])" ( identifier , (pointer_expression "*(undefined8 *)puVar2[1]" * (cast_expression "(undefined8 *)puVar2[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[1]" identifier [ number_literal ]))) )))) , (binary_expression "iVar1 != 0" identifier != number_literal)) ))) )) || (parenthesized_expression "(iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)" ( (comma_expression "iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0" (assignment_expression "iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2))" identifier = (call_expression "FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2))" identifier (argument_list "(param_1,*(undefined4 *)(puVar2 + 2))" ( identifier , (pointer_expression "*(undefined4 *)(puVar2 + 2)" * (cast_expression "(undefined4 *)(puVar2 + 2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 2)" ( (binary_expression "puVar2 + 2" identifier + number_literal) )))) )))) , (binary_expression "iVar1 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n            perror(param_2);\n                    /* WARNING: Subroutine does not return */\n            FUN_0010a4c0(1);\n          }" { (expression_statement "perror(param_2);" (call_expression "perror(param_2)" identifier (argument_list "(param_2)" ( identifier ))) ;) comment (expression_statement "FUN_0010a4c0(1);" (call_expression "FUN_0010a4c0(1)" identifier (argument_list "(1)" ( number_literal ))) ;) })) (if_statement "if (((byte)DAT_001195e4 & 0x40) != 0) break;" if (parenthesized_expression "(((byte)DAT_001195e4 & 0x40) != 0)" ( (binary_expression "((byte)DAT_001195e4 & 0x40) != 0" (parenthesized_expression "((byte)DAT_001195e4 & 0x40)" ( (binary_expression "(byte)DAT_001195e4 & 0x40" (cast_expression "(byte)DAT_001195e4" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar2 = (undefined8 *)puVar2[6];" (assignment_expression "puVar2 = (undefined8 *)puVar2[6]" identifier = (cast_expression "(undefined8 *)puVar2[6]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[6]" identifier [ number_literal ]))) ;) (if_statement "if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;" if (parenthesized_expression "(puVar2 == (undefined8 *)0x0)" ( (binary_expression "puVar2 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0010434b;" goto statement_identifier ;)) })) (expression_statement "printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2]);" (call_expression "printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2])" identifier (argument_list "("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2])" ( (string_literal ""[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined8 *)*puVar2" * (cast_expression "(undefined8 *)*puVar2" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) , (pointer_expression "*(undefined8 *)puVar2[1]" * (cast_expression "(undefined8 *)puVar2[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[1]" identifier [ number_literal ]))) , (subscript_expression "puVar2[2]" identifier [ number_literal ]) ))) ;) })) (labeled_statement "LAB_0010434b:\n      uVar3 = uVar3 + 0x158;" statement_identifier : (expression_statement "uVar3 = uVar3 + 0x158;" (assignment_expression "uVar3 = uVar3 + 0x158" identifier = (binary_expression "uVar3 + 0x158" identifier + number_literal)) ;)) }) while (parenthesized_expression "(uVar3 < DAT_00119b40)" ( (binary_expression "uVar3 < DAT_00119b40" identifier < identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void cg_write_arcs(FILE *ofp,char *filename)\n\n{\n  int iVar1;\n  arc *paVar2;\n  Sym *pSVar3;\n  \n  pSVar3 = symtab.base;\n  if (symtab.base < symtab.limit) {\n    do {\n      for (paVar2 = (pSVar3->cg).children; paVar2 != (arc *)0x0; paVar2 = paVar2->next_child) {\n        while( true ) {\n          iVar1 = gmon_io_write_8(ofp,1);\n          if ((((iVar1 != 0) || (iVar1 = gmon_io_write_vma(ofp,paVar2->parent->addr), iVar1 != 0))\n              || (iVar1 = gmon_io_write_vma(ofp,paVar2->child->addr), iVar1 != 0)) ||\n             (iVar1 = gmon_io_write_32(ofp,(uint)paVar2->count), iVar1 != 0)) {\n            perror(filename);\n                    /* WARNING: Subroutine does not return */\n            done(1);\n          }\n          if (((byte)debug_level & 0x40) != 0) break;\n          paVar2 = paVar2->next_child;\n          if (paVar2 == (arc *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",paVar2->parent->addr,\n               paVar2->child->addr,paVar2->count);\n      }\nLAB_0010434b:\n      pSVar3 = pSVar3 + 1;\n    } while (pSVar3 < symtab.limit);\n  }\n  return;\n}\n\n" (function_definition "void cg_write_arcs(FILE *ofp,char *filename)\n\n{\n  int iVar1;\n  arc *paVar2;\n  Sym *pSVar3;\n  \n  pSVar3 = symtab.base;\n  if (symtab.base < symtab.limit) {\n    do {\n      for (paVar2 = (pSVar3->cg).children; paVar2 != (arc *)0x0; paVar2 = paVar2->next_child) {\n        while( true ) {\n          iVar1 = gmon_io_write_8(ofp,1);\n          if ((((iVar1 != 0) || (iVar1 = gmon_io_write_vma(ofp,paVar2->parent->addr), iVar1 != 0))\n              || (iVar1 = gmon_io_write_vma(ofp,paVar2->child->addr), iVar1 != 0)) ||\n             (iVar1 = gmon_io_write_32(ofp,(uint)paVar2->count), iVar1 != 0)) {\n            perror(filename);\n                    /* WARNING: Subroutine does not return */\n            done(1);\n          }\n          if (((byte)debug_level & 0x40) != 0) break;\n          paVar2 = paVar2->next_child;\n          if (paVar2 == (arc *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",paVar2->parent->addr,\n               paVar2->child->addr,paVar2->count);\n      }\nLAB_0010434b:\n      pSVar3 = pSVar3 + 1;\n    } while (pSVar3 < symtab.limit);\n  }\n  return;\n}" primitive_type (function_declarator "cg_write_arcs(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  arc *paVar2;\n  Sym *pSVar3;\n  \n  pSVar3 = symtab.base;\n  if (symtab.base < symtab.limit) {\n    do {\n      for (paVar2 = (pSVar3->cg).children; paVar2 != (arc *)0x0; paVar2 = paVar2->next_child) {\n        while( true ) {\n          iVar1 = gmon_io_write_8(ofp,1);\n          if ((((iVar1 != 0) || (iVar1 = gmon_io_write_vma(ofp,paVar2->parent->addr), iVar1 != 0))\n              || (iVar1 = gmon_io_write_vma(ofp,paVar2->child->addr), iVar1 != 0)) ||\n             (iVar1 = gmon_io_write_32(ofp,(uint)paVar2->count), iVar1 != 0)) {\n            perror(filename);\n                    /* WARNING: Subroutine does not return */\n            done(1);\n          }\n          if (((byte)debug_level & 0x40) != 0) break;\n          paVar2 = paVar2->next_child;\n          if (paVar2 == (arc *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",paVar2->parent->addr,\n               paVar2->child->addr,paVar2->count);\n      }\nLAB_0010434b:\n      pSVar3 = pSVar3 + 1;\n    } while (pSVar3 < symtab.limit);\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "arc *paVar2;" type_identifier (pointer_declarator "*paVar2" * identifier) ;) (declaration "Sym *pSVar3;" type_identifier (pointer_declarator "*pSVar3" * identifier) ;) (expression_statement "pSVar3 = symtab.base;" (assignment_expression "pSVar3 = symtab.base" identifier = (field_expression "symtab.base" identifier . field_identifier)) ;) (if_statement "if (symtab.base < symtab.limit) {\n    do {\n      for (paVar2 = (pSVar3->cg).children; paVar2 != (arc *)0x0; paVar2 = paVar2->next_child) {\n        while( true ) {\n          iVar1 = gmon_io_write_8(ofp,1);\n          if ((((iVar1 != 0) || (iVar1 = gmon_io_write_vma(ofp,paVar2->parent->addr), iVar1 != 0))\n              || (iVar1 = gmon_io_write_vma(ofp,paVar2->child->addr), iVar1 != 0)) ||\n             (iVar1 = gmon_io_write_32(ofp,(uint)paVar2->count), iVar1 != 0)) {\n            perror(filename);\n                    /* WARNING: Subroutine does not return */\n            done(1);\n          }\n          if (((byte)debug_level & 0x40) != 0) break;\n          paVar2 = paVar2->next_child;\n          if (paVar2 == (arc *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",paVar2->parent->addr,\n               paVar2->child->addr,paVar2->count);\n      }\nLAB_0010434b:\n      pSVar3 = pSVar3 + 1;\n    } while (pSVar3 < 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      for (paVar2 = (pSVar3->cg).children; paVar2 != (arc *)0x0; paVar2 = paVar2->next_child) {\n        while( true ) {\n          iVar1 = gmon_io_write_8(ofp,1);\n          if ((((iVar1 != 0) || (iVar1 = gmon_io_write_vma(ofp,paVar2->parent->addr), iVar1 != 0))\n              || (iVar1 = gmon_io_write_vma(ofp,paVar2->child->addr), iVar1 != 0)) ||\n             (iVar1 = gmon_io_write_32(ofp,(uint)paVar2->count), iVar1 != 0)) {\n            perror(filename);\n                    /* WARNING: Subroutine does not return */\n            done(1);\n          }\n          if (((byte)debug_level & 0x40) != 0) break;\n          paVar2 = paVar2->next_child;\n          if (paVar2 == (arc *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",paVar2->parent->addr,\n               paVar2->child->addr,paVar2->count);\n      }\nLAB_0010434b:\n      pSVar3 = pSVar3 + 1;\n    } while (pSVar3 < symtab.limit);\n  }" { (do_statement "do {\n      for (paVar2 = (pSVar3->cg).children; paVar2 != (arc *)0x0; paVar2 = paVar2->next_child) {\n        while( true ) {\n          iVar1 = gmon_io_write_8(ofp,1);\n          if ((((iVar1 != 0) || (iVar1 = gmon_io_write_vma(ofp,paVar2->parent->addr), iVar1 != 0))\n              || (iVar1 = gmon_io_write_vma(ofp,paVar2->child->addr), iVar1 != 0)) ||\n             (iVar1 = gmon_io_write_32(ofp,(uint)paVar2->count), iVar1 != 0)) {\n            perror(filename);\n                    /* WARNING: Subroutine does not return */\n            done(1);\n          }\n          if (((byte)debug_level & 0x40) != 0) break;\n          paVar2 = paVar2->next_child;\n          if (paVar2 == (arc *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",paVar2->parent->addr,\n               paVar2->child->addr,paVar2->count);\n      }\nLAB_0010434b:\n      pSVar3 = pSVar3 + 1;\n    } while (pSVar3 < symtab.limit);" do (compound_statement "{\n      for (paVar2 = (pSVar3->cg).children; paVar2 != (arc *)0x0; paVar2 = paVar2->next_child) {\n        while( true ) {\n          iVar1 = gmon_io_write_8(ofp,1);\n          if ((((iVar1 != 0) || (iVar1 = gmon_io_write_vma(ofp,paVar2->parent->addr), iVar1 != 0))\n              || (iVar1 = gmon_io_write_vma(ofp,paVar2->child->addr), iVar1 != 0)) ||\n             (iVar1 = gmon_io_write_32(ofp,(uint)paVar2->count), iVar1 != 0)) {\n            perror(filename);\n                    /* WARNING: Subroutine does not return */\n            done(1);\n          }\n          if (((byte)debug_level & 0x40) != 0) break;\n          paVar2 = paVar2->next_child;\n          if (paVar2 == (arc *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",paVar2->parent->addr,\n               paVar2->child->addr,paVar2->count);\n      }\nLAB_0010434b:\n      pSVar3 = pSVar3 + 1;\n    }" { (for_statement "for (paVar2 = (pSVar3->cg).children; paVar2 != (arc *)0x0; paVar2 = paVar2->next_child) {\n        while( true ) {\n          iVar1 = gmon_io_write_8(ofp,1);\n          if ((((iVar1 != 0) || (iVar1 = gmon_io_write_vma(ofp,paVar2->parent->addr), iVar1 != 0))\n              || (iVar1 = gmon_io_write_vma(ofp,paVar2->child->addr), iVar1 != 0)) ||\n             (iVar1 = gmon_io_write_32(ofp,(uint)paVar2->count), iVar1 != 0)) {\n            perror(filename);\n                    /* WARNING: Subroutine does not return */\n            done(1);\n          }\n          if (((byte)debug_level & 0x40) != 0) break;\n          paVar2 = paVar2->next_child;\n          if (paVar2 == (arc *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",paVar2->parent->addr,\n               paVar2->child->addr,paVar2->count);\n      }" for ( (assignment_expression "paVar2 = (pSVar3->cg).children" identifier = (field_expression "(pSVar3->cg).children" (parenthesized_expression "(pSVar3->cg)" ( (field_expression "pSVar3->cg" identifier -> field_identifier) )) . field_identifier)) ; (binary_expression "paVar2 != (arc *)0x0" identifier != (cast_expression "(arc *)0x0" ( (type_descriptor "arc *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "paVar2 = paVar2->next_child" identifier = (field_expression "paVar2->next_child" identifier -> field_identifier)) ) (compound_statement "{\n        while( true ) {\n          iVar1 = gmon_io_write_8(ofp,1);\n          if ((((iVar1 != 0) || (iVar1 = gmon_io_write_vma(ofp,paVar2->parent->addr), iVar1 != 0))\n              || (iVar1 = gmon_io_write_vma(ofp,paVar2->child->addr), iVar1 != 0)) ||\n             (iVar1 = gmon_io_write_32(ofp,(uint)paVar2->count), iVar1 != 0)) {\n            perror(filename);\n                    /* WARNING: Subroutine does not return */\n            done(1);\n          }\n          if (((byte)debug_level & 0x40) != 0) break;\n          paVar2 = paVar2->next_child;\n          if (paVar2 == (arc *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",paVar2->parent->addr,\n               paVar2->child->addr,paVar2->count);\n      }" { (while_statement "while( true ) {\n          iVar1 = gmon_io_write_8(ofp,1);\n          if ((((iVar1 != 0) || (iVar1 = gmon_io_write_vma(ofp,paVar2->parent->addr), iVar1 != 0))\n              || (iVar1 = gmon_io_write_vma(ofp,paVar2->child->addr), iVar1 != 0)) ||\n             (iVar1 = gmon_io_write_32(ofp,(uint)paVar2->count), iVar1 != 0)) {\n            perror(filename);\n                    /* WARNING: Subroutine does not return */\n            done(1);\n          }\n          if (((byte)debug_level & 0x40) != 0) break;\n          paVar2 = paVar2->next_child;\n          if (paVar2 == (arc *)0x0) goto LAB_0010434b;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          iVar1 = gmon_io_write_8(ofp,1);\n          if ((((iVar1 != 0) || (iVar1 = gmon_io_write_vma(ofp,paVar2->parent->addr), iVar1 != 0))\n              || (iVar1 = gmon_io_write_vma(ofp,paVar2->child->addr), iVar1 != 0)) ||\n             (iVar1 = gmon_io_write_32(ofp,(uint)paVar2->count), iVar1 != 0)) {\n            perror(filename);\n                    /* WARNING: Subroutine does not return */\n            done(1);\n          }\n          if (((byte)debug_level & 0x40) != 0) break;\n          paVar2 = paVar2->next_child;\n          if (paVar2 == (arc *)0x0) goto LAB_0010434b;\n        }" { (expression_statement "iVar1 = gmon_io_write_8(ofp,1);" (assignment_expression "iVar1 = gmon_io_write_8(ofp,1)" identifier = (call_expression "gmon_io_write_8(ofp,1)" identifier (argument_list "(ofp,1)" ( identifier , number_literal )))) ;) (if_statement "if ((((iVar1 != 0) || (iVar1 = gmon_io_write_vma(ofp,paVar2->parent->addr), iVar1 != 0))\n              || (iVar1 = gmon_io_write_vma(ofp,paVar2->child->addr), iVar1 != 0)) ||\n             (iVar1 = gmon_io_write_32(ofp,(uint)paVar2->count), iVar1 != 0)) {\n            perror(filename);\n                    /* WARNING: Subroutine does not return */\n            done(1);\n          }" if (parenthesized_expression "((((iVar1 != 0) || (iVar1 = gmon_io_write_vma(ofp,paVar2->parent->addr), iVar1 != 0))\n              || (iVar1 = gmon_io_write_vma(ofp,paVar2->child->addr), iVar1 != 0)) ||\n             (iVar1 = gmon_io_write_32(ofp,(uint)paVar2->count), iVar1 != 0))" ( (binary_expression "(((iVar1 != 0) || (iVar1 = gmon_io_write_vma(ofp,paVar2->parent->addr), iVar1 != 0))\n              || (iVar1 = gmon_io_write_vma(ofp,paVar2->child->addr), iVar1 != 0)) ||\n             (iVar1 = gmon_io_write_32(ofp,(uint)paVar2->count), iVar1 != 0)" (parenthesized_expression "(((iVar1 != 0) || (iVar1 = gmon_io_write_vma(ofp,paVar2->parent->addr), iVar1 != 0))\n              || (iVar1 = gmon_io_write_vma(ofp,paVar2->child->addr), iVar1 != 0))" ( (binary_expression "((iVar1 != 0) || (iVar1 = gmon_io_write_vma(ofp,paVar2->parent->addr), iVar1 != 0))\n              || (iVar1 = gmon_io_write_vma(ofp,paVar2->child->addr), iVar1 != 0)" (parenthesized_expression "((iVar1 != 0) || (iVar1 = gmon_io_write_vma(ofp,paVar2->parent->addr), iVar1 != 0))" ( (binary_expression "(iVar1 != 0) || (iVar1 = gmon_io_write_vma(ofp,paVar2->parent->addr), iVar1 != 0)" (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar1 = gmon_io_write_vma(ofp,paVar2->parent->addr), iVar1 != 0)" ( (comma_expression "iVar1 = gmon_io_write_vma(ofp,paVar2->parent->addr), iVar1 != 0" (assignment_expression "iVar1 = gmon_io_write_vma(ofp,paVar2->parent->addr)" identifier = (call_expression "gmon_io_write_vma(ofp,paVar2->parent->addr)" identifier (argument_list "(ofp,paVar2->parent->addr)" ( identifier , (field_expression "paVar2->parent->addr" (field_expression "paVar2->parent" identifier -> field_identifier) -> field_identifier) )))) , (binary_expression "iVar1 != 0" identifier != number_literal)) ))) )) || (parenthesized_expression "(iVar1 = gmon_io_write_vma(ofp,paVar2->child->addr), iVar1 != 0)" ( (comma_expression "iVar1 = gmon_io_write_vma(ofp,paVar2->child->addr), iVar1 != 0" (assignment_expression "iVar1 = gmon_io_write_vma(ofp,paVar2->child->addr)" identifier = (call_expression "gmon_io_write_vma(ofp,paVar2->child->addr)" identifier (argument_list "(ofp,paVar2->child->addr)" ( identifier , (field_expression "paVar2->child->addr" (field_expression "paVar2->child" identifier -> field_identifier) -> field_identifier) )))) , (binary_expression "iVar1 != 0" identifier != number_literal)) ))) )) || (parenthesized_expression "(iVar1 = gmon_io_write_32(ofp,(uint)paVar2->count), iVar1 != 0)" ( (comma_expression "iVar1 = gmon_io_write_32(ofp,(uint)paVar2->count), iVar1 != 0" (assignment_expression "iVar1 = gmon_io_write_32(ofp,(uint)paVar2->count)" identifier = (call_expression "gmon_io_write_32(ofp,(uint)paVar2->count)" identifier (argument_list "(ofp,(uint)paVar2->count)" ( identifier , (cast_expression "(uint)paVar2->count" ( (type_descriptor "uint" type_identifier) ) (field_expression "paVar2->count" identifier -> field_identifier)) )))) , (binary_expression "iVar1 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n            perror(filename);\n                    /* WARNING: Subroutine does not return */\n            done(1);\n          }" { (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 ))) ;) })) (if_statement "if (((byte)debug_level & 0x40) != 0) break;" if (parenthesized_expression "(((byte)debug_level & 0x40) != 0)" ( (binary_expression "((byte)debug_level & 0x40) != 0" (parenthesized_expression "((byte)debug_level & 0x40)" ( (binary_expression "(byte)debug_level & 0x40" (cast_expression "(byte)debug_level" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "paVar2 = paVar2->next_child;" (assignment_expression "paVar2 = paVar2->next_child" identifier = (field_expression "paVar2->next_child" identifier -> field_identifier)) ;) (if_statement "if (paVar2 == (arc *)0x0) goto LAB_0010434b;" if (parenthesized_expression "(paVar2 == (arc *)0x0)" ( (binary_expression "paVar2 == (arc *)0x0" identifier == (cast_expression "(arc *)0x0" ( (type_descriptor "arc *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0010434b;" goto statement_identifier ;)) })) (expression_statement "printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",paVar2->parent->addr,\n               paVar2->child->addr,paVar2->count);" (call_expression "printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",paVar2->parent->addr,\n               paVar2->child->addr,paVar2->count)" identifier (argument_list "("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",paVar2->parent->addr,\n               paVar2->child->addr,paVar2->count)" ( (string_literal ""[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n"" " string_content escape_sequence ") , (field_expression "paVar2->parent->addr" (field_expression "paVar2->parent" identifier -> field_identifier) -> field_identifier) , (field_expression "paVar2->child->addr" (field_expression "paVar2->child" identifier -> field_identifier) -> field_identifier) , (field_expression "paVar2->count" identifier -> field_identifier) ))) ;) })) (labeled_statement "LAB_0010434b:\n      pSVar3 = pSVar3 + 1;" statement_identifier : (expression_statement "pSVar3 = pSVar3 + 1;" (assignment_expression "pSVar3 = pSVar3 + 1" identifier = (binary_expression "pSVar3 + 1" identifier + number_literal)) ;)) }) while (parenthesized_expression "(pSVar3 < symtab.limit)" ( (binary_expression "pSVar3 < symtab.limit" identifier < (field_expression "symtab.limit" identifier . field_identifier)) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00104290(undefined8 param_1,char *param_2)\n\n{\n  int iVar1;\n  undefined8 *puVar2;\n  ulong uVar3;\n  \n  uVar3 = DAT_00119b38;\n  if (DAT_00119b38 < DAT_00119b40) {\n    do {\n      for (puVar2 = *(undefined8 **)(uVar3 + 0x150); puVar2 != (undefined8 *)0x0;\n          puVar2 = (undefined8 *)puVar2[6]) {\n        while( true ) {\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    \n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2]);\n      }\nLAB_0010434b:\n      uVar3 = uVar3 + 0x158;\n    } while (uVar3 < DAT_00119b40);\n  }\n  return;\n}\n\n" (function_definition "void FUN_00104290(undefined8 param_1,char *param_2)\n\n{\n  int iVar1;\n  undefined8 *puVar2;\n  ulong uVar3;\n  \n  uVar3 = DAT_00119b38;\n  if (DAT_00119b38 < DAT_00119b40) {\n    do {\n      for (puVar2 = *(undefined8 **)(uVar3 + 0x150); puVar2 != (undefined8 *)0x0;\n          puVar2 = (undefined8 *)puVar2[6]) {\n        while( true ) {\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    \n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2]);\n      }\nLAB_0010434b:\n      uVar3 = uVar3 + 0x158;\n    } while (uVar3 < DAT_00119b40);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00104290(undefined8 param_1,char *param_2)" identifier (parameter_list "(undefined8 param_1,char *param_2)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  undefined8 *puVar2;\n  ulong uVar3;\n  \n  uVar3 = DAT_00119b38;\n  if (DAT_00119b38 < DAT_00119b40) {\n    do {\n      for (puVar2 = *(undefined8 **)(uVar3 + 0x150); puVar2 != (undefined8 *)0x0;\n          puVar2 = (undefined8 *)puVar2[6]) {\n        while( true ) {\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    \n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2]);\n      }\nLAB_0010434b:\n      uVar3 = uVar3 + 0x158;\n    } while (uVar3 < DAT_00119b40);\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "ulong uVar3;" type_identifier identifier ;) (expression_statement "uVar3 = DAT_00119b38;" (assignment_expression "uVar3 = DAT_00119b38" identifier = identifier) ;) (if_statement "if (DAT_00119b38 < DAT_00119b40) {\n    do {\n      for (puVar2 = *(undefined8 **)(uVar3 + 0x150); puVar2 != (undefined8 *)0x0;\n          puVar2 = (undefined8 *)puVar2[6]) {\n        while( true ) {\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    \n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2]);\n      }\nLAB_0010434b:\n      uVar3 = uVar3 + 0x158;\n    } while (uVar3 < DAT_00119b40);\n  }" if (parenthesized_expression "(DAT_00119b38 < DAT_00119b40)" ( (binary_expression "DAT_00119b38 < DAT_00119b40" identifier < identifier) )) (compound_statement "{\n    do {\n      for (puVar2 = *(undefined8 **)(uVar3 + 0x150); puVar2 != (undefined8 *)0x0;\n          puVar2 = (undefined8 *)puVar2[6]) {\n        while( true ) {\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    \n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2]);\n      }\nLAB_0010434b:\n      uVar3 = uVar3 + 0x158;\n    } while (uVar3 < DAT_00119b40);\n  }" { (do_statement "do {\n      for (puVar2 = *(undefined8 **)(uVar3 + 0x150); puVar2 != (undefined8 *)0x0;\n          puVar2 = (undefined8 *)puVar2[6]) {\n        while( true ) {\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    \n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2]);\n      }\nLAB_0010434b:\n      uVar3 = uVar3 + 0x158;\n    } while (uVar3 < DAT_00119b40);" do (compound_statement "{\n      for (puVar2 = *(undefined8 **)(uVar3 + 0x150); puVar2 != (undefined8 *)0x0;\n          puVar2 = (undefined8 *)puVar2[6]) {\n        while( true ) {\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    \n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2]);\n      }\nLAB_0010434b:\n      uVar3 = uVar3 + 0x158;\n    }" { (for_statement "for (puVar2 = *(undefined8 **)(uVar3 + 0x150); puVar2 != (undefined8 *)0x0;\n          puVar2 = (undefined8 *)puVar2[6]) {\n        while( true ) {\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    \n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2]);\n      }" for ( (assignment_expression "puVar2 = *(undefined8 **)(uVar3 + 0x150)" identifier = (pointer_expression "*(undefined8 **)(uVar3 + 0x150)" * (cast_expression "(undefined8 **)(uVar3 + 0x150)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar3 + 0x150)" ( (binary_expression "uVar3 + 0x150" identifier + number_literal) ))))) ; (binary_expression "puVar2 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "puVar2 = (undefined8 *)puVar2[6]" identifier = (cast_expression "(undefined8 *)puVar2[6]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[6]" identifier [ number_literal ]))) ) (compound_statement "{\n        while( true ) {\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    \n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2]);\n      }" { (while_statement "while( true ) {\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    \n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    \n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }" { (expression_statement "iVar1 = FUN_001096f0(param_1,1);" (assignment_expression "iVar1 = FUN_001096f0(param_1,1)" identifier = (call_expression "FUN_001096f0(param_1,1)" identifier (argument_list "(param_1,1)" ( identifier , number_literal )))) ;) (if_statement "if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    \n            FUN_0010a4c0(1);\n          }" if (parenthesized_expression "((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0))" ( (binary_expression "(((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)" (parenthesized_expression "(((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0))" ( (binary_expression "((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)" (parenthesized_expression "((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))" ( (binary_expression "(iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0)" (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0)" ( (comma_expression "iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0" (assignment_expression "iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2)" identifier = (call_expression "FUN_00109680(param_1,*(undefined8 *)*puVar2)" identifier (argument_list "(param_1,*(undefined8 *)*puVar2)" ( identifier , (pointer_expression "*(undefined8 *)*puVar2" * (cast_expression "(undefined8 *)*puVar2" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) )))) , (binary_expression "iVar1 != 0" identifier != number_literal)) ))) )) || (parenthesized_expression "(iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)" ( (comma_expression "iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0" (assignment_expression "iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1])" identifier = (call_expression "FUN_00109680(param_1,*(undefined8 *)puVar2[1])" identifier (argument_list "(param_1,*(undefined8 *)puVar2[1])" ( identifier , (pointer_expression "*(undefined8 *)puVar2[1]" * (cast_expression "(undefined8 *)puVar2[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[1]" identifier [ number_literal ]))) )))) , (binary_expression "iVar1 != 0" identifier != number_literal)) ))) )) || (parenthesized_expression "(iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)" ( (comma_expression "iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0" (assignment_expression "iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2))" identifier = (call_expression "FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2))" identifier (argument_list "(param_1,*(undefined4 *)(puVar2 + 2))" ( identifier , (pointer_expression "*(undefined4 *)(puVar2 + 2)" * (cast_expression "(undefined4 *)(puVar2 + 2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 2)" ( (binary_expression "puVar2 + 2" identifier + number_literal) )))) )))) , (binary_expression "iVar1 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n            perror(param_2);\n                    \n            FUN_0010a4c0(1);\n          }" { (expression_statement "perror(param_2);" (call_expression "perror(param_2)" identifier (argument_list "(param_2)" ( identifier ))) ;) (expression_statement "FUN_0010a4c0(1);" (call_expression "FUN_0010a4c0(1)" identifier (argument_list "(1)" ( number_literal ))) ;) })) (if_statement "if (((byte)DAT_001195e4 & 0x40) != 0) break;" if (parenthesized_expression "(((byte)DAT_001195e4 & 0x40) != 0)" ( (binary_expression "((byte)DAT_001195e4 & 0x40) != 0" (parenthesized_expression "((byte)DAT_001195e4 & 0x40)" ( (binary_expression "(byte)DAT_001195e4 & 0x40" (cast_expression "(byte)DAT_001195e4" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar2 = (undefined8 *)puVar2[6];" (assignment_expression "puVar2 = (undefined8 *)puVar2[6]" identifier = (cast_expression "(undefined8 *)puVar2[6]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[6]" identifier [ number_literal ]))) ;) (if_statement "if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;" if (parenthesized_expression "(puVar2 == (undefined8 *)0x0)" ( (binary_expression "puVar2 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0010434b;" goto statement_identifier ;)) })) (expression_statement "printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2]);" (call_expression "printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2])" identifier (argument_list "("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2])" ( (string_literal ""[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined8 *)*puVar2" * (cast_expression "(undefined8 *)*puVar2" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) , (pointer_expression "*(undefined8 *)puVar2[1]" * (cast_expression "(undefined8 *)puVar2[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[1]" identifier [ number_literal ]))) , (subscript_expression "puVar2[2]" identifier [ number_literal ]) ))) ;) })) (labeled_statement "LAB_0010434b:\n      uVar3 = uVar3 + 0x158;" statement_identifier : (expression_statement "uVar3 = uVar3 + 0x158;" (assignment_expression "uVar3 = uVar3 + 0x158" identifier = (binary_expression "uVar3 + 0x158" identifier + number_literal)) ;)) }) while (parenthesized_expression "(uVar3 < DAT_00119b40)" ( (binary_expression "uVar3 < DAT_00119b40" identifier < identifier) )) ;) })) (return_statement "return;" return ;) })))
(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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (for_statement for ( (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ; (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ; (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) )))) , (binary_expression IDENT != LIT)) ))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )))) , (binary_expression IDENT != LIT)) ))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) , (subscript_expression IDENT [ LIT ]) ))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (return_statement return ;) })))
(function_definition "void FUN_00104290(undefined8 param_1,char *param_2)\n\n{\n  int iVar1;\n  undefined8 *puVar2;\n  ulong uVar3;\n  \n  uVar3 = DAT_00119b38;\n  if (DAT_00119b38 < DAT_00119b40) {\n    do {\n      for (puVar2 = *(undefined8 **)(uVar3 + 0x150); puVar2 != (undefined8 *)0x0;\n          puVar2 = (undefined8 *)puVar2[6]) {\n        while( true ) {\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    \n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2]);\n      }\nLAB_0010434b:\n      uVar3 = uVar3 + 0x158;\n    } while (uVar3 < DAT_00119b40);\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00104290(undefined8 param_1,char *param_2)" (identifier "FUN_00104290") (parameter_list "(undefined8 param_1,char *param_2)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) (, ",") (parameter_declaration "char *param_2" (primitive_type "char") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  int iVar1;\n  undefined8 *puVar2;\n  ulong uVar3;\n  \n  uVar3 = DAT_00119b38;\n  if (DAT_00119b38 < DAT_00119b40) {\n    do {\n      for (puVar2 = *(undefined8 **)(uVar3 + 0x150); puVar2 != (undefined8 *)0x0;\n          puVar2 = (undefined8 *)puVar2[6]) {\n        while( true ) {\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    \n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2]);\n      }\nLAB_0010434b:\n      uVar3 = uVar3 + 0x158;\n    } while (uVar3 < DAT_00119b40);\n  }\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "undefined8 *puVar2;" (type_identifier "undefined8") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "ulong uVar3;" (type_identifier "ulong") (identifier "uVar3") (; ";")) (expression_statement "uVar3 = DAT_00119b38;" (assignment_expression "uVar3 = DAT_00119b38" (identifier "uVar3") (= "=") (identifier "DAT_00119b38")) (; ";")) (if_statement "if (DAT_00119b38 < DAT_00119b40) {\n    do {\n      for (puVar2 = *(undefined8 **)(uVar3 + 0x150); puVar2 != (undefined8 *)0x0;\n          puVar2 = (undefined8 *)puVar2[6]) {\n        while( true ) {\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    \n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2]);\n      }\nLAB_0010434b:\n      uVar3 = uVar3 + 0x158;\n    } while (uVar3 < DAT_00119b40);\n  }" (if "if") (parenthesized_expression "(DAT_00119b38 < DAT_00119b40)" (( "(") (binary_expression "DAT_00119b38 < DAT_00119b40" (identifier "DAT_00119b38") (< "<") (identifier "DAT_00119b40")) () ")")) (compound_statement "{\n    do {\n      for (puVar2 = *(undefined8 **)(uVar3 + 0x150); puVar2 != (undefined8 *)0x0;\n          puVar2 = (undefined8 *)puVar2[6]) {\n        while( true ) {\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    \n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2]);\n      }\nLAB_0010434b:\n      uVar3 = uVar3 + 0x158;\n    } while (uVar3 < DAT_00119b40);\n  }" ({ "{") (do_statement "do {\n      for (puVar2 = *(undefined8 **)(uVar3 + 0x150); puVar2 != (undefined8 *)0x0;\n          puVar2 = (undefined8 *)puVar2[6]) {\n        while( true ) {\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    \n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2]);\n      }\nLAB_0010434b:\n      uVar3 = uVar3 + 0x158;\n    } while (uVar3 < DAT_00119b40);" (do "do") (compound_statement "{\n      for (puVar2 = *(undefined8 **)(uVar3 + 0x150); puVar2 != (undefined8 *)0x0;\n          puVar2 = (undefined8 *)puVar2[6]) {\n        while( true ) {\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    \n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2]);\n      }\nLAB_0010434b:\n      uVar3 = uVar3 + 0x158;\n    }" ({ "{") (for_statement "for (puVar2 = *(undefined8 **)(uVar3 + 0x150); puVar2 != (undefined8 *)0x0;\n          puVar2 = (undefined8 *)puVar2[6]) {\n        while( true ) {\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    \n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2]);\n      }" (for "for") (( "(") (assignment_expression "puVar2 = *(undefined8 **)(uVar3 + 0x150)" (identifier "puVar2") (= "=") (pointer_expression "*(undefined8 **)(uVar3 + 0x150)" (* "*") (cast_expression "(undefined8 **)(uVar3 + 0x150)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(uVar3 + 0x150)" (( "(") (binary_expression "uVar3 + 0x150" (identifier "uVar3") (+ "+") (number_literal "0x150")) () ")"))))) (; ";") (binary_expression "puVar2 != (undefined8 *)0x0" (identifier "puVar2") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";") (assignment_expression "puVar2 = (undefined8 *)puVar2[6]" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)puVar2[6]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar2[6]" (identifier "puVar2") ([ "[") (number_literal "6") (] "]")))) () ")") (compound_statement "{\n        while( true ) {\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    \n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }\n        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2]);\n      }" ({ "{") (while_statement "while( true ) {\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    \n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n          iVar1 = FUN_001096f0(param_1,1);\n          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    \n            FUN_0010a4c0(1);\n          }\n          if (((byte)DAT_001195e4 & 0x40) != 0) break;\n          puVar2 = (undefined8 *)puVar2[6];\n          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;\n        }" ({ "{") (expression_statement "iVar1 = FUN_001096f0(param_1,1);" (assignment_expression "iVar1 = FUN_001096f0(param_1,1)" (identifier "iVar1") (= "=") (call_expression "FUN_001096f0(param_1,1)" (identifier "FUN_001096f0") (argument_list "(param_1,1)" (( "(") (identifier "param_1") (, ",") (number_literal "1") () ")")))) (; ";")) (if_statement "if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {\n            perror(param_2);\n                    \n            FUN_0010a4c0(1);\n          }" (if "if") (parenthesized_expression "((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0))" (( "(") (binary_expression "(((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||\n             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)" (parenthesized_expression "(((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0))" (( "(") (binary_expression "((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))\n              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)" (parenthesized_expression "((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))" (( "(") (binary_expression "(iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0)" (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0)" (( "(") (comma_expression "iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0" (assignment_expression "iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2)" (identifier "iVar1") (= "=") (call_expression "FUN_00109680(param_1,*(undefined8 *)*puVar2)" (identifier "FUN_00109680") (argument_list "(param_1,*(undefined8 *)*puVar2)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined8 *)*puVar2" (* "*") (cast_expression "(undefined8 *)*puVar2" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar2" (* "*") (identifier "puVar2")))) () ")")))) (, ",") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)" (( "(") (comma_expression "iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0" (assignment_expression "iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1])" (identifier "iVar1") (= "=") (call_expression "FUN_00109680(param_1,*(undefined8 *)puVar2[1])" (identifier "FUN_00109680") (argument_list "(param_1,*(undefined8 *)puVar2[1])" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined8 *)puVar2[1]" (* "*") (cast_expression "(undefined8 *)puVar2[1]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")))) () ")")))) (, ",") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)" (( "(") (comma_expression "iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0" (assignment_expression "iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2))" (identifier "iVar1") (= "=") (call_expression "FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2))" (identifier "FUN_00109630") (argument_list "(param_1,*(undefined4 *)(puVar2 + 2))" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined4 *)(puVar2 + 2)" (* "*") (cast_expression "(undefined4 *)(puVar2 + 2)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 2)" (( "(") (binary_expression "puVar2 + 2" (identifier "puVar2") (+ "+") (number_literal "2")) () ")")))) () ")")))) (, ",") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n            perror(param_2);\n                    \n            FUN_0010a4c0(1);\n          }" ({ "{") (expression_statement "perror(param_2);" (call_expression "perror(param_2)" (identifier "perror") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))) (; ";")) (expression_statement "FUN_0010a4c0(1);" (call_expression "FUN_0010a4c0(1)" (identifier "FUN_0010a4c0") (argument_list "(1)" (( "(") (number_literal "1") () ")"))) (; ";")) (} "}"))) (if_statement "if (((byte)DAT_001195e4 & 0x40) != 0) break;" (if "if") (parenthesized_expression "(((byte)DAT_001195e4 & 0x40) != 0)" (( "(") (binary_expression "((byte)DAT_001195e4 & 0x40) != 0" (parenthesized_expression "((byte)DAT_001195e4 & 0x40)" (( "(") (binary_expression "(byte)DAT_001195e4 & 0x40" (cast_expression "(byte)DAT_001195e4" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "DAT_001195e4")) (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar2 = (undefined8 *)puVar2[6];" (assignment_expression "puVar2 = (undefined8 *)puVar2[6]" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)puVar2[6]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar2[6]" (identifier "puVar2") ([ "[") (number_literal "6") (] "]")))) (; ";")) (if_statement "if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;" (if "if") (parenthesized_expression "(puVar2 == (undefined8 *)0x0)" (( "(") (binary_expression "puVar2 == (undefined8 *)0x0" (identifier "puVar2") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0010434b;" (goto "goto") (statement_identifier "LAB_0010434b") (; ";"))) (} "}"))) (expression_statement "printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2]);" (call_expression "printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2])" (identifier "printf") (argument_list "("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,\n               *(undefined8 *)puVar2[1],puVar2[2])" (( "(") (string_literal ""[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n"" (" """) (string_content "[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu") (escape_sequence "\n") (" """)) (, ",") (pointer_expression "*(undefined8 *)*puVar2" (* "*") (cast_expression "(undefined8 *)*puVar2" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar2" (* "*") (identifier "puVar2")))) (, ",") (pointer_expression "*(undefined8 *)puVar2[1]" (* "*") (cast_expression "(undefined8 *)puVar2[1]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")))) (, ",") (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")) () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_0010434b:\n      uVar3 = uVar3 + 0x158;" (statement_identifier "LAB_0010434b") (: ":") (expression_statement "uVar3 = uVar3 + 0x158;" (assignment_expression "uVar3 = uVar3 + 0x158" (identifier "uVar3") (= "=") (binary_expression "uVar3 + 0x158" (identifier "uVar3") (+ "+") (number_literal "0x158"))) (; ";"))) (} "}")) (while "while") (parenthesized_expression "(uVar3 < DAT_00119b40)" (( "(") (binary_expression "uVar3 < DAT_00119b40" (identifier "uVar3") (< "<") (identifier "DAT_00119b40")) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 *ofp,char *filename)

{
  int var_3;
  type_2 *var_1;
  type_3 *var_9;
  
  var_9 = symtab.base;
  if (symtab.base < symtab.limit) {
    do {
      for (var_1 = (var_9->cg).children; var_1 != (type_2 *)0x0; var_1 = var_1->next_child) {
        while( true ) {
          var_3 = var_2(ofp,1);
          if ((((var_3 != 0) || (var_3 = var_4(ofp,var_1->parent->addr), var_3 != 0))
              || (var_3 = var_4(ofp,var_1->child->addr), var_3 != 0)) ||
             (var_3 = var_5(ofp,(type_4)var_1->count), var_3 != 0)) {
            var_6(filename);
                    /* WARNING: Subroutine does not return */
            var_7(1);
          }
          if (((type_5)debug_level & 0x40) != 0) break;
          var_1 = var_1->next_child;
          if (var_1 == (type_2 *)0x0) goto LAB_0010434b;
        }
        var_8("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",var_1->parent->addr,
               var_1->child->addr,var_1->count);
      }
LAB_0010434b:
      var_9 = var_9 + 1;
    } while (var_9 < symtab.limit);
  }
  return;
}


(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: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (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 (for_statement initializer: (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) condition: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))) update: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))) body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (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: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))))) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))) (subscript_expression argument: (identifier) index: (number_literal))))))) (labeled_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: (identifier)))))) (return_statement))))

void MASKED(undefined8 param_1,char *param_2)

{
  int iVar1;
  undefined8 *puVar2;
  ulong uVar3;
  
  uVar3 = DAT_00119b38;
  if (DAT_00119b38 < DAT_00119b40) {
    do {
      for (puVar2 = *(undefined8 **)(uVar3 + 0x150); puVar2 != (undefined8 *)0x0;
          puVar2 = (undefined8 *)puVar2[6]) {
        while( true ) {
          iVar1 = FUN_001096f0(param_1,1);
          if ((((iVar1 != 0) || (iVar1 = FUN_00109680(param_1,*(undefined8 *)*puVar2), iVar1 != 0))
              || (iVar1 = FUN_00109680(param_1,*(undefined8 *)puVar2[1]), iVar1 != 0)) ||
             (iVar1 = FUN_00109630(param_1,*(undefined4 *)(puVar2 + 2)), iVar1 != 0)) {
            perror(param_2);
                    /* WARNING: Subroutine does not return */
            FUN_0010a4c0(1);
          }
          if (((byte)DAT_001195e4 & 0x40) != 0) break;
          puVar2 = (undefined8 *)puVar2[6];
          if (puVar2 == (undefined8 *)0x0) goto LAB_0010434b;
        }
        printf("[cg_write_arcs] frompc 0x%lx selfpc 0x%lx count %lu\n",*(undefined8 *)*puVar2,
               *(undefined8 *)puVar2[1],puVar2[2]);
      }
LAB_0010434b:
      uVar3 = uVar3 + 0x158;
    } while (uVar3 < DAT_00119b40);
  }
  return;
}

