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

int __regparm3 cmp_arc(Arc *left,Arc *right)

{
  Sym *self;
  Sym *self_00;
  Sym *self_01;
  Sym *self_02;
  int iVar1;
  int iVar2;
  int iVar3;
  double dVar4;
  double dVar5;
  
  self = left->parent;
  self_00 = left->child;
  self_01 = right->parent;
  self_02 = right->child;
  if (((byte)debug_level & 0x20) != 0) {
    printf("[cmp_arc] ");
    print_name(self);
    printf(" calls ");
    print_name(self_00);
    printf(" %f + %f %lu/%lu\n",*(undefined4 *)&left->time,*(undefined4 *)((int)&left->time + 4),
           *(undefined4 *)&left->child_time,*(undefined4 *)((int)&left->child_time + 4),left->count,
           self_00->ncalls);
    printf("[cmp_arc] ");
    print_name(self_01);
    printf(" calls ");
    print_name(self_02);
    printf(" %f + %f %lu/%lu\n",*(undefined4 *)&right->time,*(undefined4 *)((int)&right->time + 4),
           *(undefined4 *)&right->child_time,*(undefined4 *)((int)&right->child_time + 4),
           right->count,self_02->ncalls);
    putchar(10);
  }
  if (self != self_00) {
    if (self_01 == self_02) {
      return 1;
    }
    iVar1 = (self->cg).cyc.num;
    iVar2 = (self_01->cg).cyc.num;
    if (((iVar1 == 0) || (iVar3 = (self_00->cg).cyc.num, iVar3 == 0)) || (iVar1 != iVar3)) {
      if (((iVar2 != 0) && (iVar1 = (self_02->cg).cyc.num, iVar1 != 0)) && (iVar1 == iVar2)) {
        return 1;
      }
      dVar4 = left->time + left->child_time;
      dVar5 = right->time + right->child_time;
      if (dVar4 < dVar5) {
        return -1;
      }
      if (dVar5 < dVar4) {
        return 1;
      }
    }
    else {
      if (iVar2 == 0) {
        return -1;
      }
      iVar1 = (self_02->cg).cyc.num;
      if (iVar1 == 0) {
        return -1;
      }
      if (iVar1 != iVar2) {
        return -1;
      }
    }
    if (right->count <= left->count) {
      return (uint)(right->count < left->count);
    }
  }
  return -1;
}



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

uint __regparm3 FUN_000162f0(int *param_1,int *param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  
  iVar1 = *param_1;
  iVar2 = param_1[1];
  iVar3 = *param_2;
  iVar4 = param_2[1];
  if ((DAT_0002d158 & 0x20) != 0) {
    printf("[cmp_arc] ");
    FUN_0001d740(iVar1);
    printf(" calls ");
    FUN_0001d740(iVar2);
    printf(" %f + %f %lu/%lu\n",param_1[3],param_1[4],param_1[5],param_1[6],param_1[2],
           *(undefined4 *)(iVar2 + 0x18));
    printf("[cmp_arc] ");
    FUN_0001d740(iVar3);
    printf(" calls ");
    FUN_0001d740(iVar4);
    printf(" %f + %f %lu/%lu\n",param_2[3],param_2[4],param_2[5],param_2[6],param_2[2],
           *(undefined4 *)(iVar4 + 0x18));
    putchar(10);
  }
  if (iVar1 != iVar2) {
    if (iVar3 == iVar4) {
      return 1;
    }
    iVar3 = *(int *)(iVar3 + 0xb4);
    if (((*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0)) ||
       (*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4))) {
      if (((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3)) {
        return 1;
      }
      if (*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <
          *(double *)(param_2 + 3) + *(double *)(param_2 + 5)) {
        return 0xffffffff;
      }
      if (*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <
          *(double *)(param_1 + 3) + *(double *)(param_1 + 5)) {
        return 1;
      }
    }
    else {
      if (iVar3 == 0) {
        return 0xffffffff;
      }
      if (*(int *)(iVar4 + 0xb4) == 0) {
        return 0xffffffff;
      }
      if (*(int *)(iVar4 + 0xb4) != iVar3) {
        return 0xffffffff;
      }
    }
    if ((uint)param_2[2] <= (uint)param_1[2]) {
      return (uint)((uint)param_2[2] < (uint)param_1[2]);
    }
  }
  return 0xffffffff;
}


PUSH EBP
PUSH EDI
MOV EDI,EAX
PUSH ESI
MOV ESI,EDX
PUSH EBX
CALL 0x00013030
ADD EBX,0x15d03
SUB ESP,0x2c
MOV ECX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x4]
MOV EDX,dword ptr [EDX]
MOV EBP,dword ptr [ESI + 0x4]
MOV dword ptr [ESP + 0x8],EAX
LEA EAX,[EBX + 0x1158]
TEST byte ptr [EAX],0x20
JNZ 0x000163e8
MOV EBX,dword ptr [ESP + 0x8]
CMP ECX,EBX
JZ 0x00016370
CMP EDX,EBP
JZ 0x000164c0
MOV EAX,dword ptr [ECX + 0xb4]
MOV EDX,dword ptr [EDX + 0xb4]
TEST EAX,EAX
JZ 0x00016390
MOV ECX,dword ptr [EBX + 0xb4]
TEST ECX,ECX
JZ 0x00016390
CMP EAX,ECX
JNZ 0x00016390
MOV EAX,0xffffffff
TEST EDX,EDX
JZ 0x00016384
MOV ECX,dword ptr [EBP + 0xb4]
TEST ECX,ECX
JZ 0x00016370
CMP ECX,EDX
JZ 0x000163cd
LEA ESI,[ESI]
NOP
MOV EAX,0xffffffff
JMP 0x00016384
FSTP ST0
FSTP ST0
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
TEST EDX,EDX
JZ 0x000163a6
MOV EAX,dword ptr [EBP + 0xb4]
TEST EAX,EAX
JZ 0x000163a6
CMP EAX,EDX
JZ 0x000164c0
FLD qword ptr [EDI + 0xc]
FADD qword ptr [EDI + 0x14]
MOV EAX,0xffffffff
FLD qword ptr [ESI + 0xc]
FADD qword ptr [ESI + 0x14]
FCOMI ST0,ST1
JA 0x00016380
FXCH
FCOMIP ST0,ST1
FSTP ST0
MOV EAX,0x1
JA 0x00016384
MOV EAX,0xffffffff
MOV ESI,dword ptr [ESI + 0x8]
CMP dword ptr [EDI + 0x8],ESI
JC 0x00016384
SETA AL
ADD ESP,0x2c
POP EBX
MOVZX EAX,AL
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESP + 0x1c],EDX
LEA EAX,[EBX + 0xffff58b9]
SUB ESP,0xc
MOV dword ptr [ESP + 0x1c],ECX
MOV dword ptr [ESP + 0x18],EAX
PUSH EAX
CALL 0x00012070
MOV ECX,dword ptr [ESP + 0x20]
MOV dword ptr [ESP],ECX
MOV dword ptr [ESP + 0x28],ECX
CALL 0x0001d740
LEA ECX,[EBX + 0xffff58c4]
MOV dword ptr [ESP + 0x20],ECX
MOV dword ptr [ESP],ECX
CALL 0x00012070
POP EAX
PUSH dword ptr [ESP + 0x14]
CALL 0x0001d740
ADD ESP,0xc
MOV EDX,dword ptr [ESP + 0xc]
PUSH dword ptr [EDX + 0x18]
LEA EDX,[EBX + 0xffff58cc]
PUSH dword ptr [EDI + 0x8]
PUSH dword ptr [EDI + 0x18]
PUSH dword ptr [EDI + 0x14]
PUSH dword ptr [EDI + 0x10]
PUSH dword ptr [EDI + 0xc]
MOV dword ptr [ESP + 0x30],EDX
PUSH EDX
CALL 0x00012070
ADD ESP,0x14
PUSH dword ptr [ESP + 0x18]
CALL 0x00012070
MOV EDX,dword ptr [ESP + 0x2c]
MOV dword ptr [ESP],EDX
MOV dword ptr [ESP + 0x1c],EDX
CALL 0x0001d740
POP EDX
PUSH dword ptr [ESP + 0x1c]
CALL 0x00012070
MOV dword ptr [ESP],EBP
CALL 0x0001d740
ADD ESP,0xc
PUSH dword ptr [EBP + 0x18]
PUSH dword ptr [ESI + 0x8]
PUSH dword ptr [ESI + 0x18]
PUSH dword ptr [ESI + 0x14]
PUSH dword ptr [ESI + 0x10]
PUSH dword ptr [ESI + 0xc]
PUSH dword ptr [ESP + 0x30]
CALL 0x00012070
ADD ESP,0x14
PUSH 0xa
CALL 0x00012340
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x18]
MOV EDX,dword ptr [ESP + 0xc]
JMP 0x00016323
ADD ESP,0x2c
MOV EAX,0x1
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nuint __regparm3 FUN_000162f0(int *param_1,int *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  \n  iVar1 = *param_1;\n  iVar2 = param_1[1];\n  iVar3 = *param_2;\n  iVar4 = param_2[1];\n  if ((DAT_0002d158 & 0x20) != 0) {\n    printf("[cmp_arc] ");\n    FUN_0001d740(iVar1);\n    printf(" calls ");\n    FUN_0001d740(iVar2);\n    printf(" %f + %f %lu/%lu\n",param_1[3],param_1[4],param_1[5],param_1[6],param_1[2],\n           *(undefined4 *)(iVar2 + 0x18));\n    printf("[cmp_arc] ");\n    FUN_0001d740(iVar3);\n    printf(" calls ");\n    FUN_0001d740(iVar4);\n    printf(" %f + %f %lu/%lu\n",param_2[3],param_2[4],param_2[5],param_2[6],param_2[2],\n           *(undefined4 *)(iVar4 + 0x18));\n    putchar(10);\n  }\n  if (iVar1 != iVar2) {\n    if (iVar3 == iVar4) {\n      return 1;\n    }\n    iVar3 = *(int *)(iVar3 + 0xb4);\n    if (((*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0)) ||\n       (*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4))) {\n      if (((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3)) {\n        return 1;\n      }\n      if (*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <\n          *(double *)(param_2 + 3) + *(double *)(param_2 + 5)) {\n        return 0xffffffff;\n      }\n      if (*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <\n          *(double *)(param_1 + 3) + *(double *)(param_1 + 5)) {\n        return 1;\n      }\n    }\n    else {\n      if (iVar3 == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) != iVar3) {\n        return 0xffffffff;\n      }\n    }\n    if ((uint)param_2[2] <= (uint)param_1[2]) {\n      return (uint)((uint)param_2[2] < (uint)param_1[2]);\n    }\n  }\n  return 0xffffffff;\n}\n\n" comment (function_definition "uint __regparm3 FUN_000162f0(int *param_1,int *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  \n  iVar1 = *param_1;\n  iVar2 = param_1[1];\n  iVar3 = *param_2;\n  iVar4 = param_2[1];\n  if ((DAT_0002d158 & 0x20) != 0) {\n    printf("[cmp_arc] ");\n    FUN_0001d740(iVar1);\n    printf(" calls ");\n    FUN_0001d740(iVar2);\n    printf(" %f + %f %lu/%lu\n",param_1[3],param_1[4],param_1[5],param_1[6],param_1[2],\n           *(undefined4 *)(iVar2 + 0x18));\n    printf("[cmp_arc] ");\n    FUN_0001d740(iVar3);\n    printf(" calls ");\n    FUN_0001d740(iVar4);\n    printf(" %f + %f %lu/%lu\n",param_2[3],param_2[4],param_2[5],param_2[6],param_2[2],\n           *(undefined4 *)(iVar4 + 0x18));\n    putchar(10);\n  }\n  if (iVar1 != iVar2) {\n    if (iVar3 == iVar4) {\n      return 1;\n    }\n    iVar3 = *(int *)(iVar3 + 0xb4);\n    if (((*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0)) ||\n       (*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4))) {\n      if (((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3)) {\n        return 1;\n      }\n      if (*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <\n          *(double *)(param_2 + 3) + *(double *)(param_2 + 5)) {\n        return 0xffffffff;\n      }\n      if (*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <\n          *(double *)(param_1 + 3) + *(double *)(param_1 + 5)) {\n        return 1;\n      }\n    }\n    else {\n      if (iVar3 == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) != iVar3) {\n        return 0xffffffff;\n      }\n    }\n    if ((uint)param_2[2] <= (uint)param_1[2]) {\n      return (uint)((uint)param_2[2] < (uint)param_1[2]);\n    }\n  }\n  return 0xffffffff;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_000162f0(int *param_1,int *param_2)" identifier (parameter_list "(int *param_1,int *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  \n  iVar1 = *param_1;\n  iVar2 = param_1[1];\n  iVar3 = *param_2;\n  iVar4 = param_2[1];\n  if ((DAT_0002d158 & 0x20) != 0) {\n    printf("[cmp_arc] ");\n    FUN_0001d740(iVar1);\n    printf(" calls ");\n    FUN_0001d740(iVar2);\n    printf(" %f + %f %lu/%lu\n",param_1[3],param_1[4],param_1[5],param_1[6],param_1[2],\n           *(undefined4 *)(iVar2 + 0x18));\n    printf("[cmp_arc] ");\n    FUN_0001d740(iVar3);\n    printf(" calls ");\n    FUN_0001d740(iVar4);\n    printf(" %f + %f %lu/%lu\n",param_2[3],param_2[4],param_2[5],param_2[6],param_2[2],\n           *(undefined4 *)(iVar4 + 0x18));\n    putchar(10);\n  }\n  if (iVar1 != iVar2) {\n    if (iVar3 == iVar4) {\n      return 1;\n    }\n    iVar3 = *(int *)(iVar3 + 0xb4);\n    if (((*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0)) ||\n       (*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4))) {\n      if (((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3)) {\n        return 1;\n      }\n      if (*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <\n          *(double *)(param_2 + 3) + *(double *)(param_2 + 5)) {\n        return 0xffffffff;\n      }\n      if (*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <\n          *(double *)(param_1 + 3) + *(double *)(param_1 + 5)) {\n        return 1;\n      }\n    }\n    else {\n      if (iVar3 == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) != iVar3) {\n        return 0xffffffff;\n      }\n    }\n    if ((uint)param_2[2] <= (uint)param_1[2]) {\n      return (uint)((uint)param_2[2] < (uint)param_1[2]);\n    }\n  }\n  return 0xffffffff;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (expression_statement "iVar1 = *param_1;" (assignment_expression "iVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "iVar2 = param_1[1];" (assignment_expression "iVar2 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "iVar3 = *param_2;" (assignment_expression "iVar3 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "iVar4 = param_2[1];" (assignment_expression "iVar4 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (if_statement "if ((DAT_0002d158 & 0x20) != 0) {\n    printf("[cmp_arc] ");\n    FUN_0001d740(iVar1);\n    printf(" calls ");\n    FUN_0001d740(iVar2);\n    printf(" %f + %f %lu/%lu\n",param_1[3],param_1[4],param_1[5],param_1[6],param_1[2],\n           *(undefined4 *)(iVar2 + 0x18));\n    printf("[cmp_arc] ");\n    FUN_0001d740(iVar3);\n    printf(" calls ");\n    FUN_0001d740(iVar4);\n    printf(" %f + %f %lu/%lu\n",param_2[3],param_2[4],param_2[5],param_2[6],param_2[2],\n           *(undefined4 *)(iVar4 + 0x18));\n    putchar(10);\n  }" if (parenthesized_expression "((DAT_0002d158 & 0x20) != 0)" ( (binary_expression "(DAT_0002d158 & 0x20) != 0" (parenthesized_expression "(DAT_0002d158 & 0x20)" ( (binary_expression "DAT_0002d158 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    printf("[cmp_arc] ");\n    FUN_0001d740(iVar1);\n    printf(" calls ");\n    FUN_0001d740(iVar2);\n    printf(" %f + %f %lu/%lu\n",param_1[3],param_1[4],param_1[5],param_1[6],param_1[2],\n           *(undefined4 *)(iVar2 + 0x18));\n    printf("[cmp_arc] ");\n    FUN_0001d740(iVar3);\n    printf(" calls ");\n    FUN_0001d740(iVar4);\n    printf(" %f + %f %lu/%lu\n",param_2[3],param_2[4],param_2[5],param_2[6],param_2[2],\n           *(undefined4 *)(iVar4 + 0x18));\n    putchar(10);\n  }" { (expression_statement "printf("[cmp_arc] ");" (call_expression "printf("[cmp_arc] ")" identifier (argument_list "("[cmp_arc] ")" ( (string_literal ""[cmp_arc] "" " string_content ") ))) ;) (expression_statement "FUN_0001d740(iVar1);" (call_expression "FUN_0001d740(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) (expression_statement "printf(" calls ");" (call_expression "printf(" calls ")" identifier (argument_list "(" calls ")" ( (string_literal "" calls "" " string_content ") ))) ;) (expression_statement "FUN_0001d740(iVar2);" (call_expression "FUN_0001d740(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) (expression_statement "printf(" %f + %f %lu/%lu\n",param_1[3],param_1[4],param_1[5],param_1[6],param_1[2],\n           *(undefined4 *)(iVar2 + 0x18));" (call_expression "printf(" %f + %f %lu/%lu\n",param_1[3],param_1[4],param_1[5],param_1[6],param_1[2],\n           *(undefined4 *)(iVar2 + 0x18))" identifier (argument_list "(" %f + %f %lu/%lu\n",param_1[3],param_1[4],param_1[5],param_1[6],param_1[2],\n           *(undefined4 *)(iVar2 + 0x18))" ( (string_literal "" %f + %f %lu/%lu\n"" " string_content escape_sequence ") , (subscript_expression "param_1[3]" identifier [ number_literal ]) , (subscript_expression "param_1[4]" identifier [ number_literal ]) , (subscript_expression "param_1[5]" identifier [ number_literal ]) , (subscript_expression "param_1[6]" identifier [ number_literal ]) , (subscript_expression "param_1[2]" identifier [ number_literal ]) , (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" * (cast_expression "(undefined4 *)(iVar2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) )))) ))) ;) (expression_statement "printf("[cmp_arc] ");" (call_expression "printf("[cmp_arc] ")" identifier (argument_list "("[cmp_arc] ")" ( (string_literal ""[cmp_arc] "" " string_content ") ))) ;) (expression_statement "FUN_0001d740(iVar3);" (call_expression "FUN_0001d740(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))) ;) (expression_statement "printf(" calls ");" (call_expression "printf(" calls ")" identifier (argument_list "(" calls ")" ( (string_literal "" calls "" " string_content ") ))) ;) (expression_statement "FUN_0001d740(iVar4);" (call_expression "FUN_0001d740(iVar4)" identifier (argument_list "(iVar4)" ( identifier ))) ;) (expression_statement "printf(" %f + %f %lu/%lu\n",param_2[3],param_2[4],param_2[5],param_2[6],param_2[2],\n           *(undefined4 *)(iVar4 + 0x18));" (call_expression "printf(" %f + %f %lu/%lu\n",param_2[3],param_2[4],param_2[5],param_2[6],param_2[2],\n           *(undefined4 *)(iVar4 + 0x18))" identifier (argument_list "(" %f + %f %lu/%lu\n",param_2[3],param_2[4],param_2[5],param_2[6],param_2[2],\n           *(undefined4 *)(iVar4 + 0x18))" ( (string_literal "" %f + %f %lu/%lu\n"" " string_content escape_sequence ") , (subscript_expression "param_2[3]" identifier [ number_literal ]) , (subscript_expression "param_2[4]" identifier [ number_literal ]) , (subscript_expression "param_2[5]" identifier [ number_literal ]) , (subscript_expression "param_2[6]" identifier [ number_literal ]) , (subscript_expression "param_2[2]" identifier [ number_literal ]) , (pointer_expression "*(undefined4 *)(iVar4 + 0x18)" * (cast_expression "(undefined4 *)(iVar4 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x18)" ( (binary_expression "iVar4 + 0x18" identifier + number_literal) )))) ))) ;) (expression_statement "putchar(10);" (call_expression "putchar(10)" identifier (argument_list "(10)" ( number_literal ))) ;) })) (if_statement "if (iVar1 != iVar2) {\n    if (iVar3 == iVar4) {\n      return 1;\n    }\n    iVar3 = *(int *)(iVar3 + 0xb4);\n    if (((*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0)) ||\n       (*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4))) {\n      if (((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3)) {\n        return 1;\n      }\n      if (*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <\n          *(double *)(param_2 + 3) + *(double *)(param_2 + 5)) {\n        return 0xffffffff;\n      }\n      if (*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <\n          *(double *)(param_1 + 3) + *(double *)(param_1 + 5)) {\n        return 1;\n      }\n    }\n    else {\n      if (iVar3 == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) != iVar3) {\n        return 0xffffffff;\n      }\n    }\n    if ((uint)param_2[2] <= (uint)param_1[2]) {\n      return (uint)((uint)param_2[2] < (uint)param_1[2]);\n    }\n  }" if (parenthesized_expression "(iVar1 != iVar2)" ( (binary_expression "iVar1 != iVar2" identifier != identifier) )) (compound_statement "{\n    if (iVar3 == iVar4) {\n      return 1;\n    }\n    iVar3 = *(int *)(iVar3 + 0xb4);\n    if (((*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0)) ||\n       (*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4))) {\n      if (((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3)) {\n        return 1;\n      }\n      if (*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <\n          *(double *)(param_2 + 3) + *(double *)(param_2 + 5)) {\n        return 0xffffffff;\n      }\n      if (*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <\n          *(double *)(param_1 + 3) + *(double *)(param_1 + 5)) {\n        return 1;\n      }\n    }\n    else {\n      if (iVar3 == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) != iVar3) {\n        return 0xffffffff;\n      }\n    }\n    if ((uint)param_2[2] <= (uint)param_1[2]) {\n      return (uint)((uint)param_2[2] < (uint)param_1[2]);\n    }\n  }" { (if_statement "if (iVar3 == iVar4) {\n      return 1;\n    }" if (parenthesized_expression "(iVar3 == iVar4)" ( (binary_expression "iVar3 == iVar4" identifier == identifier) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "iVar3 = *(int *)(iVar3 + 0xb4);" (assignment_expression "iVar3 = *(int *)(iVar3 + 0xb4)" identifier = (pointer_expression "*(int *)(iVar3 + 0xb4)" * (cast_expression "(int *)(iVar3 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0xb4)" ( (binary_expression "iVar3 + 0xb4" identifier + number_literal) ))))) ;) (if_statement "if (((*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0)) ||\n       (*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4))) {\n      if (((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3)) {\n        return 1;\n      }\n      if (*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <\n          *(double *)(param_2 + 3) + *(double *)(param_2 + 5)) {\n        return 0xffffffff;\n      }\n      if (*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <\n          *(double *)(param_1 + 3) + *(double *)(param_1 + 5)) {\n        return 1;\n      }\n    }\n    else {\n      if (iVar3 == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) != iVar3) {\n        return 0xffffffff;\n      }\n    }" if (parenthesized_expression "(((*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0)) ||\n       (*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4)))" ( (binary_expression "((*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0)) ||\n       (*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4))" (parenthesized_expression "((*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0))" ( (binary_expression "(*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0)" (parenthesized_expression "(*(int *)(iVar1 + 0xb4) == 0)" ( (binary_expression "*(int *)(iVar1 + 0xb4) == 0" (pointer_expression "*(int *)(iVar1 + 0xb4)" * (cast_expression "(int *)(iVar1 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xb4)" ( (binary_expression "iVar1 + 0xb4" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(*(int *)(iVar2 + 0xb4) == 0)" ( (binary_expression "*(int *)(iVar2 + 0xb4) == 0" (pointer_expression "*(int *)(iVar2 + 0xb4)" * (cast_expression "(int *)(iVar2 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xb4)" ( (binary_expression "iVar2 + 0xb4" identifier + number_literal) )))) == number_literal) ))) )) || (parenthesized_expression "(*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4))" ( (binary_expression "*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4)" (pointer_expression "*(int *)(iVar1 + 0xb4)" * (cast_expression "(int *)(iVar1 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xb4)" ( (binary_expression "iVar1 + 0xb4" identifier + number_literal) )))) != (pointer_expression "*(int *)(iVar2 + 0xb4)" * (cast_expression "(int *)(iVar2 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xb4)" ( (binary_expression "iVar2 + 0xb4" identifier + number_literal) ))))) ))) )) (compound_statement "{\n      if (((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3)) {\n        return 1;\n      }\n      if (*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <\n          *(double *)(param_2 + 3) + *(double *)(param_2 + 5)) {\n        return 0xffffffff;\n      }\n      if (*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <\n          *(double *)(param_1 + 3) + *(double *)(param_1 + 5)) {\n        return 1;\n      }\n    }" { (if_statement "if (((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3)) {\n        return 1;\n      }" if (parenthesized_expression "(((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3))" ( (binary_expression "((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3)" (parenthesized_expression "((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0))" ( (binary_expression "(iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)" (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(int *)(iVar4 + 0xb4) != 0)" ( (binary_expression "*(int *)(iVar4 + 0xb4) != 0" (pointer_expression "*(int *)(iVar4 + 0xb4)" * (cast_expression "(int *)(iVar4 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xb4)" ( (binary_expression "iVar4 + 0xb4" identifier + number_literal) )))) != number_literal) ))) )) && (parenthesized_expression "(*(int *)(iVar4 + 0xb4) == iVar3)" ( (binary_expression "*(int *)(iVar4 + 0xb4) == iVar3" (pointer_expression "*(int *)(iVar4 + 0xb4)" * (cast_expression "(int *)(iVar4 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xb4)" ( (binary_expression "iVar4 + 0xb4" identifier + number_literal) )))) == identifier) ))) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if (*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <\n          *(double *)(param_2 + 3) + *(double *)(param_2 + 5)) {\n        return 0xffffffff;\n      }" if (parenthesized_expression "(*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <\n          *(double *)(param_2 + 3) + *(double *)(param_2 + 5))" ( (binary_expression "*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <\n          *(double *)(param_2 + 3) + *(double *)(param_2 + 5)" (binary_expression "*(double *)(param_1 + 3) + *(double *)(param_1 + 5)" (pointer_expression "*(double *)(param_1 + 3)" * (cast_expression "(double *)(param_1 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) )))) + (pointer_expression "*(double *)(param_1 + 5)" * (cast_expression "(double *)(param_1 + 5)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 5)" ( (binary_expression "param_1 + 5" identifier + number_literal) ))))) < (binary_expression "*(double *)(param_2 + 3) + *(double *)(param_2 + 5)" (pointer_expression "*(double *)(param_2 + 3)" * (cast_expression "(double *)(param_2 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) )))) + (pointer_expression "*(double *)(param_2 + 5)" * (cast_expression "(double *)(param_2 + 5)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 5)" ( (binary_expression "param_2 + 5" identifier + number_literal) )))))) )) (compound_statement "{\n        return 0xffffffff;\n      }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (if_statement "if (*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <\n          *(double *)(param_1 + 3) + *(double *)(param_1 + 5)) {\n        return 1;\n      }" if (parenthesized_expression "(*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <\n          *(double *)(param_1 + 3) + *(double *)(param_1 + 5))" ( (binary_expression "*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <\n          *(double *)(param_1 + 3) + *(double *)(param_1 + 5)" (binary_expression "*(double *)(param_2 + 3) + *(double *)(param_2 + 5)" (pointer_expression "*(double *)(param_2 + 3)" * (cast_expression "(double *)(param_2 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) )))) + (pointer_expression "*(double *)(param_2 + 5)" * (cast_expression "(double *)(param_2 + 5)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 5)" ( (binary_expression "param_2 + 5" identifier + number_literal) ))))) < (binary_expression "*(double *)(param_1 + 3) + *(double *)(param_1 + 5)" (pointer_expression "*(double *)(param_1 + 3)" * (cast_expression "(double *)(param_1 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) )))) + (pointer_expression "*(double *)(param_1 + 5)" * (cast_expression "(double *)(param_1 + 5)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 5)" ( (binary_expression "param_1 + 5" identifier + number_literal) )))))) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) }) (else_clause "else {\n      if (iVar3 == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) != iVar3) {\n        return 0xffffffff;\n      }\n    }" else (compound_statement "{\n      if (iVar3 == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) != iVar3) {\n        return 0xffffffff;\n      }\n    }" { (if_statement "if (iVar3 == 0) {\n        return 0xffffffff;\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        return 0xffffffff;\n      }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (if_statement "if (*(int *)(iVar4 + 0xb4) == 0) {\n        return 0xffffffff;\n      }" if (parenthesized_expression "(*(int *)(iVar4 + 0xb4) == 0)" ( (binary_expression "*(int *)(iVar4 + 0xb4) == 0" (pointer_expression "*(int *)(iVar4 + 0xb4)" * (cast_expression "(int *)(iVar4 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xb4)" ( (binary_expression "iVar4 + 0xb4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        return 0xffffffff;\n      }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (if_statement "if (*(int *)(iVar4 + 0xb4) != iVar3) {\n        return 0xffffffff;\n      }" if (parenthesized_expression "(*(int *)(iVar4 + 0xb4) != iVar3)" ( (binary_expression "*(int *)(iVar4 + 0xb4) != iVar3" (pointer_expression "*(int *)(iVar4 + 0xb4)" * (cast_expression "(int *)(iVar4 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xb4)" ( (binary_expression "iVar4 + 0xb4" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n        return 0xffffffff;\n      }" { (return_statement "return 0xffffffff;" return number_literal ;) })) }))) (if_statement "if ((uint)param_2[2] <= (uint)param_1[2]) {\n      return (uint)((uint)param_2[2] < (uint)param_1[2]);\n    }" if (parenthesized_expression "((uint)param_2[2] <= (uint)param_1[2])" ( (binary_expression "(uint)param_2[2] <= (uint)param_1[2]" (cast_expression "(uint)param_2[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) <= (cast_expression "(uint)param_1[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) )) (compound_statement "{\n      return (uint)((uint)param_2[2] < (uint)param_1[2]);\n    }" { (return_statement "return (uint)((uint)param_2[2] < (uint)param_1[2]);" return (call_expression "(uint)((uint)param_2[2] < (uint)param_1[2])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)param_2[2] < (uint)param_1[2])" ( (binary_expression "(uint)param_2[2] < (uint)param_1[2]" (cast_expression "(uint)param_2[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(uint)param_1[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ))) ;) })) })) (return_statement "return 0xffffffff;" return number_literal ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint __regparm3 cmp_arc(Arc *left,Arc *right)\n\n{\n  Sym *self;\n  Sym *self_00;\n  Sym *self_01;\n  Sym *self_02;\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  double dVar4;\n  double dVar5;\n  \n  self = left->parent;\n  self_00 = left->child;\n  self_01 = right->parent;\n  self_02 = right->child;\n  if (((byte)debug_level & 0x20) != 0) {\n    printf("[cmp_arc] ");\n    print_name(self);\n    printf(" calls ");\n    print_name(self_00);\n    printf(" %f + %f %lu/%lu\n",*(undefined4 *)&left->time,*(undefined4 *)((int)&left->time + 4),\n           *(undefined4 *)&left->child_time,*(undefined4 *)((int)&left->child_time + 4),left->count,\n           self_00->ncalls);\n    printf("[cmp_arc] ");\n    print_name(self_01);\n    printf(" calls ");\n    print_name(self_02);\n    printf(" %f + %f %lu/%lu\n",*(undefined4 *)&right->time,*(undefined4 *)((int)&right->time + 4),\n           *(undefined4 *)&right->child_time,*(undefined4 *)((int)&right->child_time + 4),\n           right->count,self_02->ncalls);\n    putchar(10);\n  }\n  if (self != self_00) {\n    if (self_01 == self_02) {\n      return 1;\n    }\n    iVar1 = (self->cg).cyc.num;\n    iVar2 = (self_01->cg).cyc.num;\n    if (((iVar1 == 0) || (iVar3 = (self_00->cg).cyc.num, iVar3 == 0)) || (iVar1 != iVar3)) {\n      if (((iVar2 != 0) && (iVar1 = (self_02->cg).cyc.num, iVar1 != 0)) && (iVar1 == iVar2)) {\n        return 1;\n      }\n      dVar4 = left->time + left->child_time;\n      dVar5 = right->time + right->child_time;\n      if (dVar4 < dVar5) {\n        return -1;\n      }\n      if (dVar5 < dVar4) {\n        return 1;\n      }\n    }\n    else {\n      if (iVar2 == 0) {\n        return -1;\n      }\n      iVar1 = (self_02->cg).cyc.num;\n      if (iVar1 == 0) {\n        return -1;\n      }\n      if (iVar1 != iVar2) {\n        return -1;\n      }\n    }\n    if (right->count <= left->count) {\n      return (uint)(right->count < left->count);\n    }\n  }\n  return -1;\n}\n\n" comment (function_definition "int __regparm3 cmp_arc(Arc *left,Arc *right)\n\n{\n  Sym *self;\n  Sym *self_00;\n  Sym *self_01;\n  Sym *self_02;\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  double dVar4;\n  double dVar5;\n  \n  self = left->parent;\n  self_00 = left->child;\n  self_01 = right->parent;\n  self_02 = right->child;\n  if (((byte)debug_level & 0x20) != 0) {\n    printf("[cmp_arc] ");\n    print_name(self);\n    printf(" calls ");\n    print_name(self_00);\n    printf(" %f + %f %lu/%lu\n",*(undefined4 *)&left->time,*(undefined4 *)((int)&left->time + 4),\n           *(undefined4 *)&left->child_time,*(undefined4 *)((int)&left->child_time + 4),left->count,\n           self_00->ncalls);\n    printf("[cmp_arc] ");\n    print_name(self_01);\n    printf(" calls ");\n    print_name(self_02);\n    printf(" %f + %f %lu/%lu\n",*(undefined4 *)&right->time,*(undefined4 *)((int)&right->time + 4),\n           *(undefined4 *)&right->child_time,*(undefined4 *)((int)&right->child_time + 4),\n           right->count,self_02->ncalls);\n    putchar(10);\n  }\n  if (self != self_00) {\n    if (self_01 == self_02) {\n      return 1;\n    }\n    iVar1 = (self->cg).cyc.num;\n    iVar2 = (self_01->cg).cyc.num;\n    if (((iVar1 == 0) || (iVar3 = (self_00->cg).cyc.num, iVar3 == 0)) || (iVar1 != iVar3)) {\n      if (((iVar2 != 0) && (iVar1 = (self_02->cg).cyc.num, iVar1 != 0)) && (iVar1 == iVar2)) {\n        return 1;\n      }\n      dVar4 = left->time + left->child_time;\n      dVar5 = right->time + right->child_time;\n      if (dVar4 < dVar5) {\n        return -1;\n      }\n      if (dVar5 < dVar4) {\n        return 1;\n      }\n    }\n    else {\n      if (iVar2 == 0) {\n        return -1;\n      }\n      iVar1 = (self_02->cg).cyc.num;\n      if (iVar1 == 0) {\n        return -1;\n      }\n      if (iVar1 != iVar2) {\n        return -1;\n      }\n    }\n    if (right->count <= left->count) {\n      return (uint)(right->count < left->count);\n    }\n  }\n  return -1;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "cmp_arc(Arc *left,Arc *right)" identifier (parameter_list "(Arc *left,Arc *right)" ( (parameter_declaration "Arc *left" type_identifier (pointer_declarator "*left" * identifier)) , (parameter_declaration "Arc *right" type_identifier (pointer_declarator "*right" * identifier)) ))) (compound_statement "{\n  Sym *self;\n  Sym *self_00;\n  Sym *self_01;\n  Sym *self_02;\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  double dVar4;\n  double dVar5;\n  \n  self = left->parent;\n  self_00 = left->child;\n  self_01 = right->parent;\n  self_02 = right->child;\n  if (((byte)debug_level & 0x20) != 0) {\n    printf("[cmp_arc] ");\n    print_name(self);\n    printf(" calls ");\n    print_name(self_00);\n    printf(" %f + %f %lu/%lu\n",*(undefined4 *)&left->time,*(undefined4 *)((int)&left->time + 4),\n           *(undefined4 *)&left->child_time,*(undefined4 *)((int)&left->child_time + 4),left->count,\n           self_00->ncalls);\n    printf("[cmp_arc] ");\n    print_name(self_01);\n    printf(" calls ");\n    print_name(self_02);\n    printf(" %f + %f %lu/%lu\n",*(undefined4 *)&right->time,*(undefined4 *)((int)&right->time + 4),\n           *(undefined4 *)&right->child_time,*(undefined4 *)((int)&right->child_time + 4),\n           right->count,self_02->ncalls);\n    putchar(10);\n  }\n  if (self != self_00) {\n    if (self_01 == self_02) {\n      return 1;\n    }\n    iVar1 = (self->cg).cyc.num;\n    iVar2 = (self_01->cg).cyc.num;\n    if (((iVar1 == 0) || (iVar3 = (self_00->cg).cyc.num, iVar3 == 0)) || (iVar1 != iVar3)) {\n      if (((iVar2 != 0) && (iVar1 = (self_02->cg).cyc.num, iVar1 != 0)) && (iVar1 == iVar2)) {\n        return 1;\n      }\n      dVar4 = left->time + left->child_time;\n      dVar5 = right->time + right->child_time;\n      if (dVar4 < dVar5) {\n        return -1;\n      }\n      if (dVar5 < dVar4) {\n        return 1;\n      }\n    }\n    else {\n      if (iVar2 == 0) {\n        return -1;\n      }\n      iVar1 = (self_02->cg).cyc.num;\n      if (iVar1 == 0) {\n        return -1;\n      }\n      if (iVar1 != iVar2) {\n        return -1;\n      }\n    }\n    if (right->count <= left->count) {\n      return (uint)(right->count < left->count);\n    }\n  }\n  return -1;\n}" { (declaration "Sym *self;" type_identifier (pointer_declarator "*self" * identifier) ;) (declaration "Sym *self_00;" type_identifier (pointer_declarator "*self_00" * identifier) ;) (declaration "Sym *self_01;" type_identifier (pointer_declarator "*self_01" * identifier) ;) (declaration "Sym *self_02;" type_identifier (pointer_declarator "*self_02" * identifier) ;) (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "double dVar4;" primitive_type identifier ;) (declaration "double dVar5;" primitive_type identifier ;) (expression_statement "self = left->parent;" (assignment_expression "self = left->parent" identifier = (field_expression "left->parent" identifier -> field_identifier)) ;) (expression_statement "self_00 = left->child;" (assignment_expression "self_00 = left->child" identifier = (field_expression "left->child" identifier -> field_identifier)) ;) (expression_statement "self_01 = right->parent;" (assignment_expression "self_01 = right->parent" identifier = (field_expression "right->parent" identifier -> field_identifier)) ;) (expression_statement "self_02 = right->child;" (assignment_expression "self_02 = right->child" identifier = (field_expression "right->child" identifier -> field_identifier)) ;) (if_statement "if (((byte)debug_level & 0x20) != 0) {\n    printf("[cmp_arc] ");\n    print_name(self);\n    printf(" calls ");\n    print_name(self_00);\n    printf(" %f + %f %lu/%lu\n",*(undefined4 *)&left->time,*(undefined4 *)((int)&left->time + 4),\n           *(undefined4 *)&left->child_time,*(undefined4 *)((int)&left->child_time + 4),left->count,\n           self_00->ncalls);\n    printf("[cmp_arc] ");\n    print_name(self_01);\n    printf(" calls ");\n    print_name(self_02);\n    printf(" %f + %f %lu/%lu\n",*(undefined4 *)&right->time,*(undefined4 *)((int)&right->time + 4),\n           *(undefined4 *)&right->child_time,*(undefined4 *)((int)&right->child_time + 4),\n           right->count,self_02->ncalls);\n    putchar(10);\n  }" if (parenthesized_expression "(((byte)debug_level & 0x20) != 0)" ( (binary_expression "((byte)debug_level & 0x20) != 0" (parenthesized_expression "((byte)debug_level & 0x20)" ( (binary_expression "(byte)debug_level & 0x20" (cast_expression "(byte)debug_level" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    printf("[cmp_arc] ");\n    print_name(self);\n    printf(" calls ");\n    print_name(self_00);\n    printf(" %f + %f %lu/%lu\n",*(undefined4 *)&left->time,*(undefined4 *)((int)&left->time + 4),\n           *(undefined4 *)&left->child_time,*(undefined4 *)((int)&left->child_time + 4),left->count,\n           self_00->ncalls);\n    printf("[cmp_arc] ");\n    print_name(self_01);\n    printf(" calls ");\n    print_name(self_02);\n    printf(" %f + %f %lu/%lu\n",*(undefined4 *)&right->time,*(undefined4 *)((int)&right->time + 4),\n           *(undefined4 *)&right->child_time,*(undefined4 *)((int)&right->child_time + 4),\n           right->count,self_02->ncalls);\n    putchar(10);\n  }" { (expression_statement "printf("[cmp_arc] ");" (call_expression "printf("[cmp_arc] ")" identifier (argument_list "("[cmp_arc] ")" ( (string_literal ""[cmp_arc] "" " string_content ") ))) ;) (expression_statement "print_name(self);" (call_expression "print_name(self)" identifier (argument_list "(self)" ( identifier ))) ;) (expression_statement "printf(" calls ");" (call_expression "printf(" calls ")" identifier (argument_list "(" calls ")" ( (string_literal "" calls "" " string_content ") ))) ;) (expression_statement "print_name(self_00);" (call_expression "print_name(self_00)" identifier (argument_list "(self_00)" ( identifier ))) ;) (expression_statement "printf(" %f + %f %lu/%lu\n",*(undefined4 *)&left->time,*(undefined4 *)((int)&left->time + 4),\n           *(undefined4 *)&left->child_time,*(undefined4 *)((int)&left->child_time + 4),left->count,\n           self_00->ncalls);" (call_expression "printf(" %f + %f %lu/%lu\n",*(undefined4 *)&left->time,*(undefined4 *)((int)&left->time + 4),\n           *(undefined4 *)&left->child_time,*(undefined4 *)((int)&left->child_time + 4),left->count,\n           self_00->ncalls)" identifier (argument_list "(" %f + %f %lu/%lu\n",*(undefined4 *)&left->time,*(undefined4 *)((int)&left->time + 4),\n           *(undefined4 *)&left->child_time,*(undefined4 *)((int)&left->child_time + 4),left->count,\n           self_00->ncalls)" ( (string_literal "" %f + %f %lu/%lu\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined4 *)&left->time" * (cast_expression "(undefined4 *)&left->time" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&left->time" & (field_expression "left->time" identifier -> field_identifier)))) , (pointer_expression "*(undefined4 *)((int)&left->time + 4)" * (cast_expression "(undefined4 *)((int)&left->time + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&left->time + 4)" ( (binary_expression "(int)&left->time + 4" (cast_expression "(int)&left->time" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&left->time" & (field_expression "left->time" identifier -> field_identifier))) + number_literal) )))) , (pointer_expression "*(undefined4 *)&left->child_time" * (cast_expression "(undefined4 *)&left->child_time" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&left->child_time" & (field_expression "left->child_time" identifier -> field_identifier)))) , (pointer_expression "*(undefined4 *)((int)&left->child_time + 4)" * (cast_expression "(undefined4 *)((int)&left->child_time + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&left->child_time + 4)" ( (binary_expression "(int)&left->child_time + 4" (cast_expression "(int)&left->child_time" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&left->child_time" & (field_expression "left->child_time" identifier -> field_identifier))) + number_literal) )))) , (field_expression "left->count" identifier -> field_identifier) , (field_expression "self_00->ncalls" identifier -> field_identifier) ))) ;) (expression_statement "printf("[cmp_arc] ");" (call_expression "printf("[cmp_arc] ")" identifier (argument_list "("[cmp_arc] ")" ( (string_literal ""[cmp_arc] "" " string_content ") ))) ;) (expression_statement "print_name(self_01);" (call_expression "print_name(self_01)" identifier (argument_list "(self_01)" ( identifier ))) ;) (expression_statement "printf(" calls ");" (call_expression "printf(" calls ")" identifier (argument_list "(" calls ")" ( (string_literal "" calls "" " string_content ") ))) ;) (expression_statement "print_name(self_02);" (call_expression "print_name(self_02)" identifier (argument_list "(self_02)" ( identifier ))) ;) (expression_statement "printf(" %f + %f %lu/%lu\n",*(undefined4 *)&right->time,*(undefined4 *)((int)&right->time + 4),\n           *(undefined4 *)&right->child_time,*(undefined4 *)((int)&right->child_time + 4),\n           right->count,self_02->ncalls);" (call_expression "printf(" %f + %f %lu/%lu\n",*(undefined4 *)&right->time,*(undefined4 *)((int)&right->time + 4),\n           *(undefined4 *)&right->child_time,*(undefined4 *)((int)&right->child_time + 4),\n           right->count,self_02->ncalls)" identifier (argument_list "(" %f + %f %lu/%lu\n",*(undefined4 *)&right->time,*(undefined4 *)((int)&right->time + 4),\n           *(undefined4 *)&right->child_time,*(undefined4 *)((int)&right->child_time + 4),\n           right->count,self_02->ncalls)" ( (string_literal "" %f + %f %lu/%lu\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined4 *)&right->time" * (cast_expression "(undefined4 *)&right->time" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&right->time" & (field_expression "right->time" identifier -> field_identifier)))) , (pointer_expression "*(undefined4 *)((int)&right->time + 4)" * (cast_expression "(undefined4 *)((int)&right->time + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&right->time + 4)" ( (binary_expression "(int)&right->time + 4" (cast_expression "(int)&right->time" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&right->time" & (field_expression "right->time" identifier -> field_identifier))) + number_literal) )))) , (pointer_expression "*(undefined4 *)&right->child_time" * (cast_expression "(undefined4 *)&right->child_time" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&right->child_time" & (field_expression "right->child_time" identifier -> field_identifier)))) , (pointer_expression "*(undefined4 *)((int)&right->child_time + 4)" * (cast_expression "(undefined4 *)((int)&right->child_time + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&right->child_time + 4)" ( (binary_expression "(int)&right->child_time + 4" (cast_expression "(int)&right->child_time" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&right->child_time" & (field_expression "right->child_time" identifier -> field_identifier))) + number_literal) )))) , (field_expression "right->count" identifier -> field_identifier) , (field_expression "self_02->ncalls" identifier -> field_identifier) ))) ;) (expression_statement "putchar(10);" (call_expression "putchar(10)" identifier (argument_list "(10)" ( number_literal ))) ;) })) (if_statement "if (self != self_00) {\n    if (self_01 == self_02) {\n      return 1;\n    }\n    iVar1 = (self->cg).cyc.num;\n    iVar2 = (self_01->cg).cyc.num;\n    if (((iVar1 == 0) || (iVar3 = (self_00->cg).cyc.num, iVar3 == 0)) || (iVar1 != iVar3)) {\n      if (((iVar2 != 0) && (iVar1 = (self_02->cg).cyc.num, iVar1 != 0)) && (iVar1 == iVar2)) {\n        return 1;\n      }\n      dVar4 = left->time + left->child_time;\n      dVar5 = right->time + right->child_time;\n      if (dVar4 < dVar5) {\n        return -1;\n      }\n      if (dVar5 < dVar4) {\n        return 1;\n      }\n    }\n    else {\n      if (iVar2 == 0) {\n        return -1;\n      }\n      iVar1 = (self_02->cg).cyc.num;\n      if (iVar1 == 0) {\n        return -1;\n      }\n      if (iVar1 != iVar2) {\n        return -1;\n      }\n    }\n    if (right->count <= left->count) {\n      return (uint)(right->count < left->count);\n    }\n  }" if (parenthesized_expression "(self != self_00)" ( (binary_expression "self != self_00" identifier != identifier) )) (compound_statement "{\n    if (self_01 == self_02) {\n      return 1;\n    }\n    iVar1 = (self->cg).cyc.num;\n    iVar2 = (self_01->cg).cyc.num;\n    if (((iVar1 == 0) || (iVar3 = (self_00->cg).cyc.num, iVar3 == 0)) || (iVar1 != iVar3)) {\n      if (((iVar2 != 0) && (iVar1 = (self_02->cg).cyc.num, iVar1 != 0)) && (iVar1 == iVar2)) {\n        return 1;\n      }\n      dVar4 = left->time + left->child_time;\n      dVar5 = right->time + right->child_time;\n      if (dVar4 < dVar5) {\n        return -1;\n      }\n      if (dVar5 < dVar4) {\n        return 1;\n      }\n    }\n    else {\n      if (iVar2 == 0) {\n        return -1;\n      }\n      iVar1 = (self_02->cg).cyc.num;\n      if (iVar1 == 0) {\n        return -1;\n      }\n      if (iVar1 != iVar2) {\n        return -1;\n      }\n    }\n    if (right->count <= left->count) {\n      return (uint)(right->count < left->count);\n    }\n  }" { (if_statement "if (self_01 == self_02) {\n      return 1;\n    }" if (parenthesized_expression "(self_01 == self_02)" ( (binary_expression "self_01 == self_02" identifier == identifier) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "iVar1 = (self->cg).cyc.num;" (assignment_expression "iVar1 = (self->cg).cyc.num" identifier = (field_expression "(self->cg).cyc.num" (field_expression "(self->cg).cyc" (parenthesized_expression "(self->cg)" ( (field_expression "self->cg" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "iVar2 = (self_01->cg).cyc.num;" (assignment_expression "iVar2 = (self_01->cg).cyc.num" identifier = (field_expression "(self_01->cg).cyc.num" (field_expression "(self_01->cg).cyc" (parenthesized_expression "(self_01->cg)" ( (field_expression "self_01->cg" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (((iVar1 == 0) || (iVar3 = (self_00->cg).cyc.num, iVar3 == 0)) || (iVar1 != iVar3)) {\n      if (((iVar2 != 0) && (iVar1 = (self_02->cg).cyc.num, iVar1 != 0)) && (iVar1 == iVar2)) {\n        return 1;\n      }\n      dVar4 = left->time + left->child_time;\n      dVar5 = right->time + right->child_time;\n      if (dVar4 < dVar5) {\n        return -1;\n      }\n      if (dVar5 < dVar4) {\n        return 1;\n      }\n    }\n    else {\n      if (iVar2 == 0) {\n        return -1;\n      }\n      iVar1 = (self_02->cg).cyc.num;\n      if (iVar1 == 0) {\n        return -1;\n      }\n      if (iVar1 != iVar2) {\n        return -1;\n      }\n    }" if (parenthesized_expression "(((iVar1 == 0) || (iVar3 = (self_00->cg).cyc.num, iVar3 == 0)) || (iVar1 != iVar3))" ( (binary_expression "((iVar1 == 0) || (iVar3 = (self_00->cg).cyc.num, iVar3 == 0)) || (iVar1 != iVar3)" (parenthesized_expression "((iVar1 == 0) || (iVar3 = (self_00->cg).cyc.num, iVar3 == 0))" ( (binary_expression "(iVar1 == 0) || (iVar3 = (self_00->cg).cyc.num, iVar3 == 0)" (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar3 = (self_00->cg).cyc.num, iVar3 == 0)" ( (comma_expression "iVar3 = (self_00->cg).cyc.num, iVar3 == 0" (assignment_expression "iVar3 = (self_00->cg).cyc.num" identifier = (field_expression "(self_00->cg).cyc.num" (field_expression "(self_00->cg).cyc" (parenthesized_expression "(self_00->cg)" ( (field_expression "self_00->cg" identifier -> field_identifier) )) . field_identifier) . field_identifier)) , (binary_expression "iVar3 == 0" identifier == number_literal)) ))) )) || (parenthesized_expression "(iVar1 != iVar3)" ( (binary_expression "iVar1 != iVar3" identifier != identifier) ))) )) (compound_statement "{\n      if (((iVar2 != 0) && (iVar1 = (self_02->cg).cyc.num, iVar1 != 0)) && (iVar1 == iVar2)) {\n        return 1;\n      }\n      dVar4 = left->time + left->child_time;\n      dVar5 = right->time + right->child_time;\n      if (dVar4 < dVar5) {\n        return -1;\n      }\n      if (dVar5 < dVar4) {\n        return 1;\n      }\n    }" { (if_statement "if (((iVar2 != 0) && (iVar1 = (self_02->cg).cyc.num, iVar1 != 0)) && (iVar1 == iVar2)) {\n        return 1;\n      }" if (parenthesized_expression "(((iVar2 != 0) && (iVar1 = (self_02->cg).cyc.num, iVar1 != 0)) && (iVar1 == iVar2))" ( (binary_expression "((iVar2 != 0) && (iVar1 = (self_02->cg).cyc.num, iVar1 != 0)) && (iVar1 == iVar2)" (parenthesized_expression "((iVar2 != 0) && (iVar1 = (self_02->cg).cyc.num, iVar1 != 0))" ( (binary_expression "(iVar2 != 0) && (iVar1 = (self_02->cg).cyc.num, iVar1 != 0)" (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar1 = (self_02->cg).cyc.num, iVar1 != 0)" ( (comma_expression "iVar1 = (self_02->cg).cyc.num, iVar1 != 0" (assignment_expression "iVar1 = (self_02->cg).cyc.num" identifier = (field_expression "(self_02->cg).cyc.num" (field_expression "(self_02->cg).cyc" (parenthesized_expression "(self_02->cg)" ( (field_expression "self_02->cg" identifier -> field_identifier) )) . field_identifier) . field_identifier)) , (binary_expression "iVar1 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(iVar1 == iVar2)" ( (binary_expression "iVar1 == iVar2" identifier == identifier) ))) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "dVar4 = left->time + left->child_time;" (assignment_expression "dVar4 = left->time + left->child_time" identifier = (binary_expression "left->time + left->child_time" (field_expression "left->time" identifier -> field_identifier) + (field_expression "left->child_time" identifier -> field_identifier))) ;) (expression_statement "dVar5 = right->time + right->child_time;" (assignment_expression "dVar5 = right->time + right->child_time" identifier = (binary_expression "right->time + right->child_time" (field_expression "right->time" identifier -> field_identifier) + (field_expression "right->child_time" identifier -> field_identifier))) ;) (if_statement "if (dVar4 < dVar5) {\n        return -1;\n      }" if (parenthesized_expression "(dVar4 < dVar5)" ( (binary_expression "dVar4 < dVar5" identifier < identifier) )) (compound_statement "{\n        return -1;\n      }" { (return_statement "return -1;" return number_literal ;) })) (if_statement "if (dVar5 < dVar4) {\n        return 1;\n      }" if (parenthesized_expression "(dVar5 < dVar4)" ( (binary_expression "dVar5 < dVar4" identifier < identifier) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) }) (else_clause "else {\n      if (iVar2 == 0) {\n        return -1;\n      }\n      iVar1 = (self_02->cg).cyc.num;\n      if (iVar1 == 0) {\n        return -1;\n      }\n      if (iVar1 != iVar2) {\n        return -1;\n      }\n    }" else (compound_statement "{\n      if (iVar2 == 0) {\n        return -1;\n      }\n      iVar1 = (self_02->cg).cyc.num;\n      if (iVar1 == 0) {\n        return -1;\n      }\n      if (iVar1 != iVar2) {\n        return -1;\n      }\n    }" { (if_statement "if (iVar2 == 0) {\n        return -1;\n      }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        return -1;\n      }" { (return_statement "return -1;" return number_literal ;) })) (expression_statement "iVar1 = (self_02->cg).cyc.num;" (assignment_expression "iVar1 = (self_02->cg).cyc.num" identifier = (field_expression "(self_02->cg).cyc.num" (field_expression "(self_02->cg).cyc" (parenthesized_expression "(self_02->cg)" ( (field_expression "self_02->cg" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (iVar1 == 0) {\n        return -1;\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        return -1;\n      }" { (return_statement "return -1;" return number_literal ;) })) (if_statement "if (iVar1 != iVar2) {\n        return -1;\n      }" if (parenthesized_expression "(iVar1 != iVar2)" ( (binary_expression "iVar1 != iVar2" identifier != identifier) )) (compound_statement "{\n        return -1;\n      }" { (return_statement "return -1;" return number_literal ;) })) }))) (if_statement "if (right->count <= left->count) {\n      return (uint)(right->count < left->count);\n    }" if (parenthesized_expression "(right->count <= left->count)" ( (binary_expression "right->count <= left->count" (field_expression "right->count" identifier -> field_identifier) <= (field_expression "left->count" identifier -> field_identifier)) )) (compound_statement "{\n      return (uint)(right->count < left->count);\n    }" { (return_statement "return (uint)(right->count < left->count);" return (call_expression "(uint)(right->count < left->count)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(right->count < left->count)" ( (binary_expression "right->count < left->count" (field_expression "right->count" identifier -> field_identifier) < (field_expression "left->count" identifier -> field_identifier)) ))) ;) })) })) (return_statement "return -1;" return number_literal ;) })))
(translation_unit "uint __regparm3 FUN_000162f0(int *param_1,int *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  \n  iVar1 = *param_1;\n  iVar2 = param_1[1];\n  iVar3 = *param_2;\n  iVar4 = param_2[1];\n  if ((DAT_0002d158 & 0x20) != 0) {\n    printf("[cmp_arc] ");\n    FUN_0001d740(iVar1);\n    printf(" calls ");\n    FUN_0001d740(iVar2);\n    printf(" %f + %f %lu/%lu\n",param_1[3],param_1[4],param_1[5],param_1[6],param_1[2],\n           *(undefined4 *)(iVar2 + 0x18));\n    printf("[cmp_arc] ");\n    FUN_0001d740(iVar3);\n    printf(" calls ");\n    FUN_0001d740(iVar4);\n    printf(" %f + %f %lu/%lu\n",param_2[3],param_2[4],param_2[5],param_2[6],param_2[2],\n           *(undefined4 *)(iVar4 + 0x18));\n    putchar(10);\n  }\n  if (iVar1 != iVar2) {\n    if (iVar3 == iVar4) {\n      return 1;\n    }\n    iVar3 = *(int *)(iVar3 + 0xb4);\n    if (((*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0)) ||\n       (*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4))) {\n      if (((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3)) {\n        return 1;\n      }\n      if (*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <\n          *(double *)(param_2 + 3) + *(double *)(param_2 + 5)) {\n        return 0xffffffff;\n      }\n      if (*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <\n          *(double *)(param_1 + 3) + *(double *)(param_1 + 5)) {\n        return 1;\n      }\n    }\n    else {\n      if (iVar3 == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) != iVar3) {\n        return 0xffffffff;\n      }\n    }\n    if ((uint)param_2[2] <= (uint)param_1[2]) {\n      return (uint)((uint)param_2[2] < (uint)param_1[2]);\n    }\n  }\n  return 0xffffffff;\n}\n\n" (function_definition "uint __regparm3 FUN_000162f0(int *param_1,int *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  \n  iVar1 = *param_1;\n  iVar2 = param_1[1];\n  iVar3 = *param_2;\n  iVar4 = param_2[1];\n  if ((DAT_0002d158 & 0x20) != 0) {\n    printf("[cmp_arc] ");\n    FUN_0001d740(iVar1);\n    printf(" calls ");\n    FUN_0001d740(iVar2);\n    printf(" %f + %f %lu/%lu\n",param_1[3],param_1[4],param_1[5],param_1[6],param_1[2],\n           *(undefined4 *)(iVar2 + 0x18));\n    printf("[cmp_arc] ");\n    FUN_0001d740(iVar3);\n    printf(" calls ");\n    FUN_0001d740(iVar4);\n    printf(" %f + %f %lu/%lu\n",param_2[3],param_2[4],param_2[5],param_2[6],param_2[2],\n           *(undefined4 *)(iVar4 + 0x18));\n    putchar(10);\n  }\n  if (iVar1 != iVar2) {\n    if (iVar3 == iVar4) {\n      return 1;\n    }\n    iVar3 = *(int *)(iVar3 + 0xb4);\n    if (((*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0)) ||\n       (*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4))) {\n      if (((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3)) {\n        return 1;\n      }\n      if (*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <\n          *(double *)(param_2 + 3) + *(double *)(param_2 + 5)) {\n        return 0xffffffff;\n      }\n      if (*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <\n          *(double *)(param_1 + 3) + *(double *)(param_1 + 5)) {\n        return 1;\n      }\n    }\n    else {\n      if (iVar3 == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) != iVar3) {\n        return 0xffffffff;\n      }\n    }\n    if ((uint)param_2[2] <= (uint)param_1[2]) {\n      return (uint)((uint)param_2[2] < (uint)param_1[2]);\n    }\n  }\n  return 0xffffffff;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_000162f0(int *param_1,int *param_2)" identifier (parameter_list "(int *param_1,int *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  \n  iVar1 = *param_1;\n  iVar2 = param_1[1];\n  iVar3 = *param_2;\n  iVar4 = param_2[1];\n  if ((DAT_0002d158 & 0x20) != 0) {\n    printf("[cmp_arc] ");\n    FUN_0001d740(iVar1);\n    printf(" calls ");\n    FUN_0001d740(iVar2);\n    printf(" %f + %f %lu/%lu\n",param_1[3],param_1[4],param_1[5],param_1[6],param_1[2],\n           *(undefined4 *)(iVar2 + 0x18));\n    printf("[cmp_arc] ");\n    FUN_0001d740(iVar3);\n    printf(" calls ");\n    FUN_0001d740(iVar4);\n    printf(" %f + %f %lu/%lu\n",param_2[3],param_2[4],param_2[5],param_2[6],param_2[2],\n           *(undefined4 *)(iVar4 + 0x18));\n    putchar(10);\n  }\n  if (iVar1 != iVar2) {\n    if (iVar3 == iVar4) {\n      return 1;\n    }\n    iVar3 = *(int *)(iVar3 + 0xb4);\n    if (((*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0)) ||\n       (*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4))) {\n      if (((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3)) {\n        return 1;\n      }\n      if (*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <\n          *(double *)(param_2 + 3) + *(double *)(param_2 + 5)) {\n        return 0xffffffff;\n      }\n      if (*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <\n          *(double *)(param_1 + 3) + *(double *)(param_1 + 5)) {\n        return 1;\n      }\n    }\n    else {\n      if (iVar3 == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) != iVar3) {\n        return 0xffffffff;\n      }\n    }\n    if ((uint)param_2[2] <= (uint)param_1[2]) {\n      return (uint)((uint)param_2[2] < (uint)param_1[2]);\n    }\n  }\n  return 0xffffffff;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (expression_statement "iVar1 = *param_1;" (assignment_expression "iVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "iVar2 = param_1[1];" (assignment_expression "iVar2 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "iVar3 = *param_2;" (assignment_expression "iVar3 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "iVar4 = param_2[1];" (assignment_expression "iVar4 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (if_statement "if ((DAT_0002d158 & 0x20) != 0) {\n    printf("[cmp_arc] ");\n    FUN_0001d740(iVar1);\n    printf(" calls ");\n    FUN_0001d740(iVar2);\n    printf(" %f + %f %lu/%lu\n",param_1[3],param_1[4],param_1[5],param_1[6],param_1[2],\n           *(undefined4 *)(iVar2 + 0x18));\n    printf("[cmp_arc] ");\n    FUN_0001d740(iVar3);\n    printf(" calls ");\n    FUN_0001d740(iVar4);\n    printf(" %f + %f %lu/%lu\n",param_2[3],param_2[4],param_2[5],param_2[6],param_2[2],\n           *(undefined4 *)(iVar4 + 0x18));\n    putchar(10);\n  }" if (parenthesized_expression "((DAT_0002d158 & 0x20) != 0)" ( (binary_expression "(DAT_0002d158 & 0x20) != 0" (parenthesized_expression "(DAT_0002d158 & 0x20)" ( (binary_expression "DAT_0002d158 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    printf("[cmp_arc] ");\n    FUN_0001d740(iVar1);\n    printf(" calls ");\n    FUN_0001d740(iVar2);\n    printf(" %f + %f %lu/%lu\n",param_1[3],param_1[4],param_1[5],param_1[6],param_1[2],\n           *(undefined4 *)(iVar2 + 0x18));\n    printf("[cmp_arc] ");\n    FUN_0001d740(iVar3);\n    printf(" calls ");\n    FUN_0001d740(iVar4);\n    printf(" %f + %f %lu/%lu\n",param_2[3],param_2[4],param_2[5],param_2[6],param_2[2],\n           *(undefined4 *)(iVar4 + 0x18));\n    putchar(10);\n  }" { (expression_statement "printf("[cmp_arc] ");" (call_expression "printf("[cmp_arc] ")" identifier (argument_list "("[cmp_arc] ")" ( (string_literal ""[cmp_arc] "" " string_content ") ))) ;) (expression_statement "FUN_0001d740(iVar1);" (call_expression "FUN_0001d740(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) (expression_statement "printf(" calls ");" (call_expression "printf(" calls ")" identifier (argument_list "(" calls ")" ( (string_literal "" calls "" " string_content ") ))) ;) (expression_statement "FUN_0001d740(iVar2);" (call_expression "FUN_0001d740(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) (expression_statement "printf(" %f + %f %lu/%lu\n",param_1[3],param_1[4],param_1[5],param_1[6],param_1[2],\n           *(undefined4 *)(iVar2 + 0x18));" (call_expression "printf(" %f + %f %lu/%lu\n",param_1[3],param_1[4],param_1[5],param_1[6],param_1[2],\n           *(undefined4 *)(iVar2 + 0x18))" identifier (argument_list "(" %f + %f %lu/%lu\n",param_1[3],param_1[4],param_1[5],param_1[6],param_1[2],\n           *(undefined4 *)(iVar2 + 0x18))" ( (string_literal "" %f + %f %lu/%lu\n"" " string_content escape_sequence ") , (subscript_expression "param_1[3]" identifier [ number_literal ]) , (subscript_expression "param_1[4]" identifier [ number_literal ]) , (subscript_expression "param_1[5]" identifier [ number_literal ]) , (subscript_expression "param_1[6]" identifier [ number_literal ]) , (subscript_expression "param_1[2]" identifier [ number_literal ]) , (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" * (cast_expression "(undefined4 *)(iVar2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) )))) ))) ;) (expression_statement "printf("[cmp_arc] ");" (call_expression "printf("[cmp_arc] ")" identifier (argument_list "("[cmp_arc] ")" ( (string_literal ""[cmp_arc] "" " string_content ") ))) ;) (expression_statement "FUN_0001d740(iVar3);" (call_expression "FUN_0001d740(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))) ;) (expression_statement "printf(" calls ");" (call_expression "printf(" calls ")" identifier (argument_list "(" calls ")" ( (string_literal "" calls "" " string_content ") ))) ;) (expression_statement "FUN_0001d740(iVar4);" (call_expression "FUN_0001d740(iVar4)" identifier (argument_list "(iVar4)" ( identifier ))) ;) (expression_statement "printf(" %f + %f %lu/%lu\n",param_2[3],param_2[4],param_2[5],param_2[6],param_2[2],\n           *(undefined4 *)(iVar4 + 0x18));" (call_expression "printf(" %f + %f %lu/%lu\n",param_2[3],param_2[4],param_2[5],param_2[6],param_2[2],\n           *(undefined4 *)(iVar4 + 0x18))" identifier (argument_list "(" %f + %f %lu/%lu\n",param_2[3],param_2[4],param_2[5],param_2[6],param_2[2],\n           *(undefined4 *)(iVar4 + 0x18))" ( (string_literal "" %f + %f %lu/%lu\n"" " string_content escape_sequence ") , (subscript_expression "param_2[3]" identifier [ number_literal ]) , (subscript_expression "param_2[4]" identifier [ number_literal ]) , (subscript_expression "param_2[5]" identifier [ number_literal ]) , (subscript_expression "param_2[6]" identifier [ number_literal ]) , (subscript_expression "param_2[2]" identifier [ number_literal ]) , (pointer_expression "*(undefined4 *)(iVar4 + 0x18)" * (cast_expression "(undefined4 *)(iVar4 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x18)" ( (binary_expression "iVar4 + 0x18" identifier + number_literal) )))) ))) ;) (expression_statement "putchar(10);" (call_expression "putchar(10)" identifier (argument_list "(10)" ( number_literal ))) ;) })) (if_statement "if (iVar1 != iVar2) {\n    if (iVar3 == iVar4) {\n      return 1;\n    }\n    iVar3 = *(int *)(iVar3 + 0xb4);\n    if (((*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0)) ||\n       (*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4))) {\n      if (((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3)) {\n        return 1;\n      }\n      if (*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <\n          *(double *)(param_2 + 3) + *(double *)(param_2 + 5)) {\n        return 0xffffffff;\n      }\n      if (*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <\n          *(double *)(param_1 + 3) + *(double *)(param_1 + 5)) {\n        return 1;\n      }\n    }\n    else {\n      if (iVar3 == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) != iVar3) {\n        return 0xffffffff;\n      }\n    }\n    if ((uint)param_2[2] <= (uint)param_1[2]) {\n      return (uint)((uint)param_2[2] < (uint)param_1[2]);\n    }\n  }" if (parenthesized_expression "(iVar1 != iVar2)" ( (binary_expression "iVar1 != iVar2" identifier != identifier) )) (compound_statement "{\n    if (iVar3 == iVar4) {\n      return 1;\n    }\n    iVar3 = *(int *)(iVar3 + 0xb4);\n    if (((*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0)) ||\n       (*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4))) {\n      if (((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3)) {\n        return 1;\n      }\n      if (*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <\n          *(double *)(param_2 + 3) + *(double *)(param_2 + 5)) {\n        return 0xffffffff;\n      }\n      if (*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <\n          *(double *)(param_1 + 3) + *(double *)(param_1 + 5)) {\n        return 1;\n      }\n    }\n    else {\n      if (iVar3 == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) != iVar3) {\n        return 0xffffffff;\n      }\n    }\n    if ((uint)param_2[2] <= (uint)param_1[2]) {\n      return (uint)((uint)param_2[2] < (uint)param_1[2]);\n    }\n  }" { (if_statement "if (iVar3 == iVar4) {\n      return 1;\n    }" if (parenthesized_expression "(iVar3 == iVar4)" ( (binary_expression "iVar3 == iVar4" identifier == identifier) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "iVar3 = *(int *)(iVar3 + 0xb4);" (assignment_expression "iVar3 = *(int *)(iVar3 + 0xb4)" identifier = (pointer_expression "*(int *)(iVar3 + 0xb4)" * (cast_expression "(int *)(iVar3 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0xb4)" ( (binary_expression "iVar3 + 0xb4" identifier + number_literal) ))))) ;) (if_statement "if (((*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0)) ||\n       (*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4))) {\n      if (((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3)) {\n        return 1;\n      }\n      if (*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <\n          *(double *)(param_2 + 3) + *(double *)(param_2 + 5)) {\n        return 0xffffffff;\n      }\n      if (*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <\n          *(double *)(param_1 + 3) + *(double *)(param_1 + 5)) {\n        return 1;\n      }\n    }\n    else {\n      if (iVar3 == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) != iVar3) {\n        return 0xffffffff;\n      }\n    }" if (parenthesized_expression "(((*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0)) ||\n       (*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4)))" ( (binary_expression "((*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0)) ||\n       (*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4))" (parenthesized_expression "((*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0))" ( (binary_expression "(*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0)" (parenthesized_expression "(*(int *)(iVar1 + 0xb4) == 0)" ( (binary_expression "*(int *)(iVar1 + 0xb4) == 0" (pointer_expression "*(int *)(iVar1 + 0xb4)" * (cast_expression "(int *)(iVar1 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xb4)" ( (binary_expression "iVar1 + 0xb4" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(*(int *)(iVar2 + 0xb4) == 0)" ( (binary_expression "*(int *)(iVar2 + 0xb4) == 0" (pointer_expression "*(int *)(iVar2 + 0xb4)" * (cast_expression "(int *)(iVar2 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xb4)" ( (binary_expression "iVar2 + 0xb4" identifier + number_literal) )))) == number_literal) ))) )) || (parenthesized_expression "(*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4))" ( (binary_expression "*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4)" (pointer_expression "*(int *)(iVar1 + 0xb4)" * (cast_expression "(int *)(iVar1 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xb4)" ( (binary_expression "iVar1 + 0xb4" identifier + number_literal) )))) != (pointer_expression "*(int *)(iVar2 + 0xb4)" * (cast_expression "(int *)(iVar2 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xb4)" ( (binary_expression "iVar2 + 0xb4" identifier + number_literal) ))))) ))) )) (compound_statement "{\n      if (((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3)) {\n        return 1;\n      }\n      if (*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <\n          *(double *)(param_2 + 3) + *(double *)(param_2 + 5)) {\n        return 0xffffffff;\n      }\n      if (*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <\n          *(double *)(param_1 + 3) + *(double *)(param_1 + 5)) {\n        return 1;\n      }\n    }" { (if_statement "if (((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3)) {\n        return 1;\n      }" if (parenthesized_expression "(((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3))" ( (binary_expression "((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3)" (parenthesized_expression "((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0))" ( (binary_expression "(iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)" (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(int *)(iVar4 + 0xb4) != 0)" ( (binary_expression "*(int *)(iVar4 + 0xb4) != 0" (pointer_expression "*(int *)(iVar4 + 0xb4)" * (cast_expression "(int *)(iVar4 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xb4)" ( (binary_expression "iVar4 + 0xb4" identifier + number_literal) )))) != number_literal) ))) )) && (parenthesized_expression "(*(int *)(iVar4 + 0xb4) == iVar3)" ( (binary_expression "*(int *)(iVar4 + 0xb4) == iVar3" (pointer_expression "*(int *)(iVar4 + 0xb4)" * (cast_expression "(int *)(iVar4 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xb4)" ( (binary_expression "iVar4 + 0xb4" identifier + number_literal) )))) == identifier) ))) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if (*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <\n          *(double *)(param_2 + 3) + *(double *)(param_2 + 5)) {\n        return 0xffffffff;\n      }" if (parenthesized_expression "(*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <\n          *(double *)(param_2 + 3) + *(double *)(param_2 + 5))" ( (binary_expression "*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <\n          *(double *)(param_2 + 3) + *(double *)(param_2 + 5)" (binary_expression "*(double *)(param_1 + 3) + *(double *)(param_1 + 5)" (pointer_expression "*(double *)(param_1 + 3)" * (cast_expression "(double *)(param_1 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) )))) + (pointer_expression "*(double *)(param_1 + 5)" * (cast_expression "(double *)(param_1 + 5)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 5)" ( (binary_expression "param_1 + 5" identifier + number_literal) ))))) < (binary_expression "*(double *)(param_2 + 3) + *(double *)(param_2 + 5)" (pointer_expression "*(double *)(param_2 + 3)" * (cast_expression "(double *)(param_2 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) )))) + (pointer_expression "*(double *)(param_2 + 5)" * (cast_expression "(double *)(param_2 + 5)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 5)" ( (binary_expression "param_2 + 5" identifier + number_literal) )))))) )) (compound_statement "{\n        return 0xffffffff;\n      }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (if_statement "if (*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <\n          *(double *)(param_1 + 3) + *(double *)(param_1 + 5)) {\n        return 1;\n      }" if (parenthesized_expression "(*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <\n          *(double *)(param_1 + 3) + *(double *)(param_1 + 5))" ( (binary_expression "*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <\n          *(double *)(param_1 + 3) + *(double *)(param_1 + 5)" (binary_expression "*(double *)(param_2 + 3) + *(double *)(param_2 + 5)" (pointer_expression "*(double *)(param_2 + 3)" * (cast_expression "(double *)(param_2 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) )))) + (pointer_expression "*(double *)(param_2 + 5)" * (cast_expression "(double *)(param_2 + 5)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 5)" ( (binary_expression "param_2 + 5" identifier + number_literal) ))))) < (binary_expression "*(double *)(param_1 + 3) + *(double *)(param_1 + 5)" (pointer_expression "*(double *)(param_1 + 3)" * (cast_expression "(double *)(param_1 + 3)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) )))) + (pointer_expression "*(double *)(param_1 + 5)" * (cast_expression "(double *)(param_1 + 5)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 5)" ( (binary_expression "param_1 + 5" identifier + number_literal) )))))) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) }) (else_clause "else {\n      if (iVar3 == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) != iVar3) {\n        return 0xffffffff;\n      }\n    }" else (compound_statement "{\n      if (iVar3 == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) != iVar3) {\n        return 0xffffffff;\n      }\n    }" { (if_statement "if (iVar3 == 0) {\n        return 0xffffffff;\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        return 0xffffffff;\n      }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (if_statement "if (*(int *)(iVar4 + 0xb4) == 0) {\n        return 0xffffffff;\n      }" if (parenthesized_expression "(*(int *)(iVar4 + 0xb4) == 0)" ( (binary_expression "*(int *)(iVar4 + 0xb4) == 0" (pointer_expression "*(int *)(iVar4 + 0xb4)" * (cast_expression "(int *)(iVar4 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xb4)" ( (binary_expression "iVar4 + 0xb4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        return 0xffffffff;\n      }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (if_statement "if (*(int *)(iVar4 + 0xb4) != iVar3) {\n        return 0xffffffff;\n      }" if (parenthesized_expression "(*(int *)(iVar4 + 0xb4) != iVar3)" ( (binary_expression "*(int *)(iVar4 + 0xb4) != iVar3" (pointer_expression "*(int *)(iVar4 + 0xb4)" * (cast_expression "(int *)(iVar4 + 0xb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xb4)" ( (binary_expression "iVar4 + 0xb4" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n        return 0xffffffff;\n      }" { (return_statement "return 0xffffffff;" return number_literal ;) })) }))) (if_statement "if ((uint)param_2[2] <= (uint)param_1[2]) {\n      return (uint)((uint)param_2[2] < (uint)param_1[2]);\n    }" if (parenthesized_expression "((uint)param_2[2] <= (uint)param_1[2])" ( (binary_expression "(uint)param_2[2] <= (uint)param_1[2]" (cast_expression "(uint)param_2[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) <= (cast_expression "(uint)param_1[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) )) (compound_statement "{\n      return (uint)((uint)param_2[2] < (uint)param_1[2]);\n    }" { (return_statement "return (uint)((uint)param_2[2] < (uint)param_1[2]);" return (call_expression "(uint)((uint)param_2[2] < (uint)param_1[2])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)param_2[2] < (uint)param_1[2])" ( (binary_expression "(uint)param_2[2] < (uint)param_1[2]" (cast_expression "(uint)param_2[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(uint)param_1[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ))) ;) })) })) (return_statement "return 0xffffffff;" return number_literal ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) ))) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) < (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) < (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) (compound_statement { (return_statement return LIT ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) (compound_statement { (return_statement return LIT ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (return_statement return (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))) ;) })) })) (return_statement return LIT ;) })))
(function_definition "uint __regparm3 FUN_000162f0(int *param_1,int *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  \n  iVar1 = *param_1;\n  iVar2 = param_1[1];\n  iVar3 = *param_2;\n  iVar4 = param_2[1];\n  if ((DAT_0002d158 & 0x20) != 0) {\n    printf("[cmp_arc] ");\n    FUN_0001d740(iVar1);\n    printf(" calls ");\n    FUN_0001d740(iVar2);\n    printf(" %f + %f %lu/%lu\n",param_1[3],param_1[4],param_1[5],param_1[6],param_1[2],\n           *(undefined4 *)(iVar2 + 0x18));\n    printf("[cmp_arc] ");\n    FUN_0001d740(iVar3);\n    printf(" calls ");\n    FUN_0001d740(iVar4);\n    printf(" %f + %f %lu/%lu\n",param_2[3],param_2[4],param_2[5],param_2[6],param_2[2],\n           *(undefined4 *)(iVar4 + 0x18));\n    putchar(10);\n  }\n  if (iVar1 != iVar2) {\n    if (iVar3 == iVar4) {\n      return 1;\n    }\n    iVar3 = *(int *)(iVar3 + 0xb4);\n    if (((*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0)) ||\n       (*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4))) {\n      if (((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3)) {\n        return 1;\n      }\n      if (*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <\n          *(double *)(param_2 + 3) + *(double *)(param_2 + 5)) {\n        return 0xffffffff;\n      }\n      if (*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <\n          *(double *)(param_1 + 3) + *(double *)(param_1 + 5)) {\n        return 1;\n      }\n    }\n    else {\n      if (iVar3 == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) != iVar3) {\n        return 0xffffffff;\n      }\n    }\n    if ((uint)param_2[2] <= (uint)param_1[2]) {\n      return (uint)((uint)param_2[2] < (uint)param_1[2]);\n    }\n  }\n  return 0xffffffff;\n}" (type_identifier "uint") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_000162f0(int *param_1,int *param_2)" (identifier "FUN_000162f0") (parameter_list "(int *param_1,int *param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  \n  iVar1 = *param_1;\n  iVar2 = param_1[1];\n  iVar3 = *param_2;\n  iVar4 = param_2[1];\n  if ((DAT_0002d158 & 0x20) != 0) {\n    printf("[cmp_arc] ");\n    FUN_0001d740(iVar1);\n    printf(" calls ");\n    FUN_0001d740(iVar2);\n    printf(" %f + %f %lu/%lu\n",param_1[3],param_1[4],param_1[5],param_1[6],param_1[2],\n           *(undefined4 *)(iVar2 + 0x18));\n    printf("[cmp_arc] ");\n    FUN_0001d740(iVar3);\n    printf(" calls ");\n    FUN_0001d740(iVar4);\n    printf(" %f + %f %lu/%lu\n",param_2[3],param_2[4],param_2[5],param_2[6],param_2[2],\n           *(undefined4 *)(iVar4 + 0x18));\n    putchar(10);\n  }\n  if (iVar1 != iVar2) {\n    if (iVar3 == iVar4) {\n      return 1;\n    }\n    iVar3 = *(int *)(iVar3 + 0xb4);\n    if (((*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0)) ||\n       (*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4))) {\n      if (((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3)) {\n        return 1;\n      }\n      if (*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <\n          *(double *)(param_2 + 3) + *(double *)(param_2 + 5)) {\n        return 0xffffffff;\n      }\n      if (*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <\n          *(double *)(param_1 + 3) + *(double *)(param_1 + 5)) {\n        return 1;\n      }\n    }\n    else {\n      if (iVar3 == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) != iVar3) {\n        return 0xffffffff;\n      }\n    }\n    if ((uint)param_2[2] <= (uint)param_1[2]) {\n      return (uint)((uint)param_2[2] < (uint)param_1[2]);\n    }\n  }\n  return 0xffffffff;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (expression_statement "iVar1 = *param_1;" (assignment_expression "iVar1 = *param_1" (identifier "iVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "iVar2 = param_1[1];" (assignment_expression "iVar2 = param_1[1]" (identifier "iVar2") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "iVar3 = *param_2;" (assignment_expression "iVar3 = *param_2" (identifier "iVar3") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "iVar4 = param_2[1];" (assignment_expression "iVar4 = param_2[1]" (identifier "iVar4") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if ((DAT_0002d158 & 0x20) != 0) {\n    printf("[cmp_arc] ");\n    FUN_0001d740(iVar1);\n    printf(" calls ");\n    FUN_0001d740(iVar2);\n    printf(" %f + %f %lu/%lu\n",param_1[3],param_1[4],param_1[5],param_1[6],param_1[2],\n           *(undefined4 *)(iVar2 + 0x18));\n    printf("[cmp_arc] ");\n    FUN_0001d740(iVar3);\n    printf(" calls ");\n    FUN_0001d740(iVar4);\n    printf(" %f + %f %lu/%lu\n",param_2[3],param_2[4],param_2[5],param_2[6],param_2[2],\n           *(undefined4 *)(iVar4 + 0x18));\n    putchar(10);\n  }" (if "if") (parenthesized_expression "((DAT_0002d158 & 0x20) != 0)" (( "(") (binary_expression "(DAT_0002d158 & 0x20) != 0" (parenthesized_expression "(DAT_0002d158 & 0x20)" (( "(") (binary_expression "DAT_0002d158 & 0x20" (identifier "DAT_0002d158") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    printf("[cmp_arc] ");\n    FUN_0001d740(iVar1);\n    printf(" calls ");\n    FUN_0001d740(iVar2);\n    printf(" %f + %f %lu/%lu\n",param_1[3],param_1[4],param_1[5],param_1[6],param_1[2],\n           *(undefined4 *)(iVar2 + 0x18));\n    printf("[cmp_arc] ");\n    FUN_0001d740(iVar3);\n    printf(" calls ");\n    FUN_0001d740(iVar4);\n    printf(" %f + %f %lu/%lu\n",param_2[3],param_2[4],param_2[5],param_2[6],param_2[2],\n           *(undefined4 *)(iVar4 + 0x18));\n    putchar(10);\n  }" ({ "{") (expression_statement "printf("[cmp_arc] ");" (call_expression "printf("[cmp_arc] ")" (identifier "printf") (argument_list "("[cmp_arc] ")" (( "(") (string_literal ""[cmp_arc] "" (" """) (string_content "[cmp_arc] ") (" """)) () ")"))) (; ";")) (expression_statement "FUN_0001d740(iVar1);" (call_expression "FUN_0001d740(iVar1)" (identifier "FUN_0001d740") (argument_list "(iVar1)" (( "(") (identifier "iVar1") () ")"))) (; ";")) (expression_statement "printf(" calls ");" (call_expression "printf(" calls ")" (identifier "printf") (argument_list "(" calls ")" (( "(") (string_literal "" calls "" (" """) (string_content " calls ") (" """)) () ")"))) (; ";")) (expression_statement "FUN_0001d740(iVar2);" (call_expression "FUN_0001d740(iVar2)" (identifier "FUN_0001d740") (argument_list "(iVar2)" (( "(") (identifier "iVar2") () ")"))) (; ";")) (expression_statement "printf(" %f + %f %lu/%lu\n",param_1[3],param_1[4],param_1[5],param_1[6],param_1[2],\n           *(undefined4 *)(iVar2 + 0x18));" (call_expression "printf(" %f + %f %lu/%lu\n",param_1[3],param_1[4],param_1[5],param_1[6],param_1[2],\n           *(undefined4 *)(iVar2 + 0x18))" (identifier "printf") (argument_list "(" %f + %f %lu/%lu\n",param_1[3],param_1[4],param_1[5],param_1[6],param_1[2],\n           *(undefined4 *)(iVar2 + 0x18))" (( "(") (string_literal "" %f + %f %lu/%lu\n"" (" """) (string_content " %f + %f %lu/%lu") (escape_sequence "\n") (" """)) (, ",") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (, ",") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (, ",") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (, ",") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (, ",") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (, ",") (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x18)" (( "(") (binary_expression "iVar2 + 0x18" (identifier "iVar2") (+ "+") (number_literal "0x18")) () ")")))) () ")"))) (; ";")) (expression_statement "printf("[cmp_arc] ");" (call_expression "printf("[cmp_arc] ")" (identifier "printf") (argument_list "("[cmp_arc] ")" (( "(") (string_literal ""[cmp_arc] "" (" """) (string_content "[cmp_arc] ") (" """)) () ")"))) (; ";")) (expression_statement "FUN_0001d740(iVar3);" (call_expression "FUN_0001d740(iVar3)" (identifier "FUN_0001d740") (argument_list "(iVar3)" (( "(") (identifier "iVar3") () ")"))) (; ";")) (expression_statement "printf(" calls ");" (call_expression "printf(" calls ")" (identifier "printf") (argument_list "(" calls ")" (( "(") (string_literal "" calls "" (" """) (string_content " calls ") (" """)) () ")"))) (; ";")) (expression_statement "FUN_0001d740(iVar4);" (call_expression "FUN_0001d740(iVar4)" (identifier "FUN_0001d740") (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")"))) (; ";")) (expression_statement "printf(" %f + %f %lu/%lu\n",param_2[3],param_2[4],param_2[5],param_2[6],param_2[2],\n           *(undefined4 *)(iVar4 + 0x18));" (call_expression "printf(" %f + %f %lu/%lu\n",param_2[3],param_2[4],param_2[5],param_2[6],param_2[2],\n           *(undefined4 *)(iVar4 + 0x18))" (identifier "printf") (argument_list "(" %f + %f %lu/%lu\n",param_2[3],param_2[4],param_2[5],param_2[6],param_2[2],\n           *(undefined4 *)(iVar4 + 0x18))" (( "(") (string_literal "" %f + %f %lu/%lu\n"" (" """) (string_content " %f + %f %lu/%lu") (escape_sequence "\n") (" """)) (, ",") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (, ",") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (, ",") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]")) (, ",") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (, ",") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (, ",") (pointer_expression "*(undefined4 *)(iVar4 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x18)" (( "(") (binary_expression "iVar4 + 0x18" (identifier "iVar4") (+ "+") (number_literal "0x18")) () ")")))) () ")"))) (; ";")) (expression_statement "putchar(10);" (call_expression "putchar(10)" (identifier "putchar") (argument_list "(10)" (( "(") (number_literal "10") () ")"))) (; ";")) (} "}"))) (if_statement "if (iVar1 != iVar2) {\n    if (iVar3 == iVar4) {\n      return 1;\n    }\n    iVar3 = *(int *)(iVar3 + 0xb4);\n    if (((*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0)) ||\n       (*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4))) {\n      if (((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3)) {\n        return 1;\n      }\n      if (*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <\n          *(double *)(param_2 + 3) + *(double *)(param_2 + 5)) {\n        return 0xffffffff;\n      }\n      if (*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <\n          *(double *)(param_1 + 3) + *(double *)(param_1 + 5)) {\n        return 1;\n      }\n    }\n    else {\n      if (iVar3 == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) != iVar3) {\n        return 0xffffffff;\n      }\n    }\n    if ((uint)param_2[2] <= (uint)param_1[2]) {\n      return (uint)((uint)param_2[2] < (uint)param_1[2]);\n    }\n  }" (if "if") (parenthesized_expression "(iVar1 != iVar2)" (( "(") (binary_expression "iVar1 != iVar2" (identifier "iVar1") (!= "!=") (identifier "iVar2")) () ")")) (compound_statement "{\n    if (iVar3 == iVar4) {\n      return 1;\n    }\n    iVar3 = *(int *)(iVar3 + 0xb4);\n    if (((*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0)) ||\n       (*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4))) {\n      if (((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3)) {\n        return 1;\n      }\n      if (*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <\n          *(double *)(param_2 + 3) + *(double *)(param_2 + 5)) {\n        return 0xffffffff;\n      }\n      if (*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <\n          *(double *)(param_1 + 3) + *(double *)(param_1 + 5)) {\n        return 1;\n      }\n    }\n    else {\n      if (iVar3 == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) != iVar3) {\n        return 0xffffffff;\n      }\n    }\n    if ((uint)param_2[2] <= (uint)param_1[2]) {\n      return (uint)((uint)param_2[2] < (uint)param_1[2]);\n    }\n  }" ({ "{") (if_statement "if (iVar3 == iVar4) {\n      return 1;\n    }" (if "if") (parenthesized_expression "(iVar3 == iVar4)" (( "(") (binary_expression "iVar3 == iVar4" (identifier "iVar3") (== "==") (identifier "iVar4")) () ")")) (compound_statement "{\n      return 1;\n    }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "iVar3 = *(int *)(iVar3 + 0xb4);" (assignment_expression "iVar3 = *(int *)(iVar3 + 0xb4)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(iVar3 + 0xb4)" (* "*") (cast_expression "(int *)(iVar3 + 0xb4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0xb4)" (( "(") (binary_expression "iVar3 + 0xb4" (identifier "iVar3") (+ "+") (number_literal "0xb4")) () ")"))))) (; ";")) (if_statement "if (((*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0)) ||\n       (*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4))) {\n      if (((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3)) {\n        return 1;\n      }\n      if (*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <\n          *(double *)(param_2 + 3) + *(double *)(param_2 + 5)) {\n        return 0xffffffff;\n      }\n      if (*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <\n          *(double *)(param_1 + 3) + *(double *)(param_1 + 5)) {\n        return 1;\n      }\n    }\n    else {\n      if (iVar3 == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) != iVar3) {\n        return 0xffffffff;\n      }\n    }" (if "if") (parenthesized_expression "(((*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0)) ||\n       (*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4)))" (( "(") (binary_expression "((*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0)) ||\n       (*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4))" (parenthesized_expression "((*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0))" (( "(") (binary_expression "(*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0)" (parenthesized_expression "(*(int *)(iVar1 + 0xb4) == 0)" (( "(") (binary_expression "*(int *)(iVar1 + 0xb4) == 0" (pointer_expression "*(int *)(iVar1 + 0xb4)" (* "*") (cast_expression "(int *)(iVar1 + 0xb4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xb4)" (( "(") (binary_expression "iVar1 + 0xb4" (identifier "iVar1") (+ "+") (number_literal "0xb4")) () ")")))) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(int *)(iVar2 + 0xb4) == 0)" (( "(") (binary_expression "*(int *)(iVar2 + 0xb4) == 0" (pointer_expression "*(int *)(iVar2 + 0xb4)" (* "*") (cast_expression "(int *)(iVar2 + 0xb4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0xb4)" (( "(") (binary_expression "iVar2 + 0xb4" (identifier "iVar2") (+ "+") (number_literal "0xb4")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4))" (( "(") (binary_expression "*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4)" (pointer_expression "*(int *)(iVar1 + 0xb4)" (* "*") (cast_expression "(int *)(iVar1 + 0xb4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xb4)" (( "(") (binary_expression "iVar1 + 0xb4" (identifier "iVar1") (+ "+") (number_literal "0xb4")) () ")")))) (!= "!=") (pointer_expression "*(int *)(iVar2 + 0xb4)" (* "*") (cast_expression "(int *)(iVar2 + 0xb4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0xb4)" (( "(") (binary_expression "iVar2 + 0xb4" (identifier "iVar2") (+ "+") (number_literal "0xb4")) () ")"))))) () ")"))) () ")")) (compound_statement "{\n      if (((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3)) {\n        return 1;\n      }\n      if (*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <\n          *(double *)(param_2 + 3) + *(double *)(param_2 + 5)) {\n        return 0xffffffff;\n      }\n      if (*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <\n          *(double *)(param_1 + 3) + *(double *)(param_1 + 5)) {\n        return 1;\n      }\n    }" ({ "{") (if_statement "if (((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3)) {\n        return 1;\n      }" (if "if") (parenthesized_expression "(((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3))" (( "(") (binary_expression "((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3)" (parenthesized_expression "((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0))" (( "(") (binary_expression "(iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)" (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(iVar4 + 0xb4) != 0)" (( "(") (binary_expression "*(int *)(iVar4 + 0xb4) != 0" (pointer_expression "*(int *)(iVar4 + 0xb4)" (* "*") (cast_expression "(int *)(iVar4 + 0xb4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0xb4)" (( "(") (binary_expression "iVar4 + 0xb4" (identifier "iVar4") (+ "+") (number_literal "0xb4")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(iVar4 + 0xb4) == iVar3)" (( "(") (binary_expression "*(int *)(iVar4 + 0xb4) == iVar3" (pointer_expression "*(int *)(iVar4 + 0xb4)" (* "*") (cast_expression "(int *)(iVar4 + 0xb4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0xb4)" (( "(") (binary_expression "iVar4 + 0xb4" (identifier "iVar4") (+ "+") (number_literal "0xb4")) () ")")))) (== "==") (identifier "iVar3")) () ")"))) () ")")) (compound_statement "{\n        return 1;\n      }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (if_statement "if (*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <\n          *(double *)(param_2 + 3) + *(double *)(param_2 + 5)) {\n        return 0xffffffff;\n      }" (if "if") (parenthesized_expression "(*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <\n          *(double *)(param_2 + 3) + *(double *)(param_2 + 5))" (( "(") (binary_expression "*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <\n          *(double *)(param_2 + 3) + *(double *)(param_2 + 5)" (binary_expression "*(double *)(param_1 + 3) + *(double *)(param_1 + 5)" (pointer_expression "*(double *)(param_1 + 3)" (* "*") (cast_expression "(double *)(param_1 + 3)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 3)" (( "(") (binary_expression "param_1 + 3" (identifier "param_1") (+ "+") (number_literal "3")) () ")")))) (+ "+") (pointer_expression "*(double *)(param_1 + 5)" (* "*") (cast_expression "(double *)(param_1 + 5)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 5)" (( "(") (binary_expression "param_1 + 5" (identifier "param_1") (+ "+") (number_literal "5")) () ")"))))) (< "<") (binary_expression "*(double *)(param_2 + 3) + *(double *)(param_2 + 5)" (pointer_expression "*(double *)(param_2 + 3)" (* "*") (cast_expression "(double *)(param_2 + 3)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 3)" (( "(") (binary_expression "param_2 + 3" (identifier "param_2") (+ "+") (number_literal "3")) () ")")))) (+ "+") (pointer_expression "*(double *)(param_2 + 5)" (* "*") (cast_expression "(double *)(param_2 + 5)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 5)" (( "(") (binary_expression "param_2 + 5" (identifier "param_2") (+ "+") (number_literal "5")) () ")")))))) () ")")) (compound_statement "{\n        return 0xffffffff;\n      }" ({ "{") (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}"))) (if_statement "if (*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <\n          *(double *)(param_1 + 3) + *(double *)(param_1 + 5)) {\n        return 1;\n      }" (if "if") (parenthesized_expression "(*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <\n          *(double *)(param_1 + 3) + *(double *)(param_1 + 5))" (( "(") (binary_expression "*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <\n          *(double *)(param_1 + 3) + *(double *)(param_1 + 5)" (binary_expression "*(double *)(param_2 + 3) + *(double *)(param_2 + 5)" (pointer_expression "*(double *)(param_2 + 3)" (* "*") (cast_expression "(double *)(param_2 + 3)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 3)" (( "(") (binary_expression "param_2 + 3" (identifier "param_2") (+ "+") (number_literal "3")) () ")")))) (+ "+") (pointer_expression "*(double *)(param_2 + 5)" (* "*") (cast_expression "(double *)(param_2 + 5)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 5)" (( "(") (binary_expression "param_2 + 5" (identifier "param_2") (+ "+") (number_literal "5")) () ")"))))) (< "<") (binary_expression "*(double *)(param_1 + 3) + *(double *)(param_1 + 5)" (pointer_expression "*(double *)(param_1 + 3)" (* "*") (cast_expression "(double *)(param_1 + 3)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 3)" (( "(") (binary_expression "param_1 + 3" (identifier "param_1") (+ "+") (number_literal "3")) () ")")))) (+ "+") (pointer_expression "*(double *)(param_1 + 5)" (* "*") (cast_expression "(double *)(param_1 + 5)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 5)" (( "(") (binary_expression "param_1 + 5" (identifier "param_1") (+ "+") (number_literal "5")) () ")")))))) () ")")) (compound_statement "{\n        return 1;\n      }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      if (iVar3 == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) != iVar3) {\n        return 0xffffffff;\n      }\n    }" (else "else") (compound_statement "{\n      if (iVar3 == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) == 0) {\n        return 0xffffffff;\n      }\n      if (*(int *)(iVar4 + 0xb4) != iVar3) {\n        return 0xffffffff;\n      }\n    }" ({ "{") (if_statement "if (iVar3 == 0) {\n        return 0xffffffff;\n      }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return 0xffffffff;\n      }" ({ "{") (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}"))) (if_statement "if (*(int *)(iVar4 + 0xb4) == 0) {\n        return 0xffffffff;\n      }" (if "if") (parenthesized_expression "(*(int *)(iVar4 + 0xb4) == 0)" (( "(") (binary_expression "*(int *)(iVar4 + 0xb4) == 0" (pointer_expression "*(int *)(iVar4 + 0xb4)" (* "*") (cast_expression "(int *)(iVar4 + 0xb4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0xb4)" (( "(") (binary_expression "iVar4 + 0xb4" (identifier "iVar4") (+ "+") (number_literal "0xb4")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return 0xffffffff;\n      }" ({ "{") (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}"))) (if_statement "if (*(int *)(iVar4 + 0xb4) != iVar3) {\n        return 0xffffffff;\n      }" (if "if") (parenthesized_expression "(*(int *)(iVar4 + 0xb4) != iVar3)" (( "(") (binary_expression "*(int *)(iVar4 + 0xb4) != iVar3" (pointer_expression "*(int *)(iVar4 + 0xb4)" (* "*") (cast_expression "(int *)(iVar4 + 0xb4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0xb4)" (( "(") (binary_expression "iVar4 + 0xb4" (identifier "iVar4") (+ "+") (number_literal "0xb4")) () ")")))) (!= "!=") (identifier "iVar3")) () ")")) (compound_statement "{\n        return 0xffffffff;\n      }" ({ "{") (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}"))) (} "}")))) (if_statement "if ((uint)param_2[2] <= (uint)param_1[2]) {\n      return (uint)((uint)param_2[2] < (uint)param_1[2]);\n    }" (if "if") (parenthesized_expression "((uint)param_2[2] <= (uint)param_1[2])" (( "(") (binary_expression "(uint)param_2[2] <= (uint)param_1[2]" (cast_expression "(uint)param_2[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (<= "<=") (cast_expression "(uint)param_1[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) () ")")) (compound_statement "{\n      return (uint)((uint)param_2[2] < (uint)param_1[2]);\n    }" ({ "{") (return_statement "return (uint)((uint)param_2[2] < (uint)param_1[2]);" (return "return") (call_expression "(uint)((uint)param_2[2] < (uint)param_1[2])" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((uint)param_2[2] < (uint)param_1[2])" (( "(") (binary_expression "(uint)param_2[2] < (uint)param_1[2]" (cast_expression "(uint)param_2[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(uint)param_1[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) () ")"))) (; ";")) (} "}"))) (} "}"))) (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}")))

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

int __regparm3 function_1(type_1 *left,type_1 *right)

{
  type_2 *var_4;
  type_2 *var_5;
  type_2 *var_6;
  type_2 *var_7;
  int var_8;
  int var_10;
  int var_9;
  double var_11;
  double var_12;
  
  var_4 = left->parent;
  var_5 = left->child;
  var_6 = right->parent;
  var_7 = right->child;
  if (((type_3)debug_level & 0x20) != 0) {
    var_1("[cmp_arc] ");
    var_2(var_4);
    var_1(" calls ");
    var_2(var_5);
    var_1(" %f + %f %lu/%lu\n",*(type_4 *)&left->time,*(type_4 *)((int)&left->time + 4),
           *(type_4 *)&left->child_time,*(type_4 *)((int)&left->child_time + 4),left->count,
           var_5->ncalls);
    var_1("[cmp_arc] ");
    var_2(var_6);
    var_1(" calls ");
    var_2(var_7);
    var_1(" %f + %f %lu/%lu\n",*(type_4 *)&right->time,*(type_4 *)((int)&right->time + 4),
           *(type_4 *)&right->child_time,*(type_4 *)((int)&right->child_time + 4),
           right->count,var_7->ncalls);
    var_3(10);
  }
  if (var_4 != var_5) {
    if (var_6 == var_7) {
      return 1;
    }
    var_8 = (var_4->cg).cyc.num;
    var_10 = (var_6->cg).cyc.num;
    if (((var_8 == 0) || (var_9 = (var_5->cg).cyc.num, var_9 == 0)) || (var_8 != var_9)) {
      if (((var_10 != 0) && (var_8 = (var_7->cg).cyc.num, var_8 != 0)) && (var_8 == var_10)) {
        return 1;
      }
      var_11 = left->time + left->child_time;
      var_12 = right->time + right->child_time;
      if (var_11 < var_12) {
        return -1;
      }
      if (var_12 < var_11) {
        return 1;
      }
    }
    else {
      if (var_10 == 0) {
        return -1;
      }
      var_8 = (var_7->cg).cyc.num;
      if (var_8 == 0) {
        return -1;
      }
      if (var_8 != var_10) {
        return -1;
      }
    }
    if (right->count <= left->count) {
      return (uint)(right->count < left->count);
    }
  }
  return -1;
}


(translation_unit (function_definition type: (type_identifier) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (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)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (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)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) consequence: (compound_statement (return_statement (number_literal))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (return_statement (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (return_statement (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))))))))) (return_statement (number_literal)))))

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

uint __regparm3 MASKED(int *param_1,int *param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  
  iVar1 = *param_1;
  iVar2 = param_1[1];
  iVar3 = *param_2;
  iVar4 = param_2[1];
  if ((DAT_0002d158 & 0x20) != 0) {
    printf("[cmp_arc] ");
    FUN_0001d740(iVar1);
    printf(" calls ");
    FUN_0001d740(iVar2);
    printf(" %f + %f %lu/%lu\n",param_1[3],param_1[4],param_1[5],param_1[6],param_1[2],
           *(undefined4 *)(iVar2 + 0x18));
    printf("[cmp_arc] ");
    FUN_0001d740(iVar3);
    printf(" calls ");
    FUN_0001d740(iVar4);
    printf(" %f + %f %lu/%lu\n",param_2[3],param_2[4],param_2[5],param_2[6],param_2[2],
           *(undefined4 *)(iVar4 + 0x18));
    putchar(10);
  }
  if (iVar1 != iVar2) {
    if (iVar3 == iVar4) {
      return 1;
    }
    iVar3 = *(int *)(iVar3 + 0xb4);
    if (((*(int *)(iVar1 + 0xb4) == 0) || (*(int *)(iVar2 + 0xb4) == 0)) ||
       (*(int *)(iVar1 + 0xb4) != *(int *)(iVar2 + 0xb4))) {
      if (((iVar3 != 0) && (*(int *)(iVar4 + 0xb4) != 0)) && (*(int *)(iVar4 + 0xb4) == iVar3)) {
        return 1;
      }
      if (*(double *)(param_1 + 3) + *(double *)(param_1 + 5) <
          *(double *)(param_2 + 3) + *(double *)(param_2 + 5)) {
        return 0xffffffff;
      }
      if (*(double *)(param_2 + 3) + *(double *)(param_2 + 5) <
          *(double *)(param_1 + 3) + *(double *)(param_1 + 5)) {
        return 1;
      }
    }
    else {
      if (iVar3 == 0) {
        return 0xffffffff;
      }
      if (*(int *)(iVar4 + 0xb4) == 0) {
        return 0xffffffff;
      }
      if (*(int *)(iVar4 + 0xb4) != iVar3) {
        return 0xffffffff;
      }
    }
    if ((uint)param_2[2] <= (uint)param_1[2]) {
      return (uint)((uint)param_2[2] < (uint)param_1[2]);
    }
  }
  return 0xffffffff;
}

