
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* DWARF original name: __merge_without_buffer<__gnu_cxx::__normal_iterator<gold::Output_section**,
   std::vector<gold::Output_section*> >, int, __gnu_cxx::__ops::_Iter_comp_iter<(anonymous
   namespace)::Target_powerpc<64, true>::Sort_sections> > */

void std::
     __merge_without_buffer<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_int,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_true>::Sort_sections>_>
               (void)

{
}



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

void __regparm3 FUN_000cc130(int param_1,int *param_2,int param_3)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined4 unaff_EBX;
  undefined4 unaff_EBP;
  undefined4 unaff_ESI;
  undefined4 unaff_EDI;
  
  while( true ) {
    *(undefined4 *)((int)register0x00000010 + -4) = unaff_EBP;
    *(undefined4 *)((int)register0x00000010 + -8) = unaff_EDI;
    *(undefined4 *)((int)register0x00000010 + -0xc) = unaff_ESI;
    *(undefined4 *)((int)register0x00000010 + -0x10) = unaff_EBX;
    *(undefined4 *)((int)register0x00000010 + -0x14) = 0xcc139;
    iVar1 = *(int *)((int)register0x00000010 + 4);
    iVar2 = *(int *)((int)register0x00000010 + 8);
    *(int *)((int)register0x00000010 + -0x40) = param_1;
    *(char *)((int)register0x00000010 + -0x39) = (char)*(int *)((int)register0x00000010 + 0xc);
    if (iVar1 == 0) {
      return;
    }
    if (iVar2 == 0) {
      return;
    }
    *(int *)((int)register0x00000010 + -0x2c) = param_3;
    if (iVar1 + iVar2 == 2) break;
    if (iVar2 < iVar1) {
      *(int *)((int)register0x00000010 + -0x38) = iVar1 / 2;
      param_1 = *(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4;
      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);
      *(int *)((int)register0x00000010 + -0x5c) = param_1;
      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc269;
      FUN_000ba7c0();
      *(int *)((int)register0x00000010 + -0x30) = *(int *)((int)register0x00000010 + -0x20);
      iVar3 = *(int *)((int)register0x00000010 + -0x20) - (int)param_2;
      *(int *)((int)register0x00000010 + -0x34) = iVar3 >> 2;
    }
    else {
      iVar3 = iVar2 / 2;
      *(int *)((int)register0x00000010 + -0x34) = iVar3;
      *(int *)((int)register0x00000010 + -0x28) = iVar3 * 4;
      *(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3;
      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);
      *(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3;
      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5;
      FUN_000ba670();
      param_1 = *(int *)((int)register0x00000010 + -0x20);
      iVar3 = *(int *)((int)register0x00000010 + -0x28);
      *(int *)((int)register0x00000010 + -0x38) =
           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2;
    }
    *(int *)((int)register0x00000010 + -0x28) = iVar3;
    *(undefined4 *)((int)register0x00000010 + -0x5c) = 0;
    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x30);
    *(int **)((int)register0x00000010 + -100) = param_2;
    *(int *)((int)register0x00000010 + -0x68) = param_1;
    *(int *)((int)register0x00000010 + -0x6c) = *(int *)((int)register0x00000010 + -0x24);
    *(undefined4 *)((int)register0x00000010 + -0x70) = 0xcc1e7;
    FUN_001055f0();
    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x2c);
    *(uint *)((int)register0x00000010 + -0x58) = (uint)*(byte *)((int)register0x00000010 + -0x3d);
    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x38);
    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x3c);
    *(undefined4 *)((int)register0x00000010 + -100) = 0xcc20c;
    FUN_000cc130();
    param_3 = *(int *)((int)register0x00000010 + -0x30);
    *(int *)((int)register0x00000010 + 4) = iVar2 - *(int *)((int)register0x00000010 + -0x38);
    *(undefined1 *)((int)register0x00000010 + 8) = *(undefined1 *)((int)register0x00000010 + -0x3d);
    param_2 = *(int **)((int)register0x00000010 + -0x34);
    *(int *)register0x00000010 = iVar1 - *(int *)((int)register0x00000010 + -0x3c);
    unaff_EBX = *(int *)((int)register0x00000010 + -0x14);
    unaff_ESI = *(int *)((int)register0x00000010 + -0x10);
    unaff_EDI = *(int *)((int)register0x00000010 + -0xc);
    unaff_EBP = *(int *)((int)register0x00000010 + -8);
    register0x00000010 = (BADSPACEBASE *)((int)register0x00000010 + -4);
  }
  iVar1 = *param_2;
  iVar2 = **(int **)((int)register0x00000010 + -0x40);
  if ((*(byte *)(iVar1 + 0x1c) & 1) == 0) {
    *(int *)((int)register0x00000010 + -0x50) = iVar2;
    *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x14) + 0x39983b
    ;
    *(undefined4 *)((int)register0x00000010 + -0x58) = 0xc5;
    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x14) + 0x381224
    ;
                    /* WARNING: Subroutine does not return */
    *(undefined **)((int)register0x00000010 + -0x60) = &UNK_000cc2d9;
    FUN_002446e0();
  }
  if ((*(byte *)(iVar2 + 0x1c) & 1) != 0) {
    if (*(uint *)(iVar1 + 8) < *(uint *)(iVar2 + 8) ||
        *(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8) <
        (uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))) {
      **(int **)((int)register0x00000010 + -0x40) = iVar1;
      *param_2 = iVar2;
    }
    return;
  }
                    /* WARNING: Subroutine does not return */
  *(undefined4 *)((int)register0x00000010 + -0x50) = 0xcc2c0;
  FUN_000b0510();
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00050b50
ADD EBX,0x51dec7
SUB ESP,0x3c
MOV ESI,dword ptr [ESP + 0x50]
MOV EDI,dword ptr [ESP + 0x54]
MOV dword ptr [ESP + 0xc],EAX
MOVZX EAX,byte ptr [ESP + 0x58]
MOV byte ptr [ESP + 0x13],AL
TEST ESI,ESI
JZ 0x000cc2b3
TEST EDI,EDI
JZ 0x000cc2b3
LEA EAX,[ESI + EDI*0x1]
MOV dword ptr [ESP + 0x20],ECX
MOV EBP,EDX
CMP EAX,0x2
JZ 0x000cc288
CMP ESI,EDI
JG 0x000cc240
MOV EAX,EDI
MOV ECX,EBP
SHR EAX,0x1f
ADD EAX,EDI
SAR EAX,0x1
MOV dword ptr [ESP + 0x18],EAX
SHL EAX,0x2
LEA EBX,[EDX + EAX*0x1]
LEA EDX,[ESP + 0x2c]
MOV dword ptr [ESP + 0x24],EAX
SUB ESP,0xc
MOV dword ptr [ESP + 0x28],EBX
MOV EAX,EDX
MOV dword ptr [ESP + 0x34],EDX
PUSH EBX
MOV EDX,dword ptr [ESP + 0x1c]
CALL 0x000ba670
MOV EBX,dword ptr [ESP + 0x3c]
MOV EAX,dword ptr [ESP + 0x34]
MOV EDX,EBX
SUB EDX,dword ptr [ESP + 0x1c]
MOV ECX,EDX
SAR ECX,0x2
MOV dword ptr [ESP + 0x24],ECX
ADD ESP,0x10
MOV dword ptr [ESP + 0x24],EAX
SUB ESP,0xc
PUSH 0x0
PUSH dword ptr [ESP + 0x2c]
PUSH EBP
PUSH EBX
PUSH dword ptr [ESP + 0x44]
CALL 0x001055f0
MOV EDX,EBX
MOV EAX,dword ptr [ESP + 0x40]
ADD ESP,0x18
LEA EBP,[EBX + EAX*0x1]
MOVZX EAX,byte ptr [ESP + 0x17]
MOV ECX,EBP
PUSH EAX
PUSH dword ptr [ESP + 0x20]
PUSH dword ptr [ESP + 0x20]
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x000cc130
MOVZX EAX,byte ptr [ESP + 0x23]
SUB EDI,dword ptr [ESP + 0x28]
SUB ESI,dword ptr [ESP + 0x24]
MOV ECX,dword ptr [ESP + 0x30]
MOV dword ptr [ESP + 0x64],EDI
MOV byte ptr [ESP + 0x68],AL
MOV EDX,dword ptr [ESP + 0x2c]
MOV EAX,EBP
MOV dword ptr [ESP + 0x60],ESI
ADD ESP,0x4c
POP EBX
POP ESI
POP EDI
POP EBP
JMP 0x000cc130
MOV EAX,ESI
MOV EBX,dword ptr [ESP + 0xc]
SHR EAX,0x1f
ADD EAX,ESI
SAR EAX,0x1
MOV dword ptr [ESP + 0x14],EAX
LEA EBX,[EBX + EAX*0x4]
LEA EAX,[ESP + 0x2c]
SUB ESP,0xc
MOV dword ptr [ESP + 0x34],EAX
PUSH EBX
MOV ECX,dword ptr [ESP + 0x30]
CALL 0x000ba7c0
MOV EAX,dword ptr [ESP + 0x3c]
MOV dword ptr [ESP + 0x2c],EAX
SUB EAX,EBP
MOV ECX,EAX
SAR ECX,0x2
MOV dword ptr [ESP + 0x28],ECX
ADD ESP,0x10
JMP 0x000cc1cf
MOV EAX,dword ptr [ESP + 0xc]
MOV EDX,dword ptr [EDX]
MOV EAX,dword ptr [EAX]
TEST byte ptr [EDX + 0x1c],0x1
JZ 0x000cc2c0
MOV EBX,dword ptr [EDX + 0x4]
MOV ECX,dword ptr [EDX + 0x8]
TEST byte ptr [EAX + 0x1c],0x1
JZ 0x000cc2bb
CMP EBX,dword ptr [EAX + 0x4]
SBB ECX,dword ptr [EAX + 0x8]
JNC 0x000cc2b3
MOV EDI,dword ptr [ESP + 0xc]
MOV dword ptr [EDI],EDX
MOV dword ptr [EBP],EAX
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
CALL 0x000b0510
PUSH EAX
LEA EAX,[EBX + 0xffe7b974]
PUSH EAX
LEA EAX,[EBX + 0xffe6335d]
PUSH 0xc5
PUSH EAX
CALL 0x002446e0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid __regparm3 FUN_000cc130(int param_1,int *param_2,int param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 unaff_EBX;\n  undefined4 unaff_EBP;\n  undefined4 unaff_ESI;\n  undefined4 unaff_EDI;\n  \n  while( true ) {\n    *(undefined4 *)((int)register0x00000010 + -4) = unaff_EBP;\n    *(undefined4 *)((int)register0x00000010 + -8) = unaff_EDI;\n    *(undefined4 *)((int)register0x00000010 + -0xc) = unaff_ESI;\n    *(undefined4 *)((int)register0x00000010 + -0x10) = unaff_EBX;\n    *(undefined4 *)((int)register0x00000010 + -0x14) = 0xcc139;\n    iVar1 = *(int *)((int)register0x00000010 + 4);\n    iVar2 = *(int *)((int)register0x00000010 + 8);\n    *(int *)((int)register0x00000010 + -0x40) = param_1;\n    *(char *)((int)register0x00000010 + -0x39) = (char)*(int *)((int)register0x00000010 + 0xc);\n    if (iVar1 == 0) {\n      return;\n    }\n    if (iVar2 == 0) {\n      return;\n    }\n    *(int *)((int)register0x00000010 + -0x2c) = param_3;\n    if (iVar1 + iVar2 == 2) break;\n    if (iVar2 < iVar1) {\n      *(int *)((int)register0x00000010 + -0x38) = iVar1 / 2;\n      param_1 = *(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int *)((int)register0x00000010 + -0x5c) = param_1;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc269;\n      FUN_000ba7c0();\n      *(int *)((int)register0x00000010 + -0x30) = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x20) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3 >> 2;\n    }\n    else {\n      iVar3 = iVar2 / 2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3;\n      *(int *)((int)register0x00000010 + -0x28) = iVar3 * 4;\n      *(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5;\n      FUN_000ba670();\n      param_1 = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x28);\n      *(int *)((int)register0x00000010 + -0x38) =\n           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2;\n    }\n    *(int *)((int)register0x00000010 + -0x28) = iVar3;\n    *(undefined4 *)((int)register0x00000010 + -0x5c) = 0;\n    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x30);\n    *(int **)((int)register0x00000010 + -100) = param_2;\n    *(int *)((int)register0x00000010 + -0x68) = param_1;\n    *(int *)((int)register0x00000010 + -0x6c) = *(int *)((int)register0x00000010 + -0x24);\n    *(undefined4 *)((int)register0x00000010 + -0x70) = 0xcc1e7;\n    FUN_001055f0();\n    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x2c);\n    *(uint *)((int)register0x00000010 + -0x58) = (uint)*(byte *)((int)register0x00000010 + -0x3d);\n    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x38);\n    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x3c);\n    *(undefined4 *)((int)register0x00000010 + -100) = 0xcc20c;\n    FUN_000cc130();\n    param_3 = *(int *)((int)register0x00000010 + -0x30);\n    *(int *)((int)register0x00000010 + 4) = iVar2 - *(int *)((int)register0x00000010 + -0x38);\n    *(undefined1 *)((int)register0x00000010 + 8) = *(undefined1 *)((int)register0x00000010 + -0x3d);\n    param_2 = *(int **)((int)register0x00000010 + -0x34);\n    *(int *)register0x00000010 = iVar1 - *(int *)((int)register0x00000010 + -0x3c);\n    unaff_EBX = *(int *)((int)register0x00000010 + -0x14);\n    unaff_ESI = *(int *)((int)register0x00000010 + -0x10);\n    unaff_EDI = *(int *)((int)register0x00000010 + -0xc);\n    unaff_EBP = *(int *)((int)register0x00000010 + -8);\n    register0x00000010 = (BADSPACEBASE *)((int)register0x00000010 + -4);\n  }\n  iVar1 = *param_2;\n  iVar2 = **(int **)((int)register0x00000010 + -0x40);\n  if ((*(byte *)(iVar1 + 0x1c) & 1) == 0) {\n    *(int *)((int)register0x00000010 + -0x50) = iVar2;\n    *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x14) + 0x39983b\n    ;\n    *(undefined4 *)((int)register0x00000010 + -0x58) = 0xc5;\n    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x14) + 0x381224\n    ;\n                    /* WARNING: Subroutine does not return */\n    *(undefined **)((int)register0x00000010 + -0x60) = &UNK_000cc2d9;\n    FUN_002446e0();\n  }\n  if ((*(byte *)(iVar2 + 0x1c) & 1) != 0) {\n    if (*(uint *)(iVar1 + 8) < *(uint *)(iVar2 + 8) ||\n        *(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8) <\n        (uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))) {\n      **(int **)((int)register0x00000010 + -0x40) = iVar1;\n      *param_2 = iVar2;\n    }\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  *(undefined4 *)((int)register0x00000010 + -0x50) = 0xcc2c0;\n  FUN_000b0510();\n}\n\n" comment (function_definition "void __regparm3 FUN_000cc130(int param_1,int *param_2,int param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 unaff_EBX;\n  undefined4 unaff_EBP;\n  undefined4 unaff_ESI;\n  undefined4 unaff_EDI;\n  \n  while( true ) {\n    *(undefined4 *)((int)register0x00000010 + -4) = unaff_EBP;\n    *(undefined4 *)((int)register0x00000010 + -8) = unaff_EDI;\n    *(undefined4 *)((int)register0x00000010 + -0xc) = unaff_ESI;\n    *(undefined4 *)((int)register0x00000010 + -0x10) = unaff_EBX;\n    *(undefined4 *)((int)register0x00000010 + -0x14) = 0xcc139;\n    iVar1 = *(int *)((int)register0x00000010 + 4);\n    iVar2 = *(int *)((int)register0x00000010 + 8);\n    *(int *)((int)register0x00000010 + -0x40) = param_1;\n    *(char *)((int)register0x00000010 + -0x39) = (char)*(int *)((int)register0x00000010 + 0xc);\n    if (iVar1 == 0) {\n      return;\n    }\n    if (iVar2 == 0) {\n      return;\n    }\n    *(int *)((int)register0x00000010 + -0x2c) = param_3;\n    if (iVar1 + iVar2 == 2) break;\n    if (iVar2 < iVar1) {\n      *(int *)((int)register0x00000010 + -0x38) = iVar1 / 2;\n      param_1 = *(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int *)((int)register0x00000010 + -0x5c) = param_1;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc269;\n      FUN_000ba7c0();\n      *(int *)((int)register0x00000010 + -0x30) = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x20) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3 >> 2;\n    }\n    else {\n      iVar3 = iVar2 / 2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3;\n      *(int *)((int)register0x00000010 + -0x28) = iVar3 * 4;\n      *(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5;\n      FUN_000ba670();\n      param_1 = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x28);\n      *(int *)((int)register0x00000010 + -0x38) =\n           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2;\n    }\n    *(int *)((int)register0x00000010 + -0x28) = iVar3;\n    *(undefined4 *)((int)register0x00000010 + -0x5c) = 0;\n    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x30);\n    *(int **)((int)register0x00000010 + -100) = param_2;\n    *(int *)((int)register0x00000010 + -0x68) = param_1;\n    *(int *)((int)register0x00000010 + -0x6c) = *(int *)((int)register0x00000010 + -0x24);\n    *(undefined4 *)((int)register0x00000010 + -0x70) = 0xcc1e7;\n    FUN_001055f0();\n    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x2c);\n    *(uint *)((int)register0x00000010 + -0x58) = (uint)*(byte *)((int)register0x00000010 + -0x3d);\n    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x38);\n    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x3c);\n    *(undefined4 *)((int)register0x00000010 + -100) = 0xcc20c;\n    FUN_000cc130();\n    param_3 = *(int *)((int)register0x00000010 + -0x30);\n    *(int *)((int)register0x00000010 + 4) = iVar2 - *(int *)((int)register0x00000010 + -0x38);\n    *(undefined1 *)((int)register0x00000010 + 8) = *(undefined1 *)((int)register0x00000010 + -0x3d);\n    param_2 = *(int **)((int)register0x00000010 + -0x34);\n    *(int *)register0x00000010 = iVar1 - *(int *)((int)register0x00000010 + -0x3c);\n    unaff_EBX = *(int *)((int)register0x00000010 + -0x14);\n    unaff_ESI = *(int *)((int)register0x00000010 + -0x10);\n    unaff_EDI = *(int *)((int)register0x00000010 + -0xc);\n    unaff_EBP = *(int *)((int)register0x00000010 + -8);\n    register0x00000010 = (BADSPACEBASE *)((int)register0x00000010 + -4);\n  }\n  iVar1 = *param_2;\n  iVar2 = **(int **)((int)register0x00000010 + -0x40);\n  if ((*(byte *)(iVar1 + 0x1c) & 1) == 0) {\n    *(int *)((int)register0x00000010 + -0x50) = iVar2;\n    *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x14) + 0x39983b\n    ;\n    *(undefined4 *)((int)register0x00000010 + -0x58) = 0xc5;\n    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x14) + 0x381224\n    ;\n                    /* WARNING: Subroutine does not return */\n    *(undefined **)((int)register0x00000010 + -0x60) = &UNK_000cc2d9;\n    FUN_002446e0();\n  }\n  if ((*(byte *)(iVar2 + 0x1c) & 1) != 0) {\n    if (*(uint *)(iVar1 + 8) < *(uint *)(iVar2 + 8) ||\n        *(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8) <\n        (uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))) {\n      **(int **)((int)register0x00000010 + -0x40) = iVar1;\n      *param_2 = iVar2;\n    }\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  *(undefined4 *)((int)register0x00000010 + -0x50) = 0xcc2c0;\n  FUN_000b0510();\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_000cc130(int param_1,int *param_2,int param_3)" identifier (parameter_list "(int param_1,int *param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 unaff_EBX;\n  undefined4 unaff_EBP;\n  undefined4 unaff_ESI;\n  undefined4 unaff_EDI;\n  \n  while( true ) {\n    *(undefined4 *)((int)register0x00000010 + -4) = unaff_EBP;\n    *(undefined4 *)((int)register0x00000010 + -8) = unaff_EDI;\n    *(undefined4 *)((int)register0x00000010 + -0xc) = unaff_ESI;\n    *(undefined4 *)((int)register0x00000010 + -0x10) = unaff_EBX;\n    *(undefined4 *)((int)register0x00000010 + -0x14) = 0xcc139;\n    iVar1 = *(int *)((int)register0x00000010 + 4);\n    iVar2 = *(int *)((int)register0x00000010 + 8);\n    *(int *)((int)register0x00000010 + -0x40) = param_1;\n    *(char *)((int)register0x00000010 + -0x39) = (char)*(int *)((int)register0x00000010 + 0xc);\n    if (iVar1 == 0) {\n      return;\n    }\n    if (iVar2 == 0) {\n      return;\n    }\n    *(int *)((int)register0x00000010 + -0x2c) = param_3;\n    if (iVar1 + iVar2 == 2) break;\n    if (iVar2 < iVar1) {\n      *(int *)((int)register0x00000010 + -0x38) = iVar1 / 2;\n      param_1 = *(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int *)((int)register0x00000010 + -0x5c) = param_1;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc269;\n      FUN_000ba7c0();\n      *(int *)((int)register0x00000010 + -0x30) = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x20) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3 >> 2;\n    }\n    else {\n      iVar3 = iVar2 / 2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3;\n      *(int *)((int)register0x00000010 + -0x28) = iVar3 * 4;\n      *(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5;\n      FUN_000ba670();\n      param_1 = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x28);\n      *(int *)((int)register0x00000010 + -0x38) =\n           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2;\n    }\n    *(int *)((int)register0x00000010 + -0x28) = iVar3;\n    *(undefined4 *)((int)register0x00000010 + -0x5c) = 0;\n    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x30);\n    *(int **)((int)register0x00000010 + -100) = param_2;\n    *(int *)((int)register0x00000010 + -0x68) = param_1;\n    *(int *)((int)register0x00000010 + -0x6c) = *(int *)((int)register0x00000010 + -0x24);\n    *(undefined4 *)((int)register0x00000010 + -0x70) = 0xcc1e7;\n    FUN_001055f0();\n    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x2c);\n    *(uint *)((int)register0x00000010 + -0x58) = (uint)*(byte *)((int)register0x00000010 + -0x3d);\n    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x38);\n    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x3c);\n    *(undefined4 *)((int)register0x00000010 + -100) = 0xcc20c;\n    FUN_000cc130();\n    param_3 = *(int *)((int)register0x00000010 + -0x30);\n    *(int *)((int)register0x00000010 + 4) = iVar2 - *(int *)((int)register0x00000010 + -0x38);\n    *(undefined1 *)((int)register0x00000010 + 8) = *(undefined1 *)((int)register0x00000010 + -0x3d);\n    param_2 = *(int **)((int)register0x00000010 + -0x34);\n    *(int *)register0x00000010 = iVar1 - *(int *)((int)register0x00000010 + -0x3c);\n    unaff_EBX = *(int *)((int)register0x00000010 + -0x14);\n    unaff_ESI = *(int *)((int)register0x00000010 + -0x10);\n    unaff_EDI = *(int *)((int)register0x00000010 + -0xc);\n    unaff_EBP = *(int *)((int)register0x00000010 + -8);\n    register0x00000010 = (BADSPACEBASE *)((int)register0x00000010 + -4);\n  }\n  iVar1 = *param_2;\n  iVar2 = **(int **)((int)register0x00000010 + -0x40);\n  if ((*(byte *)(iVar1 + 0x1c) & 1) == 0) {\n    *(int *)((int)register0x00000010 + -0x50) = iVar2;\n    *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x14) + 0x39983b\n    ;\n    *(undefined4 *)((int)register0x00000010 + -0x58) = 0xc5;\n    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x14) + 0x381224\n    ;\n                    /* WARNING: Subroutine does not return */\n    *(undefined **)((int)register0x00000010 + -0x60) = &UNK_000cc2d9;\n    FUN_002446e0();\n  }\n  if ((*(byte *)(iVar2 + 0x1c) & 1) != 0) {\n    if (*(uint *)(iVar1 + 8) < *(uint *)(iVar2 + 8) ||\n        *(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8) <\n        (uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))) {\n      **(int **)((int)register0x00000010 + -0x40) = iVar1;\n      *param_2 = iVar2;\n    }\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  *(undefined4 *)((int)register0x00000010 + -0x50) = 0xcc2c0;\n  FUN_000b0510();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 unaff_EBX;" type_identifier identifier ;) (declaration "undefined4 unaff_EBP;" type_identifier identifier ;) (declaration "undefined4 unaff_ESI;" type_identifier identifier ;) (declaration "undefined4 unaff_EDI;" type_identifier identifier ;) (while_statement "while( true ) {\n    *(undefined4 *)((int)register0x00000010 + -4) = unaff_EBP;\n    *(undefined4 *)((int)register0x00000010 + -8) = unaff_EDI;\n    *(undefined4 *)((int)register0x00000010 + -0xc) = unaff_ESI;\n    *(undefined4 *)((int)register0x00000010 + -0x10) = unaff_EBX;\n    *(undefined4 *)((int)register0x00000010 + -0x14) = 0xcc139;\n    iVar1 = *(int *)((int)register0x00000010 + 4);\n    iVar2 = *(int *)((int)register0x00000010 + 8);\n    *(int *)((int)register0x00000010 + -0x40) = param_1;\n    *(char *)((int)register0x00000010 + -0x39) = (char)*(int *)((int)register0x00000010 + 0xc);\n    if (iVar1 == 0) {\n      return;\n    }\n    if (iVar2 == 0) {\n      return;\n    }\n    *(int *)((int)register0x00000010 + -0x2c) = param_3;\n    if (iVar1 + iVar2 == 2) break;\n    if (iVar2 < iVar1) {\n      *(int *)((int)register0x00000010 + -0x38) = iVar1 / 2;\n      param_1 = *(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int *)((int)register0x00000010 + -0x5c) = param_1;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc269;\n      FUN_000ba7c0();\n      *(int *)((int)register0x00000010 + -0x30) = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x20) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3 >> 2;\n    }\n    else {\n      iVar3 = iVar2 / 2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3;\n      *(int *)((int)register0x00000010 + -0x28) = iVar3 * 4;\n      *(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5;\n      FUN_000ba670();\n      param_1 = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x28);\n      *(int *)((int)register0x00000010 + -0x38) =\n           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2;\n    }\n    *(int *)((int)register0x00000010 + -0x28) = iVar3;\n    *(undefined4 *)((int)register0x00000010 + -0x5c) = 0;\n    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x30);\n    *(int **)((int)register0x00000010 + -100) = param_2;\n    *(int *)((int)register0x00000010 + -0x68) = param_1;\n    *(int *)((int)register0x00000010 + -0x6c) = *(int *)((int)register0x00000010 + -0x24);\n    *(undefined4 *)((int)register0x00000010 + -0x70) = 0xcc1e7;\n    FUN_001055f0();\n    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x2c);\n    *(uint *)((int)register0x00000010 + -0x58) = (uint)*(byte *)((int)register0x00000010 + -0x3d);\n    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x38);\n    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x3c);\n    *(undefined4 *)((int)register0x00000010 + -100) = 0xcc20c;\n    FUN_000cc130();\n    param_3 = *(int *)((int)register0x00000010 + -0x30);\n    *(int *)((int)register0x00000010 + 4) = iVar2 - *(int *)((int)register0x00000010 + -0x38);\n    *(undefined1 *)((int)register0x00000010 + 8) = *(undefined1 *)((int)register0x00000010 + -0x3d);\n    param_2 = *(int **)((int)register0x00000010 + -0x34);\n    *(int *)register0x00000010 = iVar1 - *(int *)((int)register0x00000010 + -0x3c);\n    unaff_EBX = *(int *)((int)register0x00000010 + -0x14);\n    unaff_ESI = *(int *)((int)register0x00000010 + -0x10);\n    unaff_EDI = *(int *)((int)register0x00000010 + -0xc);\n    unaff_EBP = *(int *)((int)register0x00000010 + -8);\n    register0x00000010 = (BADSPACEBASE *)((int)register0x00000010 + -4);\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    *(undefined4 *)((int)register0x00000010 + -4) = unaff_EBP;\n    *(undefined4 *)((int)register0x00000010 + -8) = unaff_EDI;\n    *(undefined4 *)((int)register0x00000010 + -0xc) = unaff_ESI;\n    *(undefined4 *)((int)register0x00000010 + -0x10) = unaff_EBX;\n    *(undefined4 *)((int)register0x00000010 + -0x14) = 0xcc139;\n    iVar1 = *(int *)((int)register0x00000010 + 4);\n    iVar2 = *(int *)((int)register0x00000010 + 8);\n    *(int *)((int)register0x00000010 + -0x40) = param_1;\n    *(char *)((int)register0x00000010 + -0x39) = (char)*(int *)((int)register0x00000010 + 0xc);\n    if (iVar1 == 0) {\n      return;\n    }\n    if (iVar2 == 0) {\n      return;\n    }\n    *(int *)((int)register0x00000010 + -0x2c) = param_3;\n    if (iVar1 + iVar2 == 2) break;\n    if (iVar2 < iVar1) {\n      *(int *)((int)register0x00000010 + -0x38) = iVar1 / 2;\n      param_1 = *(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int *)((int)register0x00000010 + -0x5c) = param_1;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc269;\n      FUN_000ba7c0();\n      *(int *)((int)register0x00000010 + -0x30) = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x20) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3 >> 2;\n    }\n    else {\n      iVar3 = iVar2 / 2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3;\n      *(int *)((int)register0x00000010 + -0x28) = iVar3 * 4;\n      *(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5;\n      FUN_000ba670();\n      param_1 = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x28);\n      *(int *)((int)register0x00000010 + -0x38) =\n           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2;\n    }\n    *(int *)((int)register0x00000010 + -0x28) = iVar3;\n    *(undefined4 *)((int)register0x00000010 + -0x5c) = 0;\n    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x30);\n    *(int **)((int)register0x00000010 + -100) = param_2;\n    *(int *)((int)register0x00000010 + -0x68) = param_1;\n    *(int *)((int)register0x00000010 + -0x6c) = *(int *)((int)register0x00000010 + -0x24);\n    *(undefined4 *)((int)register0x00000010 + -0x70) = 0xcc1e7;\n    FUN_001055f0();\n    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x2c);\n    *(uint *)((int)register0x00000010 + -0x58) = (uint)*(byte *)((int)register0x00000010 + -0x3d);\n    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x38);\n    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x3c);\n    *(undefined4 *)((int)register0x00000010 + -100) = 0xcc20c;\n    FUN_000cc130();\n    param_3 = *(int *)((int)register0x00000010 + -0x30);\n    *(int *)((int)register0x00000010 + 4) = iVar2 - *(int *)((int)register0x00000010 + -0x38);\n    *(undefined1 *)((int)register0x00000010 + 8) = *(undefined1 *)((int)register0x00000010 + -0x3d);\n    param_2 = *(int **)((int)register0x00000010 + -0x34);\n    *(int *)register0x00000010 = iVar1 - *(int *)((int)register0x00000010 + -0x3c);\n    unaff_EBX = *(int *)((int)register0x00000010 + -0x14);\n    unaff_ESI = *(int *)((int)register0x00000010 + -0x10);\n    unaff_EDI = *(int *)((int)register0x00000010 + -0xc);\n    unaff_EBP = *(int *)((int)register0x00000010 + -8);\n    register0x00000010 = (BADSPACEBASE *)((int)register0x00000010 + -4);\n  }" { (expression_statement "*(undefined4 *)((int)register0x00000010 + -4) = unaff_EBP;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -4) = unaff_EBP" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -4)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -4)" ( (binary_expression "(int)register0x00000010 + -4" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -8) = unaff_EDI;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -8) = unaff_EDI" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -8)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -8)" ( (binary_expression "(int)register0x00000010 + -8" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0xc) = unaff_ESI;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0xc) = unaff_ESI" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0xc)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0xc)" ( (binary_expression "(int)register0x00000010 + -0xc" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x10) = unaff_EBX;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x10) = unaff_EBX" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x10)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x10)" ( (binary_expression "(int)register0x00000010 + -0x10" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x14) = 0xcc139;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x14) = 0xcc139" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x14)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x14)" ( (binary_expression "(int)register0x00000010 + -0x14" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "iVar1 = *(int *)((int)register0x00000010 + 4);" (assignment_expression "iVar1 = *(int *)((int)register0x00000010 + 4)" identifier = (pointer_expression "*(int *)((int)register0x00000010 + 4)" * (cast_expression "(int *)((int)register0x00000010 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + 4)" ( (binary_expression "(int)register0x00000010 + 4" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "iVar2 = *(int *)((int)register0x00000010 + 8);" (assignment_expression "iVar2 = *(int *)((int)register0x00000010 + 8)" identifier = (pointer_expression "*(int *)((int)register0x00000010 + 8)" * (cast_expression "(int *)((int)register0x00000010 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + 8)" ( (binary_expression "(int)register0x00000010 + 8" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x40) = param_1;" (assignment_expression "*(int *)((int)register0x00000010 + -0x40) = param_1" (pointer_expression "*(int *)((int)register0x00000010 + -0x40)" * (cast_expression "(int *)((int)register0x00000010 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x40)" ( (binary_expression "(int)register0x00000010 + -0x40" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(char *)((int)register0x00000010 + -0x39) = (char)*(int *)((int)register0x00000010 + 0xc);" (assignment_expression "*(char *)((int)register0x00000010 + -0x39) = (char)*(int *)((int)register0x00000010 + 0xc)" (pointer_expression "*(char *)((int)register0x00000010 + -0x39)" * (cast_expression "(char *)((int)register0x00000010 + -0x39)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x39)" ( (binary_expression "(int)register0x00000010 + -0x39" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(char)*(int *)((int)register0x00000010 + 0xc)" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(int *)((int)register0x00000010 + 0xc)" * (cast_expression "(int *)((int)register0x00000010 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + 0xc)" ( (binary_expression "(int)register0x00000010 + 0xc" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) (if_statement "if (iVar1 == 0) {\n      return;\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (if_statement "if (iVar2 == 0) {\n      return;\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "*(int *)((int)register0x00000010 + -0x2c) = param_3;" (assignment_expression "*(int *)((int)register0x00000010 + -0x2c) = param_3" (pointer_expression "*(int *)((int)register0x00000010 + -0x2c)" * (cast_expression "(int *)((int)register0x00000010 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x2c)" ( (binary_expression "(int)register0x00000010 + -0x2c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if (iVar1 + iVar2 == 2) break;" if (parenthesized_expression "(iVar1 + iVar2 == 2)" ( (binary_expression "iVar1 + iVar2 == 2" (binary_expression "iVar1 + iVar2" identifier + identifier) == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (iVar2 < iVar1) {\n      *(int *)((int)register0x00000010 + -0x38) = iVar1 / 2;\n      param_1 = *(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int *)((int)register0x00000010 + -0x5c) = param_1;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc269;\n      FUN_000ba7c0();\n      *(int *)((int)register0x00000010 + -0x30) = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x20) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3 >> 2;\n    }\n    else {\n      iVar3 = iVar2 / 2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3;\n      *(int *)((int)register0x00000010 + -0x28) = iVar3 * 4;\n      *(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5;\n      FUN_000ba670();\n      param_1 = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x28);\n      *(int *)((int)register0x00000010 + -0x38) =\n           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2;\n    }" if (parenthesized_expression "(iVar2 < iVar1)" ( (binary_expression "iVar2 < iVar1" identifier < identifier) )) (compound_statement "{\n      *(int *)((int)register0x00000010 + -0x38) = iVar1 / 2;\n      param_1 = *(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int *)((int)register0x00000010 + -0x5c) = param_1;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc269;\n      FUN_000ba7c0();\n      *(int *)((int)register0x00000010 + -0x30) = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x20) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3 >> 2;\n    }" { (expression_statement "*(int *)((int)register0x00000010 + -0x38) = iVar1 / 2;" (assignment_expression "*(int *)((int)register0x00000010 + -0x38) = iVar1 / 2" (pointer_expression "*(int *)((int)register0x00000010 + -0x38)" * (cast_expression "(int *)((int)register0x00000010 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x38)" ( (binary_expression "(int)register0x00000010 + -0x38" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "iVar1 / 2" identifier / number_literal)) ;) (expression_statement "param_1 = *(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4;" (assignment_expression "param_1 = *(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4" identifier = (binary_expression "*(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4" (pointer_expression "*(int *)((int)register0x00000010 + -0x40)" * (cast_expression "(int *)((int)register0x00000010 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x40)" ( (binary_expression "(int)register0x00000010 + -0x40" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + (binary_expression "(iVar1 / 2) * 4" (parenthesized_expression "(iVar1 / 2)" ( (binary_expression "iVar1 / 2" identifier / number_literal) )) * number_literal))) ;) (expression_statement "*(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);" (assignment_expression "*(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20)" (pointer_expression "*(int **)((int)register0x00000010 + -0x24)" * (cast_expression "(int **)((int)register0x00000010 + -0x24)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000010 + -0x24)" ( (binary_expression "(int)register0x00000010 + -0x24" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(int *)((int)register0x00000010 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x20)" ( (binary_expression "(int)register0x00000010 + -0x20" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x5c) = param_1;" (assignment_expression "*(int *)((int)register0x00000010 + -0x5c) = param_1" (pointer_expression "*(int *)((int)register0x00000010 + -0x5c)" * (cast_expression "(int *)((int)register0x00000010 + -0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x5c)" ( (binary_expression "(int)register0x00000010 + -0x5c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc269;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc269" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x60)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x60)" ( (binary_expression "(int)register0x00000010 + -0x60" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000ba7c0();" (call_expression "FUN_000ba7c0()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x30) = *(int *)((int)register0x00000010 + -0x20);" (assignment_expression "*(int *)((int)register0x00000010 + -0x30) = *(int *)((int)register0x00000010 + -0x20)" (pointer_expression "*(int *)((int)register0x00000010 + -0x30)" * (cast_expression "(int *)((int)register0x00000010 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x30)" ( (binary_expression "(int)register0x00000010 + -0x30" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(int *)((int)register0x00000010 + -0x20)" * (cast_expression "(int *)((int)register0x00000010 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x20)" ( (binary_expression "(int)register0x00000010 + -0x20" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "iVar3 = *(int *)((int)register0x00000010 + -0x20) - (int)param_2;" (assignment_expression "iVar3 = *(int *)((int)register0x00000010 + -0x20) - (int)param_2" identifier = (binary_expression "*(int *)((int)register0x00000010 + -0x20) - (int)param_2" (pointer_expression "*(int *)((int)register0x00000010 + -0x20)" * (cast_expression "(int *)((int)register0x00000010 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x20)" ( (binary_expression "(int)register0x00000010 + -0x20" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x34) = iVar3 >> 2;" (assignment_expression "*(int *)((int)register0x00000010 + -0x34) = iVar3 >> 2" (pointer_expression "*(int *)((int)register0x00000010 + -0x34)" * (cast_expression "(int *)((int)register0x00000010 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x34)" ( (binary_expression "(int)register0x00000010 + -0x34" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "iVar3 >> 2" identifier >> number_literal)) ;) }) (else_clause "else {\n      iVar3 = iVar2 / 2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3;\n      *(int *)((int)register0x00000010 + -0x28) = iVar3 * 4;\n      *(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5;\n      FUN_000ba670();\n      param_1 = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x28);\n      *(int *)((int)register0x00000010 + -0x38) =\n           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2;\n    }" else (compound_statement "{\n      iVar3 = iVar2 / 2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3;\n      *(int *)((int)register0x00000010 + -0x28) = iVar3 * 4;\n      *(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5;\n      FUN_000ba670();\n      param_1 = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x28);\n      *(int *)((int)register0x00000010 + -0x38) =\n           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2;\n    }" { (expression_statement "iVar3 = iVar2 / 2;" (assignment_expression "iVar3 = iVar2 / 2" identifier = (binary_expression "iVar2 / 2" identifier / number_literal)) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x34) = iVar3;" (assignment_expression "*(int *)((int)register0x00000010 + -0x34) = iVar3" (pointer_expression "*(int *)((int)register0x00000010 + -0x34)" * (cast_expression "(int *)((int)register0x00000010 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x34)" ( (binary_expression "(int)register0x00000010 + -0x34" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x28) = iVar3 * 4;" (assignment_expression "*(int *)((int)register0x00000010 + -0x28) = iVar3 * 4" (pointer_expression "*(int *)((int)register0x00000010 + -0x28)" * (cast_expression "(int *)((int)register0x00000010 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x28)" ( (binary_expression "(int)register0x00000010 + -0x28" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "iVar3 * 4" identifier * number_literal)) ;) (expression_statement "*(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3;" (assignment_expression "*(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3" (pointer_expression "*(int **)((int)register0x00000010 + -0x30)" * (cast_expression "(int **)((int)register0x00000010 + -0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000010 + -0x30)" ( (binary_expression "(int)register0x00000010 + -0x30" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "param_2 + iVar3" identifier + identifier)) ;) (expression_statement "*(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);" (assignment_expression "*(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20)" (pointer_expression "*(int **)((int)register0x00000010 + -0x24)" * (cast_expression "(int **)((int)register0x00000010 + -0x24)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000010 + -0x24)" ( (binary_expression "(int)register0x00000010 + -0x24" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(int *)((int)register0x00000010 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x20)" ( (binary_expression "(int)register0x00000010 + -0x20" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3;" (assignment_expression "*(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3" (pointer_expression "*(int **)((int)register0x00000010 + -0x5c)" * (cast_expression "(int **)((int)register0x00000010 + -0x5c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000010 + -0x5c)" ( (binary_expression "(int)register0x00000010 + -0x5c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "param_2 + iVar3" identifier + identifier)) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x60)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x60)" ( (binary_expression "(int)register0x00000010 + -0x60" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000ba670();" (call_expression "FUN_000ba670()" identifier (argument_list "()" ( ))) ;) (expression_statement "param_1 = *(int *)((int)register0x00000010 + -0x20);" (assignment_expression "param_1 = *(int *)((int)register0x00000010 + -0x20)" identifier = (pointer_expression "*(int *)((int)register0x00000010 + -0x20)" * (cast_expression "(int *)((int)register0x00000010 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x20)" ( (binary_expression "(int)register0x00000010 + -0x20" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "iVar3 = *(int *)((int)register0x00000010 + -0x28);" (assignment_expression "iVar3 = *(int *)((int)register0x00000010 + -0x28)" identifier = (pointer_expression "*(int *)((int)register0x00000010 + -0x28)" * (cast_expression "(int *)((int)register0x00000010 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x28)" ( (binary_expression "(int)register0x00000010 + -0x28" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x38) =\n           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2;" (assignment_expression "*(int *)((int)register0x00000010 + -0x38) =\n           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2" (pointer_expression "*(int *)((int)register0x00000010 + -0x38)" * (cast_expression "(int *)((int)register0x00000010 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x38)" ( (binary_expression "(int)register0x00000010 + -0x38" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2" (binary_expression "param_1 - *(int *)((int)register0x00000010 + -0x40)" identifier - (pointer_expression "*(int *)((int)register0x00000010 + -0x40)" * (cast_expression "(int *)((int)register0x00000010 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x40)" ( (binary_expression "(int)register0x00000010 + -0x40" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) >> number_literal)) ;) }))) (expression_statement "*(int *)((int)register0x00000010 + -0x28) = iVar3;" (assignment_expression "*(int *)((int)register0x00000010 + -0x28) = iVar3" (pointer_expression "*(int *)((int)register0x00000010 + -0x28)" * (cast_expression "(int *)((int)register0x00000010 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x28)" ( (binary_expression "(int)register0x00000010 + -0x28" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x5c) = 0;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x5c) = 0" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x5c)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x5c)" ( (binary_expression "(int)register0x00000010 + -0x5c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x30);" (assignment_expression "*(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x30)" (pointer_expression "*(int *)((int)register0x00000010 + -0x60)" * (cast_expression "(int *)((int)register0x00000010 + -0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x60)" ( (binary_expression "(int)register0x00000010 + -0x60" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(int *)((int)register0x00000010 + -0x30)" * (cast_expression "(int *)((int)register0x00000010 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x30)" ( (binary_expression "(int)register0x00000010 + -0x30" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(int **)((int)register0x00000010 + -100) = param_2;" (assignment_expression "*(int **)((int)register0x00000010 + -100) = param_2" (pointer_expression "*(int **)((int)register0x00000010 + -100)" * (cast_expression "(int **)((int)register0x00000010 + -100)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000010 + -100)" ( (binary_expression "(int)register0x00000010 + -100" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x68) = param_1;" (assignment_expression "*(int *)((int)register0x00000010 + -0x68) = param_1" (pointer_expression "*(int *)((int)register0x00000010 + -0x68)" * (cast_expression "(int *)((int)register0x00000010 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x68)" ( (binary_expression "(int)register0x00000010 + -0x68" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x6c) = *(int *)((int)register0x00000010 + -0x24);" (assignment_expression "*(int *)((int)register0x00000010 + -0x6c) = *(int *)((int)register0x00000010 + -0x24)" (pointer_expression "*(int *)((int)register0x00000010 + -0x6c)" * (cast_expression "(int *)((int)register0x00000010 + -0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x6c)" ( (binary_expression "(int)register0x00000010 + -0x6c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(int *)((int)register0x00000010 + -0x24)" * (cast_expression "(int *)((int)register0x00000010 + -0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x24)" ( (binary_expression "(int)register0x00000010 + -0x24" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x70) = 0xcc1e7;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x70) = 0xcc1e7" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x70)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x70)" ( (binary_expression "(int)register0x00000010 + -0x70" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001055f0();" (call_expression "FUN_001055f0()" identifier (argument_list "()" ( ))) ;) (expression_statement "param_1 = param_1 + *(int *)((int)register0x00000010 + -0x2c);" (assignment_expression "param_1 = param_1 + *(int *)((int)register0x00000010 + -0x2c)" identifier = (binary_expression "param_1 + *(int *)((int)register0x00000010 + -0x2c)" identifier + (pointer_expression "*(int *)((int)register0x00000010 + -0x2c)" * (cast_expression "(int *)((int)register0x00000010 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x2c)" ( (binary_expression "(int)register0x00000010 + -0x2c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) (expression_statement "*(uint *)((int)register0x00000010 + -0x58) = (uint)*(byte *)((int)register0x00000010 + -0x3d);" (assignment_expression "*(uint *)((int)register0x00000010 + -0x58) = (uint)*(byte *)((int)register0x00000010 + -0x3d)" (pointer_expression "*(uint *)((int)register0x00000010 + -0x58)" * (cast_expression "(uint *)((int)register0x00000010 + -0x58)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x58)" ( (binary_expression "(int)register0x00000010 + -0x58" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(uint)*(byte *)((int)register0x00000010 + -0x3d)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)register0x00000010 + -0x3d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x3d)" ( (binary_expression "(int)register0x00000010 + -0x3d" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x38);" (assignment_expression "*(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x38)" (pointer_expression "*(int *)((int)register0x00000010 + -0x5c)" * (cast_expression "(int *)((int)register0x00000010 + -0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x5c)" ( (binary_expression "(int)register0x00000010 + -0x5c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(int *)((int)register0x00000010 + -0x38)" * (cast_expression "(int *)((int)register0x00000010 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x38)" ( (binary_expression "(int)register0x00000010 + -0x38" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x3c);" (assignment_expression "*(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x3c)" (pointer_expression "*(int *)((int)register0x00000010 + -0x60)" * (cast_expression "(int *)((int)register0x00000010 + -0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x60)" ( (binary_expression "(int)register0x00000010 + -0x60" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(int *)((int)register0x00000010 + -0x3c)" * (cast_expression "(int *)((int)register0x00000010 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x3c)" ( (binary_expression "(int)register0x00000010 + -0x3c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -100) = 0xcc20c;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -100) = 0xcc20c" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -100)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -100)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -100)" ( (binary_expression "(int)register0x00000010 + -100" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000cc130();" (call_expression "FUN_000cc130()" identifier (argument_list "()" ( ))) ;) (expression_statement "param_3 = *(int *)((int)register0x00000010 + -0x30);" (assignment_expression "param_3 = *(int *)((int)register0x00000010 + -0x30)" identifier = (pointer_expression "*(int *)((int)register0x00000010 + -0x30)" * (cast_expression "(int *)((int)register0x00000010 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x30)" ( (binary_expression "(int)register0x00000010 + -0x30" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(int *)((int)register0x00000010 + 4) = iVar2 - *(int *)((int)register0x00000010 + -0x38);" (assignment_expression "*(int *)((int)register0x00000010 + 4) = iVar2 - *(int *)((int)register0x00000010 + -0x38)" (pointer_expression "*(int *)((int)register0x00000010 + 4)" * (cast_expression "(int *)((int)register0x00000010 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + 4)" ( (binary_expression "(int)register0x00000010 + 4" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "iVar2 - *(int *)((int)register0x00000010 + -0x38)" identifier - (pointer_expression "*(int *)((int)register0x00000010 + -0x38)" * (cast_expression "(int *)((int)register0x00000010 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x38)" ( (binary_expression "(int)register0x00000010 + -0x38" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) (expression_statement "*(undefined1 *)((int)register0x00000010 + 8) = *(undefined1 *)((int)register0x00000010 + -0x3d);" (assignment_expression "*(undefined1 *)((int)register0x00000010 + 8) = *(undefined1 *)((int)register0x00000010 + -0x3d)" (pointer_expression "*(undefined1 *)((int)register0x00000010 + 8)" * (cast_expression "(undefined1 *)((int)register0x00000010 + 8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + 8)" ( (binary_expression "(int)register0x00000010 + 8" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined1 *)((int)register0x00000010 + -0x3d)" * (cast_expression "(undefined1 *)((int)register0x00000010 + -0x3d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x3d)" ( (binary_expression "(int)register0x00000010 + -0x3d" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "param_2 = *(int **)((int)register0x00000010 + -0x34);" (assignment_expression "param_2 = *(int **)((int)register0x00000010 + -0x34)" identifier = (pointer_expression "*(int **)((int)register0x00000010 + -0x34)" * (cast_expression "(int **)((int)register0x00000010 + -0x34)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000010 + -0x34)" ( (binary_expression "(int)register0x00000010 + -0x34" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(int *)register0x00000010 = iVar1 - *(int *)((int)register0x00000010 + -0x3c);" (assignment_expression "*(int *)register0x00000010 = iVar1 - *(int *)((int)register0x00000010 + -0x3c)" (pointer_expression "*(int *)register0x00000010" * (cast_expression "(int *)register0x00000010" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "iVar1 - *(int *)((int)register0x00000010 + -0x3c)" identifier - (pointer_expression "*(int *)((int)register0x00000010 + -0x3c)" * (cast_expression "(int *)((int)register0x00000010 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x3c)" ( (binary_expression "(int)register0x00000010 + -0x3c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) (expression_statement "unaff_EBX = *(int *)((int)register0x00000010 + -0x14);" (assignment_expression "unaff_EBX = *(int *)((int)register0x00000010 + -0x14)" identifier = (pointer_expression "*(int *)((int)register0x00000010 + -0x14)" * (cast_expression "(int *)((int)register0x00000010 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x14)" ( (binary_expression "(int)register0x00000010 + -0x14" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "unaff_ESI = *(int *)((int)register0x00000010 + -0x10);" (assignment_expression "unaff_ESI = *(int *)((int)register0x00000010 + -0x10)" identifier = (pointer_expression "*(int *)((int)register0x00000010 + -0x10)" * (cast_expression "(int *)((int)register0x00000010 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x10)" ( (binary_expression "(int)register0x00000010 + -0x10" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "unaff_EDI = *(int *)((int)register0x00000010 + -0xc);" (assignment_expression "unaff_EDI = *(int *)((int)register0x00000010 + -0xc)" identifier = (pointer_expression "*(int *)((int)register0x00000010 + -0xc)" * (cast_expression "(int *)((int)register0x00000010 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0xc)" ( (binary_expression "(int)register0x00000010 + -0xc" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "unaff_EBP = *(int *)((int)register0x00000010 + -8);" (assignment_expression "unaff_EBP = *(int *)((int)register0x00000010 + -8)" identifier = (pointer_expression "*(int *)((int)register0x00000010 + -8)" * (cast_expression "(int *)((int)register0x00000010 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -8)" ( (binary_expression "(int)register0x00000010 + -8" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "register0x00000010 = (BADSPACEBASE *)((int)register0x00000010 + -4);" (assignment_expression "register0x00000010 = (BADSPACEBASE *)((int)register0x00000010 + -4)" identifier = (cast_expression "(BADSPACEBASE *)((int)register0x00000010 + -4)" ( (type_descriptor "BADSPACEBASE *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -4)" ( (binary_expression "(int)register0x00000010 + -4" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) })) (expression_statement "iVar1 = *param_2;" (assignment_expression "iVar1 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "iVar2 = **(int **)((int)register0x00000010 + -0x40);" (assignment_expression "iVar2 = **(int **)((int)register0x00000010 + -0x40)" identifier = (pointer_expression "**(int **)((int)register0x00000010 + -0x40)" * (pointer_expression "*(int **)((int)register0x00000010 + -0x40)" * (cast_expression "(int **)((int)register0x00000010 + -0x40)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000010 + -0x40)" ( (binary_expression "(int)register0x00000010 + -0x40" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) (if_statement "if ((*(byte *)(iVar1 + 0x1c) & 1) == 0) {\n    *(int *)((int)register0x00000010 + -0x50) = iVar2;\n    *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x14) + 0x39983b\n    ;\n    *(undefined4 *)((int)register0x00000010 + -0x58) = 0xc5;\n    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x14) + 0x381224\n    ;\n                    /* WARNING: Subroutine does not return */\n    *(undefined **)((int)register0x00000010 + -0x60) = &UNK_000cc2d9;\n    FUN_002446e0();\n  }" if (parenthesized_expression "((*(byte *)(iVar1 + 0x1c) & 1) == 0)" ( (binary_expression "(*(byte *)(iVar1 + 0x1c) & 1) == 0" (parenthesized_expression "(*(byte *)(iVar1 + 0x1c) & 1)" ( (binary_expression "*(byte *)(iVar1 + 0x1c) & 1" (pointer_expression "*(byte *)(iVar1 + 0x1c)" * (cast_expression "(byte *)(iVar1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x1c)" ( (binary_expression "iVar1 + 0x1c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    *(int *)((int)register0x00000010 + -0x50) = iVar2;\n    *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x14) + 0x39983b\n    ;\n    *(undefined4 *)((int)register0x00000010 + -0x58) = 0xc5;\n    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x14) + 0x381224\n    ;\n                    /* WARNING: Subroutine does not return */\n    *(undefined **)((int)register0x00000010 + -0x60) = &UNK_000cc2d9;\n    FUN_002446e0();\n  }" { (expression_statement "*(int *)((int)register0x00000010 + -0x50) = iVar2;" (assignment_expression "*(int *)((int)register0x00000010 + -0x50) = iVar2" (pointer_expression "*(int *)((int)register0x00000010 + -0x50)" * (cast_expression "(int *)((int)register0x00000010 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x50)" ( (binary_expression "(int)register0x00000010 + -0x50" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x14) + 0x39983b\n    ;" (assignment_expression "*(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x14) + 0x39983b" (pointer_expression "*(int *)((int)register0x00000010 + -0x54)" * (cast_expression "(int *)((int)register0x00000010 + -0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x54)" ( (binary_expression "(int)register0x00000010 + -0x54" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(int *)((int)register0x00000010 + -0x14) + 0x39983b" (pointer_expression "*(int *)((int)register0x00000010 + -0x14)" * (cast_expression "(int *)((int)register0x00000010 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x14)" ( (binary_expression "(int)register0x00000010 + -0x14" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal)) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x58) = 0xc5;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x58) = 0xc5" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x58)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x58)" ( (binary_expression "(int)register0x00000010 + -0x58" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x14) + 0x381224\n    ;" (assignment_expression "*(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x14) + 0x381224" (pointer_expression "*(int *)((int)register0x00000010 + -0x5c)" * (cast_expression "(int *)((int)register0x00000010 + -0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x5c)" ( (binary_expression "(int)register0x00000010 + -0x5c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(int *)((int)register0x00000010 + -0x14) + 0x381224" (pointer_expression "*(int *)((int)register0x00000010 + -0x14)" * (cast_expression "(int *)((int)register0x00000010 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x14)" ( (binary_expression "(int)register0x00000010 + -0x14" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal)) ;) comment (expression_statement "*(undefined **)((int)register0x00000010 + -0x60) = &UNK_000cc2d9;" (assignment_expression "*(undefined **)((int)register0x00000010 + -0x60) = &UNK_000cc2d9" (pointer_expression "*(undefined **)((int)register0x00000010 + -0x60)" * (cast_expression "(undefined **)((int)register0x00000010 + -0x60)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000010 + -0x60)" ( (binary_expression "(int)register0x00000010 + -0x60" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&UNK_000cc2d9" & identifier)) ;) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if ((*(byte *)(iVar2 + 0x1c) & 1) != 0) {\n    if (*(uint *)(iVar1 + 8) < *(uint *)(iVar2 + 8) ||\n        *(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8) <\n        (uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))) {\n      **(int **)((int)register0x00000010 + -0x40) = iVar1;\n      *param_2 = iVar2;\n    }\n    return;\n  }" if (parenthesized_expression "((*(byte *)(iVar2 + 0x1c) & 1) != 0)" ( (binary_expression "(*(byte *)(iVar2 + 0x1c) & 1) != 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x1c) & 1)" ( (binary_expression "*(byte *)(iVar2 + 0x1c) & 1" (pointer_expression "*(byte *)(iVar2 + 0x1c)" * (cast_expression "(byte *)(iVar2 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x1c)" ( (binary_expression "iVar2 + 0x1c" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    if (*(uint *)(iVar1 + 8) < *(uint *)(iVar2 + 8) ||\n        *(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8) <\n        (uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))) {\n      **(int **)((int)register0x00000010 + -0x40) = iVar1;\n      *param_2 = iVar2;\n    }\n    return;\n  }" { (if_statement "if (*(uint *)(iVar1 + 8) < *(uint *)(iVar2 + 8) ||\n        *(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8) <\n        (uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))) {\n      **(int **)((int)register0x00000010 + -0x40) = iVar1;\n      *param_2 = iVar2;\n    }" if (parenthesized_expression "(*(uint *)(iVar1 + 8) < *(uint *)(iVar2 + 8) ||\n        *(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8) <\n        (uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4)))" ( (binary_expression "*(uint *)(iVar1 + 8) < *(uint *)(iVar2 + 8) ||\n        *(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8) <\n        (uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))" (binary_expression "*(uint *)(iVar1 + 8) < *(uint *)(iVar2 + 8)" (pointer_expression "*(uint *)(iVar1 + 8)" * (cast_expression "(uint *)(iVar1 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) )))) < (pointer_expression "*(uint *)(iVar2 + 8)" * (cast_expression "(uint *)(iVar2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) ))))) || (binary_expression "*(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8) <\n        (uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))" (binary_expression "*(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8)" (pointer_expression "*(uint *)(iVar1 + 8)" * (cast_expression "(uint *)(iVar1 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) )))) - (pointer_expression "*(uint *)(iVar2 + 8)" * (cast_expression "(uint *)(iVar2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) ))))) < (call_expression "(uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))" ( (binary_expression "*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4)" (pointer_expression "*(uint *)(iVar1 + 4)" * (cast_expression "(uint *)(iVar1 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) < (pointer_expression "*(uint *)(iVar2 + 4)" * (cast_expression "(uint *)(iVar2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) ))))) ))))) )) (compound_statement "{\n      **(int **)((int)register0x00000010 + -0x40) = iVar1;\n      *param_2 = iVar2;\n    }" { (expression_statement "**(int **)((int)register0x00000010 + -0x40) = iVar1;" (assignment_expression "**(int **)((int)register0x00000010 + -0x40) = iVar1" (pointer_expression "**(int **)((int)register0x00000010 + -0x40)" * (pointer_expression "*(int **)((int)register0x00000010 + -0x40)" * (cast_expression "(int **)((int)register0x00000010 + -0x40)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000010 + -0x40)" ( (binary_expression "(int)register0x00000010 + -0x40" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) = identifier) ;) (expression_statement "*param_2 = iVar2;" (assignment_expression "*param_2 = iVar2" (pointer_expression "*param_2" * identifier) = identifier) ;) })) (return_statement "return;" return ;) })) comment (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x50) = 0xcc2c0;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x50) = 0xcc2c0" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x50)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x50)" ( (binary_expression "(int)register0x00000010 + -0x50" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000b0510();" (call_expression "FUN_000b0510()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n/* DWARF original name: __merge_without_buffer<__gnu_cxx::__normal_iterator<gold::Output_section**,\n   std::vector<gold::Output_section*> >, int, __gnu_cxx::__ops::_Iter_comp_iter<(anonymous\n   namespace)::Target_powerpc<64, true>::Sort_sections> > */\n\nvoid std::\n     __merge_without_buffer<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_int,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_true>::Sort_sections>_>\n               (void)\n\n{\n}\n\n" comment comment comment (ERROR "void std::\n     __merge_without_buffer<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_int,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_true>::Sort_sections>_>\n               (void)" primitive_type (ERROR "std::\n     __merge_without_buffer<__gnu_cxx::__normal_iterator<gold::Output_section" identifier : : identifier < identifier : : identifier < identifier : : identifier) (pointer_declarator "**,_std::vector<gold::Output_section*>_" * (pointer_declarator "*,_std::vector<gold::Output_section*>_" * (ERROR ",_std::vector<gold::Output_section*>" , identifier : : identifier < identifier : : identifier * >) identifier)) (ERROR ">" >) , identifier , (ERROR "___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::" identifier : : identifier : : identifier < ( identifier ) : :) identifier (ERROR "<64" < number_literal) , (ERROR "_true>::Sort_sections>" identifier > : : identifier >) (function_declarator "_>\n               (void)" identifier (ERROR ">" >) (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) )))) (compound_statement "{\n}" { }))
(translation_unit "void __regparm3 FUN_000cc130(int param_1,int *param_2,int param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 unaff_EBX;\n  undefined4 unaff_EBP;\n  undefined4 unaff_ESI;\n  undefined4 unaff_EDI;\n  \n  while( true ) {\n    *(undefined4 *)((int)register0x00000010 + -4) = unaff_EBP;\n    *(undefined4 *)((int)register0x00000010 + -8) = unaff_EDI;\n    *(undefined4 *)((int)register0x00000010 + -0xc) = unaff_ESI;\n    *(undefined4 *)((int)register0x00000010 + -0x10) = unaff_EBX;\n    *(undefined4 *)((int)register0x00000010 + -0x14) = 0xcc139;\n    iVar1 = *(int *)((int)register0x00000010 + 4);\n    iVar2 = *(int *)((int)register0x00000010 + 8);\n    *(int *)((int)register0x00000010 + -0x40) = param_1;\n    *(char *)((int)register0x00000010 + -0x39) = (char)*(int *)((int)register0x00000010 + 0xc);\n    if (iVar1 == 0) {\n      return;\n    }\n    if (iVar2 == 0) {\n      return;\n    }\n    *(int *)((int)register0x00000010 + -0x2c) = param_3;\n    if (iVar1 + iVar2 == 2) break;\n    if (iVar2 < iVar1) {\n      *(int *)((int)register0x00000010 + -0x38) = iVar1 / 2;\n      param_1 = *(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int *)((int)register0x00000010 + -0x5c) = param_1;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc269;\n      FUN_000ba7c0();\n      *(int *)((int)register0x00000010 + -0x30) = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x20) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3 >> 2;\n    }\n    else {\n      iVar3 = iVar2 / 2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3;\n      *(int *)((int)register0x00000010 + -0x28) = iVar3 * 4;\n      *(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5;\n      FUN_000ba670();\n      param_1 = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x28);\n      *(int *)((int)register0x00000010 + -0x38) =\n           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2;\n    }\n    *(int *)((int)register0x00000010 + -0x28) = iVar3;\n    *(undefined4 *)((int)register0x00000010 + -0x5c) = 0;\n    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x30);\n    *(int **)((int)register0x00000010 + -100) = param_2;\n    *(int *)((int)register0x00000010 + -0x68) = param_1;\n    *(int *)((int)register0x00000010 + -0x6c) = *(int *)((int)register0x00000010 + -0x24);\n    *(undefined4 *)((int)register0x00000010 + -0x70) = 0xcc1e7;\n    FUN_001055f0();\n    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x2c);\n    *(uint *)((int)register0x00000010 + -0x58) = (uint)*(byte *)((int)register0x00000010 + -0x3d);\n    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x38);\n    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x3c);\n    *(undefined4 *)((int)register0x00000010 + -100) = 0xcc20c;\n    FUN_000cc130();\n    param_3 = *(int *)((int)register0x00000010 + -0x30);\n    *(int *)((int)register0x00000010 + 4) = iVar2 - *(int *)((int)register0x00000010 + -0x38);\n    *(undefined1 *)((int)register0x00000010 + 8) = *(undefined1 *)((int)register0x00000010 + -0x3d);\n    param_2 = *(int **)((int)register0x00000010 + -0x34);\n    *(int *)register0x00000010 = iVar1 - *(int *)((int)register0x00000010 + -0x3c);\n    unaff_EBX = *(int *)((int)register0x00000010 + -0x14);\n    unaff_ESI = *(int *)((int)register0x00000010 + -0x10);\n    unaff_EDI = *(int *)((int)register0x00000010 + -0xc);\n    unaff_EBP = *(int *)((int)register0x00000010 + -8);\n    register0x00000010 = (BADSPACEBASE *)((int)register0x00000010 + -4);\n  }\n  iVar1 = *param_2;\n  iVar2 = **(int **)((int)register0x00000010 + -0x40);\n  if ((*(byte *)(iVar1 + 0x1c) & 1) == 0) {\n    *(int *)((int)register0x00000010 + -0x50) = iVar2;\n    *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x14) + 0x39983b\n    ;\n    *(undefined4 *)((int)register0x00000010 + -0x58) = 0xc5;\n    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x14) + 0x381224\n    ;\n                    \n    *(undefined **)((int)register0x00000010 + -0x60) = &UNK_000cc2d9;\n    FUN_002446e0();\n  }\n  if ((*(byte *)(iVar2 + 0x1c) & 1) != 0) {\n    if (*(uint *)(iVar1 + 8) < *(uint *)(iVar2 + 8) ||\n        *(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8) <\n        (uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))) {\n      **(int **)((int)register0x00000010 + -0x40) = iVar1;\n      *param_2 = iVar2;\n    }\n    return;\n  }\n                    \n  *(undefined4 *)((int)register0x00000010 + -0x50) = 0xcc2c0;\n  FUN_000b0510();\n}\n\n" (function_definition "void __regparm3 FUN_000cc130(int param_1,int *param_2,int param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 unaff_EBX;\n  undefined4 unaff_EBP;\n  undefined4 unaff_ESI;\n  undefined4 unaff_EDI;\n  \n  while( true ) {\n    *(undefined4 *)((int)register0x00000010 + -4) = unaff_EBP;\n    *(undefined4 *)((int)register0x00000010 + -8) = unaff_EDI;\n    *(undefined4 *)((int)register0x00000010 + -0xc) = unaff_ESI;\n    *(undefined4 *)((int)register0x00000010 + -0x10) = unaff_EBX;\n    *(undefined4 *)((int)register0x00000010 + -0x14) = 0xcc139;\n    iVar1 = *(int *)((int)register0x00000010 + 4);\n    iVar2 = *(int *)((int)register0x00000010 + 8);\n    *(int *)((int)register0x00000010 + -0x40) = param_1;\n    *(char *)((int)register0x00000010 + -0x39) = (char)*(int *)((int)register0x00000010 + 0xc);\n    if (iVar1 == 0) {\n      return;\n    }\n    if (iVar2 == 0) {\n      return;\n    }\n    *(int *)((int)register0x00000010 + -0x2c) = param_3;\n    if (iVar1 + iVar2 == 2) break;\n    if (iVar2 < iVar1) {\n      *(int *)((int)register0x00000010 + -0x38) = iVar1 / 2;\n      param_1 = *(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int *)((int)register0x00000010 + -0x5c) = param_1;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc269;\n      FUN_000ba7c0();\n      *(int *)((int)register0x00000010 + -0x30) = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x20) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3 >> 2;\n    }\n    else {\n      iVar3 = iVar2 / 2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3;\n      *(int *)((int)register0x00000010 + -0x28) = iVar3 * 4;\n      *(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5;\n      FUN_000ba670();\n      param_1 = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x28);\n      *(int *)((int)register0x00000010 + -0x38) =\n           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2;\n    }\n    *(int *)((int)register0x00000010 + -0x28) = iVar3;\n    *(undefined4 *)((int)register0x00000010 + -0x5c) = 0;\n    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x30);\n    *(int **)((int)register0x00000010 + -100) = param_2;\n    *(int *)((int)register0x00000010 + -0x68) = param_1;\n    *(int *)((int)register0x00000010 + -0x6c) = *(int *)((int)register0x00000010 + -0x24);\n    *(undefined4 *)((int)register0x00000010 + -0x70) = 0xcc1e7;\n    FUN_001055f0();\n    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x2c);\n    *(uint *)((int)register0x00000010 + -0x58) = (uint)*(byte *)((int)register0x00000010 + -0x3d);\n    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x38);\n    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x3c);\n    *(undefined4 *)((int)register0x00000010 + -100) = 0xcc20c;\n    FUN_000cc130();\n    param_3 = *(int *)((int)register0x00000010 + -0x30);\n    *(int *)((int)register0x00000010 + 4) = iVar2 - *(int *)((int)register0x00000010 + -0x38);\n    *(undefined1 *)((int)register0x00000010 + 8) = *(undefined1 *)((int)register0x00000010 + -0x3d);\n    param_2 = *(int **)((int)register0x00000010 + -0x34);\n    *(int *)register0x00000010 = iVar1 - *(int *)((int)register0x00000010 + -0x3c);\n    unaff_EBX = *(int *)((int)register0x00000010 + -0x14);\n    unaff_ESI = *(int *)((int)register0x00000010 + -0x10);\n    unaff_EDI = *(int *)((int)register0x00000010 + -0xc);\n    unaff_EBP = *(int *)((int)register0x00000010 + -8);\n    register0x00000010 = (BADSPACEBASE *)((int)register0x00000010 + -4);\n  }\n  iVar1 = *param_2;\n  iVar2 = **(int **)((int)register0x00000010 + -0x40);\n  if ((*(byte *)(iVar1 + 0x1c) & 1) == 0) {\n    *(int *)((int)register0x00000010 + -0x50) = iVar2;\n    *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x14) + 0x39983b\n    ;\n    *(undefined4 *)((int)register0x00000010 + -0x58) = 0xc5;\n    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x14) + 0x381224\n    ;\n                    \n    *(undefined **)((int)register0x00000010 + -0x60) = &UNK_000cc2d9;\n    FUN_002446e0();\n  }\n  if ((*(byte *)(iVar2 + 0x1c) & 1) != 0) {\n    if (*(uint *)(iVar1 + 8) < *(uint *)(iVar2 + 8) ||\n        *(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8) <\n        (uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))) {\n      **(int **)((int)register0x00000010 + -0x40) = iVar1;\n      *param_2 = iVar2;\n    }\n    return;\n  }\n                    \n  *(undefined4 *)((int)register0x00000010 + -0x50) = 0xcc2c0;\n  FUN_000b0510();\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_000cc130(int param_1,int *param_2,int param_3)" identifier (parameter_list "(int param_1,int *param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 unaff_EBX;\n  undefined4 unaff_EBP;\n  undefined4 unaff_ESI;\n  undefined4 unaff_EDI;\n  \n  while( true ) {\n    *(undefined4 *)((int)register0x00000010 + -4) = unaff_EBP;\n    *(undefined4 *)((int)register0x00000010 + -8) = unaff_EDI;\n    *(undefined4 *)((int)register0x00000010 + -0xc) = unaff_ESI;\n    *(undefined4 *)((int)register0x00000010 + -0x10) = unaff_EBX;\n    *(undefined4 *)((int)register0x00000010 + -0x14) = 0xcc139;\n    iVar1 = *(int *)((int)register0x00000010 + 4);\n    iVar2 = *(int *)((int)register0x00000010 + 8);\n    *(int *)((int)register0x00000010 + -0x40) = param_1;\n    *(char *)((int)register0x00000010 + -0x39) = (char)*(int *)((int)register0x00000010 + 0xc);\n    if (iVar1 == 0) {\n      return;\n    }\n    if (iVar2 == 0) {\n      return;\n    }\n    *(int *)((int)register0x00000010 + -0x2c) = param_3;\n    if (iVar1 + iVar2 == 2) break;\n    if (iVar2 < iVar1) {\n      *(int *)((int)register0x00000010 + -0x38) = iVar1 / 2;\n      param_1 = *(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int *)((int)register0x00000010 + -0x5c) = param_1;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc269;\n      FUN_000ba7c0();\n      *(int *)((int)register0x00000010 + -0x30) = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x20) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3 >> 2;\n    }\n    else {\n      iVar3 = iVar2 / 2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3;\n      *(int *)((int)register0x00000010 + -0x28) = iVar3 * 4;\n      *(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5;\n      FUN_000ba670();\n      param_1 = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x28);\n      *(int *)((int)register0x00000010 + -0x38) =\n           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2;\n    }\n    *(int *)((int)register0x00000010 + -0x28) = iVar3;\n    *(undefined4 *)((int)register0x00000010 + -0x5c) = 0;\n    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x30);\n    *(int **)((int)register0x00000010 + -100) = param_2;\n    *(int *)((int)register0x00000010 + -0x68) = param_1;\n    *(int *)((int)register0x00000010 + -0x6c) = *(int *)((int)register0x00000010 + -0x24);\n    *(undefined4 *)((int)register0x00000010 + -0x70) = 0xcc1e7;\n    FUN_001055f0();\n    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x2c);\n    *(uint *)((int)register0x00000010 + -0x58) = (uint)*(byte *)((int)register0x00000010 + -0x3d);\n    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x38);\n    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x3c);\n    *(undefined4 *)((int)register0x00000010 + -100) = 0xcc20c;\n    FUN_000cc130();\n    param_3 = *(int *)((int)register0x00000010 + -0x30);\n    *(int *)((int)register0x00000010 + 4) = iVar2 - *(int *)((int)register0x00000010 + -0x38);\n    *(undefined1 *)((int)register0x00000010 + 8) = *(undefined1 *)((int)register0x00000010 + -0x3d);\n    param_2 = *(int **)((int)register0x00000010 + -0x34);\n    *(int *)register0x00000010 = iVar1 - *(int *)((int)register0x00000010 + -0x3c);\n    unaff_EBX = *(int *)((int)register0x00000010 + -0x14);\n    unaff_ESI = *(int *)((int)register0x00000010 + -0x10);\n    unaff_EDI = *(int *)((int)register0x00000010 + -0xc);\n    unaff_EBP = *(int *)((int)register0x00000010 + -8);\n    register0x00000010 = (BADSPACEBASE *)((int)register0x00000010 + -4);\n  }\n  iVar1 = *param_2;\n  iVar2 = **(int **)((int)register0x00000010 + -0x40);\n  if ((*(byte *)(iVar1 + 0x1c) & 1) == 0) {\n    *(int *)((int)register0x00000010 + -0x50) = iVar2;\n    *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x14) + 0x39983b\n    ;\n    *(undefined4 *)((int)register0x00000010 + -0x58) = 0xc5;\n    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x14) + 0x381224\n    ;\n                    \n    *(undefined **)((int)register0x00000010 + -0x60) = &UNK_000cc2d9;\n    FUN_002446e0();\n  }\n  if ((*(byte *)(iVar2 + 0x1c) & 1) != 0) {\n    if (*(uint *)(iVar1 + 8) < *(uint *)(iVar2 + 8) ||\n        *(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8) <\n        (uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))) {\n      **(int **)((int)register0x00000010 + -0x40) = iVar1;\n      *param_2 = iVar2;\n    }\n    return;\n  }\n                    \n  *(undefined4 *)((int)register0x00000010 + -0x50) = 0xcc2c0;\n  FUN_000b0510();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 unaff_EBX;" type_identifier identifier ;) (declaration "undefined4 unaff_EBP;" type_identifier identifier ;) (declaration "undefined4 unaff_ESI;" type_identifier identifier ;) (declaration "undefined4 unaff_EDI;" type_identifier identifier ;) (while_statement "while( true ) {\n    *(undefined4 *)((int)register0x00000010 + -4) = unaff_EBP;\n    *(undefined4 *)((int)register0x00000010 + -8) = unaff_EDI;\n    *(undefined4 *)((int)register0x00000010 + -0xc) = unaff_ESI;\n    *(undefined4 *)((int)register0x00000010 + -0x10) = unaff_EBX;\n    *(undefined4 *)((int)register0x00000010 + -0x14) = 0xcc139;\n    iVar1 = *(int *)((int)register0x00000010 + 4);\n    iVar2 = *(int *)((int)register0x00000010 + 8);\n    *(int *)((int)register0x00000010 + -0x40) = param_1;\n    *(char *)((int)register0x00000010 + -0x39) = (char)*(int *)((int)register0x00000010 + 0xc);\n    if (iVar1 == 0) {\n      return;\n    }\n    if (iVar2 == 0) {\n      return;\n    }\n    *(int *)((int)register0x00000010 + -0x2c) = param_3;\n    if (iVar1 + iVar2 == 2) break;\n    if (iVar2 < iVar1) {\n      *(int *)((int)register0x00000010 + -0x38) = iVar1 / 2;\n      param_1 = *(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int *)((int)register0x00000010 + -0x5c) = param_1;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc269;\n      FUN_000ba7c0();\n      *(int *)((int)register0x00000010 + -0x30) = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x20) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3 >> 2;\n    }\n    else {\n      iVar3 = iVar2 / 2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3;\n      *(int *)((int)register0x00000010 + -0x28) = iVar3 * 4;\n      *(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5;\n      FUN_000ba670();\n      param_1 = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x28);\n      *(int *)((int)register0x00000010 + -0x38) =\n           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2;\n    }\n    *(int *)((int)register0x00000010 + -0x28) = iVar3;\n    *(undefined4 *)((int)register0x00000010 + -0x5c) = 0;\n    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x30);\n    *(int **)((int)register0x00000010 + -100) = param_2;\n    *(int *)((int)register0x00000010 + -0x68) = param_1;\n    *(int *)((int)register0x00000010 + -0x6c) = *(int *)((int)register0x00000010 + -0x24);\n    *(undefined4 *)((int)register0x00000010 + -0x70) = 0xcc1e7;\n    FUN_001055f0();\n    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x2c);\n    *(uint *)((int)register0x00000010 + -0x58) = (uint)*(byte *)((int)register0x00000010 + -0x3d);\n    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x38);\n    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x3c);\n    *(undefined4 *)((int)register0x00000010 + -100) = 0xcc20c;\n    FUN_000cc130();\n    param_3 = *(int *)((int)register0x00000010 + -0x30);\n    *(int *)((int)register0x00000010 + 4) = iVar2 - *(int *)((int)register0x00000010 + -0x38);\n    *(undefined1 *)((int)register0x00000010 + 8) = *(undefined1 *)((int)register0x00000010 + -0x3d);\n    param_2 = *(int **)((int)register0x00000010 + -0x34);\n    *(int *)register0x00000010 = iVar1 - *(int *)((int)register0x00000010 + -0x3c);\n    unaff_EBX = *(int *)((int)register0x00000010 + -0x14);\n    unaff_ESI = *(int *)((int)register0x00000010 + -0x10);\n    unaff_EDI = *(int *)((int)register0x00000010 + -0xc);\n    unaff_EBP = *(int *)((int)register0x00000010 + -8);\n    register0x00000010 = (BADSPACEBASE *)((int)register0x00000010 + -4);\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    *(undefined4 *)((int)register0x00000010 + -4) = unaff_EBP;\n    *(undefined4 *)((int)register0x00000010 + -8) = unaff_EDI;\n    *(undefined4 *)((int)register0x00000010 + -0xc) = unaff_ESI;\n    *(undefined4 *)((int)register0x00000010 + -0x10) = unaff_EBX;\n    *(undefined4 *)((int)register0x00000010 + -0x14) = 0xcc139;\n    iVar1 = *(int *)((int)register0x00000010 + 4);\n    iVar2 = *(int *)((int)register0x00000010 + 8);\n    *(int *)((int)register0x00000010 + -0x40) = param_1;\n    *(char *)((int)register0x00000010 + -0x39) = (char)*(int *)((int)register0x00000010 + 0xc);\n    if (iVar1 == 0) {\n      return;\n    }\n    if (iVar2 == 0) {\n      return;\n    }\n    *(int *)((int)register0x00000010 + -0x2c) = param_3;\n    if (iVar1 + iVar2 == 2) break;\n    if (iVar2 < iVar1) {\n      *(int *)((int)register0x00000010 + -0x38) = iVar1 / 2;\n      param_1 = *(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int *)((int)register0x00000010 + -0x5c) = param_1;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc269;\n      FUN_000ba7c0();\n      *(int *)((int)register0x00000010 + -0x30) = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x20) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3 >> 2;\n    }\n    else {\n      iVar3 = iVar2 / 2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3;\n      *(int *)((int)register0x00000010 + -0x28) = iVar3 * 4;\n      *(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5;\n      FUN_000ba670();\n      param_1 = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x28);\n      *(int *)((int)register0x00000010 + -0x38) =\n           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2;\n    }\n    *(int *)((int)register0x00000010 + -0x28) = iVar3;\n    *(undefined4 *)((int)register0x00000010 + -0x5c) = 0;\n    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x30);\n    *(int **)((int)register0x00000010 + -100) = param_2;\n    *(int *)((int)register0x00000010 + -0x68) = param_1;\n    *(int *)((int)register0x00000010 + -0x6c) = *(int *)((int)register0x00000010 + -0x24);\n    *(undefined4 *)((int)register0x00000010 + -0x70) = 0xcc1e7;\n    FUN_001055f0();\n    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x2c);\n    *(uint *)((int)register0x00000010 + -0x58) = (uint)*(byte *)((int)register0x00000010 + -0x3d);\n    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x38);\n    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x3c);\n    *(undefined4 *)((int)register0x00000010 + -100) = 0xcc20c;\n    FUN_000cc130();\n    param_3 = *(int *)((int)register0x00000010 + -0x30);\n    *(int *)((int)register0x00000010 + 4) = iVar2 - *(int *)((int)register0x00000010 + -0x38);\n    *(undefined1 *)((int)register0x00000010 + 8) = *(undefined1 *)((int)register0x00000010 + -0x3d);\n    param_2 = *(int **)((int)register0x00000010 + -0x34);\n    *(int *)register0x00000010 = iVar1 - *(int *)((int)register0x00000010 + -0x3c);\n    unaff_EBX = *(int *)((int)register0x00000010 + -0x14);\n    unaff_ESI = *(int *)((int)register0x00000010 + -0x10);\n    unaff_EDI = *(int *)((int)register0x00000010 + -0xc);\n    unaff_EBP = *(int *)((int)register0x00000010 + -8);\n    register0x00000010 = (BADSPACEBASE *)((int)register0x00000010 + -4);\n  }" { (expression_statement "*(undefined4 *)((int)register0x00000010 + -4) = unaff_EBP;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -4) = unaff_EBP" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -4)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -4)" ( (binary_expression "(int)register0x00000010 + -4" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -8) = unaff_EDI;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -8) = unaff_EDI" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -8)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -8)" ( (binary_expression "(int)register0x00000010 + -8" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0xc) = unaff_ESI;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0xc) = unaff_ESI" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0xc)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0xc)" ( (binary_expression "(int)register0x00000010 + -0xc" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x10) = unaff_EBX;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x10) = unaff_EBX" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x10)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x10)" ( (binary_expression "(int)register0x00000010 + -0x10" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x14) = 0xcc139;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x14) = 0xcc139" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x14)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x14)" ( (binary_expression "(int)register0x00000010 + -0x14" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "iVar1 = *(int *)((int)register0x00000010 + 4);" (assignment_expression "iVar1 = *(int *)((int)register0x00000010 + 4)" identifier = (pointer_expression "*(int *)((int)register0x00000010 + 4)" * (cast_expression "(int *)((int)register0x00000010 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + 4)" ( (binary_expression "(int)register0x00000010 + 4" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "iVar2 = *(int *)((int)register0x00000010 + 8);" (assignment_expression "iVar2 = *(int *)((int)register0x00000010 + 8)" identifier = (pointer_expression "*(int *)((int)register0x00000010 + 8)" * (cast_expression "(int *)((int)register0x00000010 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + 8)" ( (binary_expression "(int)register0x00000010 + 8" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x40) = param_1;" (assignment_expression "*(int *)((int)register0x00000010 + -0x40) = param_1" (pointer_expression "*(int *)((int)register0x00000010 + -0x40)" * (cast_expression "(int *)((int)register0x00000010 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x40)" ( (binary_expression "(int)register0x00000010 + -0x40" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(char *)((int)register0x00000010 + -0x39) = (char)*(int *)((int)register0x00000010 + 0xc);" (assignment_expression "*(char *)((int)register0x00000010 + -0x39) = (char)*(int *)((int)register0x00000010 + 0xc)" (pointer_expression "*(char *)((int)register0x00000010 + -0x39)" * (cast_expression "(char *)((int)register0x00000010 + -0x39)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x39)" ( (binary_expression "(int)register0x00000010 + -0x39" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(char)*(int *)((int)register0x00000010 + 0xc)" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(int *)((int)register0x00000010 + 0xc)" * (cast_expression "(int *)((int)register0x00000010 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + 0xc)" ( (binary_expression "(int)register0x00000010 + 0xc" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) (if_statement "if (iVar1 == 0) {\n      return;\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (if_statement "if (iVar2 == 0) {\n      return;\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "*(int *)((int)register0x00000010 + -0x2c) = param_3;" (assignment_expression "*(int *)((int)register0x00000010 + -0x2c) = param_3" (pointer_expression "*(int *)((int)register0x00000010 + -0x2c)" * (cast_expression "(int *)((int)register0x00000010 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x2c)" ( (binary_expression "(int)register0x00000010 + -0x2c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if (iVar1 + iVar2 == 2) break;" if (parenthesized_expression "(iVar1 + iVar2 == 2)" ( (binary_expression "iVar1 + iVar2 == 2" (binary_expression "iVar1 + iVar2" identifier + identifier) == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (iVar2 < iVar1) {\n      *(int *)((int)register0x00000010 + -0x38) = iVar1 / 2;\n      param_1 = *(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int *)((int)register0x00000010 + -0x5c) = param_1;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc269;\n      FUN_000ba7c0();\n      *(int *)((int)register0x00000010 + -0x30) = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x20) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3 >> 2;\n    }\n    else {\n      iVar3 = iVar2 / 2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3;\n      *(int *)((int)register0x00000010 + -0x28) = iVar3 * 4;\n      *(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5;\n      FUN_000ba670();\n      param_1 = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x28);\n      *(int *)((int)register0x00000010 + -0x38) =\n           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2;\n    }" if (parenthesized_expression "(iVar2 < iVar1)" ( (binary_expression "iVar2 < iVar1" identifier < identifier) )) (compound_statement "{\n      *(int *)((int)register0x00000010 + -0x38) = iVar1 / 2;\n      param_1 = *(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int *)((int)register0x00000010 + -0x5c) = param_1;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc269;\n      FUN_000ba7c0();\n      *(int *)((int)register0x00000010 + -0x30) = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x20) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3 >> 2;\n    }" { (expression_statement "*(int *)((int)register0x00000010 + -0x38) = iVar1 / 2;" (assignment_expression "*(int *)((int)register0x00000010 + -0x38) = iVar1 / 2" (pointer_expression "*(int *)((int)register0x00000010 + -0x38)" * (cast_expression "(int *)((int)register0x00000010 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x38)" ( (binary_expression "(int)register0x00000010 + -0x38" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "iVar1 / 2" identifier / number_literal)) ;) (expression_statement "param_1 = *(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4;" (assignment_expression "param_1 = *(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4" identifier = (binary_expression "*(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4" (pointer_expression "*(int *)((int)register0x00000010 + -0x40)" * (cast_expression "(int *)((int)register0x00000010 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x40)" ( (binary_expression "(int)register0x00000010 + -0x40" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + (binary_expression "(iVar1 / 2) * 4" (parenthesized_expression "(iVar1 / 2)" ( (binary_expression "iVar1 / 2" identifier / number_literal) )) * number_literal))) ;) (expression_statement "*(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);" (assignment_expression "*(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20)" (pointer_expression "*(int **)((int)register0x00000010 + -0x24)" * (cast_expression "(int **)((int)register0x00000010 + -0x24)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000010 + -0x24)" ( (binary_expression "(int)register0x00000010 + -0x24" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(int *)((int)register0x00000010 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x20)" ( (binary_expression "(int)register0x00000010 + -0x20" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x5c) = param_1;" (assignment_expression "*(int *)((int)register0x00000010 + -0x5c) = param_1" (pointer_expression "*(int *)((int)register0x00000010 + -0x5c)" * (cast_expression "(int *)((int)register0x00000010 + -0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x5c)" ( (binary_expression "(int)register0x00000010 + -0x5c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc269;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc269" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x60)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x60)" ( (binary_expression "(int)register0x00000010 + -0x60" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000ba7c0();" (call_expression "FUN_000ba7c0()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x30) = *(int *)((int)register0x00000010 + -0x20);" (assignment_expression "*(int *)((int)register0x00000010 + -0x30) = *(int *)((int)register0x00000010 + -0x20)" (pointer_expression "*(int *)((int)register0x00000010 + -0x30)" * (cast_expression "(int *)((int)register0x00000010 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x30)" ( (binary_expression "(int)register0x00000010 + -0x30" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(int *)((int)register0x00000010 + -0x20)" * (cast_expression "(int *)((int)register0x00000010 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x20)" ( (binary_expression "(int)register0x00000010 + -0x20" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "iVar3 = *(int *)((int)register0x00000010 + -0x20) - (int)param_2;" (assignment_expression "iVar3 = *(int *)((int)register0x00000010 + -0x20) - (int)param_2" identifier = (binary_expression "*(int *)((int)register0x00000010 + -0x20) - (int)param_2" (pointer_expression "*(int *)((int)register0x00000010 + -0x20)" * (cast_expression "(int *)((int)register0x00000010 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x20)" ( (binary_expression "(int)register0x00000010 + -0x20" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x34) = iVar3 >> 2;" (assignment_expression "*(int *)((int)register0x00000010 + -0x34) = iVar3 >> 2" (pointer_expression "*(int *)((int)register0x00000010 + -0x34)" * (cast_expression "(int *)((int)register0x00000010 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x34)" ( (binary_expression "(int)register0x00000010 + -0x34" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "iVar3 >> 2" identifier >> number_literal)) ;) }) (else_clause "else {\n      iVar3 = iVar2 / 2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3;\n      *(int *)((int)register0x00000010 + -0x28) = iVar3 * 4;\n      *(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5;\n      FUN_000ba670();\n      param_1 = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x28);\n      *(int *)((int)register0x00000010 + -0x38) =\n           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2;\n    }" else (compound_statement "{\n      iVar3 = iVar2 / 2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3;\n      *(int *)((int)register0x00000010 + -0x28) = iVar3 * 4;\n      *(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5;\n      FUN_000ba670();\n      param_1 = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x28);\n      *(int *)((int)register0x00000010 + -0x38) =\n           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2;\n    }" { (expression_statement "iVar3 = iVar2 / 2;" (assignment_expression "iVar3 = iVar2 / 2" identifier = (binary_expression "iVar2 / 2" identifier / number_literal)) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x34) = iVar3;" (assignment_expression "*(int *)((int)register0x00000010 + -0x34) = iVar3" (pointer_expression "*(int *)((int)register0x00000010 + -0x34)" * (cast_expression "(int *)((int)register0x00000010 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x34)" ( (binary_expression "(int)register0x00000010 + -0x34" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x28) = iVar3 * 4;" (assignment_expression "*(int *)((int)register0x00000010 + -0x28) = iVar3 * 4" (pointer_expression "*(int *)((int)register0x00000010 + -0x28)" * (cast_expression "(int *)((int)register0x00000010 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x28)" ( (binary_expression "(int)register0x00000010 + -0x28" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "iVar3 * 4" identifier * number_literal)) ;) (expression_statement "*(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3;" (assignment_expression "*(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3" (pointer_expression "*(int **)((int)register0x00000010 + -0x30)" * (cast_expression "(int **)((int)register0x00000010 + -0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000010 + -0x30)" ( (binary_expression "(int)register0x00000010 + -0x30" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "param_2 + iVar3" identifier + identifier)) ;) (expression_statement "*(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);" (assignment_expression "*(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20)" (pointer_expression "*(int **)((int)register0x00000010 + -0x24)" * (cast_expression "(int **)((int)register0x00000010 + -0x24)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000010 + -0x24)" ( (binary_expression "(int)register0x00000010 + -0x24" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(int *)((int)register0x00000010 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x20)" ( (binary_expression "(int)register0x00000010 + -0x20" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3;" (assignment_expression "*(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3" (pointer_expression "*(int **)((int)register0x00000010 + -0x5c)" * (cast_expression "(int **)((int)register0x00000010 + -0x5c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000010 + -0x5c)" ( (binary_expression "(int)register0x00000010 + -0x5c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "param_2 + iVar3" identifier + identifier)) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x60)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x60)" ( (binary_expression "(int)register0x00000010 + -0x60" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000ba670();" (call_expression "FUN_000ba670()" identifier (argument_list "()" ( ))) ;) (expression_statement "param_1 = *(int *)((int)register0x00000010 + -0x20);" (assignment_expression "param_1 = *(int *)((int)register0x00000010 + -0x20)" identifier = (pointer_expression "*(int *)((int)register0x00000010 + -0x20)" * (cast_expression "(int *)((int)register0x00000010 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x20)" ( (binary_expression "(int)register0x00000010 + -0x20" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "iVar3 = *(int *)((int)register0x00000010 + -0x28);" (assignment_expression "iVar3 = *(int *)((int)register0x00000010 + -0x28)" identifier = (pointer_expression "*(int *)((int)register0x00000010 + -0x28)" * (cast_expression "(int *)((int)register0x00000010 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x28)" ( (binary_expression "(int)register0x00000010 + -0x28" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x38) =\n           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2;" (assignment_expression "*(int *)((int)register0x00000010 + -0x38) =\n           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2" (pointer_expression "*(int *)((int)register0x00000010 + -0x38)" * (cast_expression "(int *)((int)register0x00000010 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x38)" ( (binary_expression "(int)register0x00000010 + -0x38" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2" (binary_expression "param_1 - *(int *)((int)register0x00000010 + -0x40)" identifier - (pointer_expression "*(int *)((int)register0x00000010 + -0x40)" * (cast_expression "(int *)((int)register0x00000010 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x40)" ( (binary_expression "(int)register0x00000010 + -0x40" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) >> number_literal)) ;) }))) (expression_statement "*(int *)((int)register0x00000010 + -0x28) = iVar3;" (assignment_expression "*(int *)((int)register0x00000010 + -0x28) = iVar3" (pointer_expression "*(int *)((int)register0x00000010 + -0x28)" * (cast_expression "(int *)((int)register0x00000010 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x28)" ( (binary_expression "(int)register0x00000010 + -0x28" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x5c) = 0;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x5c) = 0" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x5c)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x5c)" ( (binary_expression "(int)register0x00000010 + -0x5c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x30);" (assignment_expression "*(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x30)" (pointer_expression "*(int *)((int)register0x00000010 + -0x60)" * (cast_expression "(int *)((int)register0x00000010 + -0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x60)" ( (binary_expression "(int)register0x00000010 + -0x60" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(int *)((int)register0x00000010 + -0x30)" * (cast_expression "(int *)((int)register0x00000010 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x30)" ( (binary_expression "(int)register0x00000010 + -0x30" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(int **)((int)register0x00000010 + -100) = param_2;" (assignment_expression "*(int **)((int)register0x00000010 + -100) = param_2" (pointer_expression "*(int **)((int)register0x00000010 + -100)" * (cast_expression "(int **)((int)register0x00000010 + -100)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000010 + -100)" ( (binary_expression "(int)register0x00000010 + -100" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x68) = param_1;" (assignment_expression "*(int *)((int)register0x00000010 + -0x68) = param_1" (pointer_expression "*(int *)((int)register0x00000010 + -0x68)" * (cast_expression "(int *)((int)register0x00000010 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x68)" ( (binary_expression "(int)register0x00000010 + -0x68" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x6c) = *(int *)((int)register0x00000010 + -0x24);" (assignment_expression "*(int *)((int)register0x00000010 + -0x6c) = *(int *)((int)register0x00000010 + -0x24)" (pointer_expression "*(int *)((int)register0x00000010 + -0x6c)" * (cast_expression "(int *)((int)register0x00000010 + -0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x6c)" ( (binary_expression "(int)register0x00000010 + -0x6c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(int *)((int)register0x00000010 + -0x24)" * (cast_expression "(int *)((int)register0x00000010 + -0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x24)" ( (binary_expression "(int)register0x00000010 + -0x24" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x70) = 0xcc1e7;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x70) = 0xcc1e7" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x70)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x70)" ( (binary_expression "(int)register0x00000010 + -0x70" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001055f0();" (call_expression "FUN_001055f0()" identifier (argument_list "()" ( ))) ;) (expression_statement "param_1 = param_1 + *(int *)((int)register0x00000010 + -0x2c);" (assignment_expression "param_1 = param_1 + *(int *)((int)register0x00000010 + -0x2c)" identifier = (binary_expression "param_1 + *(int *)((int)register0x00000010 + -0x2c)" identifier + (pointer_expression "*(int *)((int)register0x00000010 + -0x2c)" * (cast_expression "(int *)((int)register0x00000010 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x2c)" ( (binary_expression "(int)register0x00000010 + -0x2c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) (expression_statement "*(uint *)((int)register0x00000010 + -0x58) = (uint)*(byte *)((int)register0x00000010 + -0x3d);" (assignment_expression "*(uint *)((int)register0x00000010 + -0x58) = (uint)*(byte *)((int)register0x00000010 + -0x3d)" (pointer_expression "*(uint *)((int)register0x00000010 + -0x58)" * (cast_expression "(uint *)((int)register0x00000010 + -0x58)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x58)" ( (binary_expression "(int)register0x00000010 + -0x58" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(uint)*(byte *)((int)register0x00000010 + -0x3d)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)register0x00000010 + -0x3d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x3d)" ( (binary_expression "(int)register0x00000010 + -0x3d" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x38);" (assignment_expression "*(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x38)" (pointer_expression "*(int *)((int)register0x00000010 + -0x5c)" * (cast_expression "(int *)((int)register0x00000010 + -0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x5c)" ( (binary_expression "(int)register0x00000010 + -0x5c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(int *)((int)register0x00000010 + -0x38)" * (cast_expression "(int *)((int)register0x00000010 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x38)" ( (binary_expression "(int)register0x00000010 + -0x38" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x3c);" (assignment_expression "*(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x3c)" (pointer_expression "*(int *)((int)register0x00000010 + -0x60)" * (cast_expression "(int *)((int)register0x00000010 + -0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x60)" ( (binary_expression "(int)register0x00000010 + -0x60" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(int *)((int)register0x00000010 + -0x3c)" * (cast_expression "(int *)((int)register0x00000010 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x3c)" ( (binary_expression "(int)register0x00000010 + -0x3c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -100) = 0xcc20c;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -100) = 0xcc20c" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -100)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -100)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -100)" ( (binary_expression "(int)register0x00000010 + -100" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000cc130();" (call_expression "FUN_000cc130()" identifier (argument_list "()" ( ))) ;) (expression_statement "param_3 = *(int *)((int)register0x00000010 + -0x30);" (assignment_expression "param_3 = *(int *)((int)register0x00000010 + -0x30)" identifier = (pointer_expression "*(int *)((int)register0x00000010 + -0x30)" * (cast_expression "(int *)((int)register0x00000010 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x30)" ( (binary_expression "(int)register0x00000010 + -0x30" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(int *)((int)register0x00000010 + 4) = iVar2 - *(int *)((int)register0x00000010 + -0x38);" (assignment_expression "*(int *)((int)register0x00000010 + 4) = iVar2 - *(int *)((int)register0x00000010 + -0x38)" (pointer_expression "*(int *)((int)register0x00000010 + 4)" * (cast_expression "(int *)((int)register0x00000010 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + 4)" ( (binary_expression "(int)register0x00000010 + 4" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "iVar2 - *(int *)((int)register0x00000010 + -0x38)" identifier - (pointer_expression "*(int *)((int)register0x00000010 + -0x38)" * (cast_expression "(int *)((int)register0x00000010 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x38)" ( (binary_expression "(int)register0x00000010 + -0x38" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) (expression_statement "*(undefined1 *)((int)register0x00000010 + 8) = *(undefined1 *)((int)register0x00000010 + -0x3d);" (assignment_expression "*(undefined1 *)((int)register0x00000010 + 8) = *(undefined1 *)((int)register0x00000010 + -0x3d)" (pointer_expression "*(undefined1 *)((int)register0x00000010 + 8)" * (cast_expression "(undefined1 *)((int)register0x00000010 + 8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + 8)" ( (binary_expression "(int)register0x00000010 + 8" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined1 *)((int)register0x00000010 + -0x3d)" * (cast_expression "(undefined1 *)((int)register0x00000010 + -0x3d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x3d)" ( (binary_expression "(int)register0x00000010 + -0x3d" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "param_2 = *(int **)((int)register0x00000010 + -0x34);" (assignment_expression "param_2 = *(int **)((int)register0x00000010 + -0x34)" identifier = (pointer_expression "*(int **)((int)register0x00000010 + -0x34)" * (cast_expression "(int **)((int)register0x00000010 + -0x34)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000010 + -0x34)" ( (binary_expression "(int)register0x00000010 + -0x34" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(int *)register0x00000010 = iVar1 - *(int *)((int)register0x00000010 + -0x3c);" (assignment_expression "*(int *)register0x00000010 = iVar1 - *(int *)((int)register0x00000010 + -0x3c)" (pointer_expression "*(int *)register0x00000010" * (cast_expression "(int *)register0x00000010" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "iVar1 - *(int *)((int)register0x00000010 + -0x3c)" identifier - (pointer_expression "*(int *)((int)register0x00000010 + -0x3c)" * (cast_expression "(int *)((int)register0x00000010 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x3c)" ( (binary_expression "(int)register0x00000010 + -0x3c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) (expression_statement "unaff_EBX = *(int *)((int)register0x00000010 + -0x14);" (assignment_expression "unaff_EBX = *(int *)((int)register0x00000010 + -0x14)" identifier = (pointer_expression "*(int *)((int)register0x00000010 + -0x14)" * (cast_expression "(int *)((int)register0x00000010 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x14)" ( (binary_expression "(int)register0x00000010 + -0x14" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "unaff_ESI = *(int *)((int)register0x00000010 + -0x10);" (assignment_expression "unaff_ESI = *(int *)((int)register0x00000010 + -0x10)" identifier = (pointer_expression "*(int *)((int)register0x00000010 + -0x10)" * (cast_expression "(int *)((int)register0x00000010 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x10)" ( (binary_expression "(int)register0x00000010 + -0x10" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "unaff_EDI = *(int *)((int)register0x00000010 + -0xc);" (assignment_expression "unaff_EDI = *(int *)((int)register0x00000010 + -0xc)" identifier = (pointer_expression "*(int *)((int)register0x00000010 + -0xc)" * (cast_expression "(int *)((int)register0x00000010 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0xc)" ( (binary_expression "(int)register0x00000010 + -0xc" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "unaff_EBP = *(int *)((int)register0x00000010 + -8);" (assignment_expression "unaff_EBP = *(int *)((int)register0x00000010 + -8)" identifier = (pointer_expression "*(int *)((int)register0x00000010 + -8)" * (cast_expression "(int *)((int)register0x00000010 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -8)" ( (binary_expression "(int)register0x00000010 + -8" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "register0x00000010 = (BADSPACEBASE *)((int)register0x00000010 + -4);" (assignment_expression "register0x00000010 = (BADSPACEBASE *)((int)register0x00000010 + -4)" identifier = (cast_expression "(BADSPACEBASE *)((int)register0x00000010 + -4)" ( (type_descriptor "BADSPACEBASE *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -4)" ( (binary_expression "(int)register0x00000010 + -4" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) })) (expression_statement "iVar1 = *param_2;" (assignment_expression "iVar1 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "iVar2 = **(int **)((int)register0x00000010 + -0x40);" (assignment_expression "iVar2 = **(int **)((int)register0x00000010 + -0x40)" identifier = (pointer_expression "**(int **)((int)register0x00000010 + -0x40)" * (pointer_expression "*(int **)((int)register0x00000010 + -0x40)" * (cast_expression "(int **)((int)register0x00000010 + -0x40)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000010 + -0x40)" ( (binary_expression "(int)register0x00000010 + -0x40" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) (if_statement "if ((*(byte *)(iVar1 + 0x1c) & 1) == 0) {\n    *(int *)((int)register0x00000010 + -0x50) = iVar2;\n    *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x14) + 0x39983b\n    ;\n    *(undefined4 *)((int)register0x00000010 + -0x58) = 0xc5;\n    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x14) + 0x381224\n    ;\n                    \n    *(undefined **)((int)register0x00000010 + -0x60) = &UNK_000cc2d9;\n    FUN_002446e0();\n  }" if (parenthesized_expression "((*(byte *)(iVar1 + 0x1c) & 1) == 0)" ( (binary_expression "(*(byte *)(iVar1 + 0x1c) & 1) == 0" (parenthesized_expression "(*(byte *)(iVar1 + 0x1c) & 1)" ( (binary_expression "*(byte *)(iVar1 + 0x1c) & 1" (pointer_expression "*(byte *)(iVar1 + 0x1c)" * (cast_expression "(byte *)(iVar1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x1c)" ( (binary_expression "iVar1 + 0x1c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    *(int *)((int)register0x00000010 + -0x50) = iVar2;\n    *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x14) + 0x39983b\n    ;\n    *(undefined4 *)((int)register0x00000010 + -0x58) = 0xc5;\n    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x14) + 0x381224\n    ;\n                    \n    *(undefined **)((int)register0x00000010 + -0x60) = &UNK_000cc2d9;\n    FUN_002446e0();\n  }" { (expression_statement "*(int *)((int)register0x00000010 + -0x50) = iVar2;" (assignment_expression "*(int *)((int)register0x00000010 + -0x50) = iVar2" (pointer_expression "*(int *)((int)register0x00000010 + -0x50)" * (cast_expression "(int *)((int)register0x00000010 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x50)" ( (binary_expression "(int)register0x00000010 + -0x50" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x14) + 0x39983b\n    ;" (assignment_expression "*(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x14) + 0x39983b" (pointer_expression "*(int *)((int)register0x00000010 + -0x54)" * (cast_expression "(int *)((int)register0x00000010 + -0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x54)" ( (binary_expression "(int)register0x00000010 + -0x54" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(int *)((int)register0x00000010 + -0x14) + 0x39983b" (pointer_expression "*(int *)((int)register0x00000010 + -0x14)" * (cast_expression "(int *)((int)register0x00000010 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x14)" ( (binary_expression "(int)register0x00000010 + -0x14" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal)) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x58) = 0xc5;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x58) = 0xc5" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x58)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x58)" ( (binary_expression "(int)register0x00000010 + -0x58" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x14) + 0x381224\n    ;" (assignment_expression "*(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x14) + 0x381224" (pointer_expression "*(int *)((int)register0x00000010 + -0x5c)" * (cast_expression "(int *)((int)register0x00000010 + -0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x5c)" ( (binary_expression "(int)register0x00000010 + -0x5c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(int *)((int)register0x00000010 + -0x14) + 0x381224" (pointer_expression "*(int *)((int)register0x00000010 + -0x14)" * (cast_expression "(int *)((int)register0x00000010 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x14)" ( (binary_expression "(int)register0x00000010 + -0x14" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal)) ;) (expression_statement "*(undefined **)((int)register0x00000010 + -0x60) = &UNK_000cc2d9;" (assignment_expression "*(undefined **)((int)register0x00000010 + -0x60) = &UNK_000cc2d9" (pointer_expression "*(undefined **)((int)register0x00000010 + -0x60)" * (cast_expression "(undefined **)((int)register0x00000010 + -0x60)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000010 + -0x60)" ( (binary_expression "(int)register0x00000010 + -0x60" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&UNK_000cc2d9" & identifier)) ;) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if ((*(byte *)(iVar2 + 0x1c) & 1) != 0) {\n    if (*(uint *)(iVar1 + 8) < *(uint *)(iVar2 + 8) ||\n        *(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8) <\n        (uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))) {\n      **(int **)((int)register0x00000010 + -0x40) = iVar1;\n      *param_2 = iVar2;\n    }\n    return;\n  }" if (parenthesized_expression "((*(byte *)(iVar2 + 0x1c) & 1) != 0)" ( (binary_expression "(*(byte *)(iVar2 + 0x1c) & 1) != 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x1c) & 1)" ( (binary_expression "*(byte *)(iVar2 + 0x1c) & 1" (pointer_expression "*(byte *)(iVar2 + 0x1c)" * (cast_expression "(byte *)(iVar2 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x1c)" ( (binary_expression "iVar2 + 0x1c" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    if (*(uint *)(iVar1 + 8) < *(uint *)(iVar2 + 8) ||\n        *(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8) <\n        (uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))) {\n      **(int **)((int)register0x00000010 + -0x40) = iVar1;\n      *param_2 = iVar2;\n    }\n    return;\n  }" { (if_statement "if (*(uint *)(iVar1 + 8) < *(uint *)(iVar2 + 8) ||\n        *(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8) <\n        (uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))) {\n      **(int **)((int)register0x00000010 + -0x40) = iVar1;\n      *param_2 = iVar2;\n    }" if (parenthesized_expression "(*(uint *)(iVar1 + 8) < *(uint *)(iVar2 + 8) ||\n        *(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8) <\n        (uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4)))" ( (binary_expression "*(uint *)(iVar1 + 8) < *(uint *)(iVar2 + 8) ||\n        *(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8) <\n        (uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))" (binary_expression "*(uint *)(iVar1 + 8) < *(uint *)(iVar2 + 8)" (pointer_expression "*(uint *)(iVar1 + 8)" * (cast_expression "(uint *)(iVar1 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) )))) < (pointer_expression "*(uint *)(iVar2 + 8)" * (cast_expression "(uint *)(iVar2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) ))))) || (binary_expression "*(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8) <\n        (uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))" (binary_expression "*(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8)" (pointer_expression "*(uint *)(iVar1 + 8)" * (cast_expression "(uint *)(iVar1 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) )))) - (pointer_expression "*(uint *)(iVar2 + 8)" * (cast_expression "(uint *)(iVar2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) ))))) < (call_expression "(uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))" ( (binary_expression "*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4)" (pointer_expression "*(uint *)(iVar1 + 4)" * (cast_expression "(uint *)(iVar1 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) < (pointer_expression "*(uint *)(iVar2 + 4)" * (cast_expression "(uint *)(iVar2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) ))))) ))))) )) (compound_statement "{\n      **(int **)((int)register0x00000010 + -0x40) = iVar1;\n      *param_2 = iVar2;\n    }" { (expression_statement "**(int **)((int)register0x00000010 + -0x40) = iVar1;" (assignment_expression "**(int **)((int)register0x00000010 + -0x40) = iVar1" (pointer_expression "**(int **)((int)register0x00000010 + -0x40)" * (pointer_expression "*(int **)((int)register0x00000010 + -0x40)" * (cast_expression "(int **)((int)register0x00000010 + -0x40)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000010 + -0x40)" ( (binary_expression "(int)register0x00000010 + -0x40" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) = identifier) ;) (expression_statement "*param_2 = iVar2;" (assignment_expression "*param_2 = iVar2" (pointer_expression "*param_2" * identifier) = identifier) ;) })) (return_statement "return;" return ;) })) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x50) = 0xcc2c0;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x50) = 0xcc2c0" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x50)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x50)" ( (binary_expression "(int)register0x00000010 + -0x50" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000b0510();" (call_expression "FUN_000b0510()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) == LIT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression IDENT / LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) + (binary_expression (parenthesized_expression ( (binary_expression IDENT / LIT) )) * LIT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression IDENT >> LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) >> LIT)) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))))) ;) (if_statement if (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) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (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) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) || (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) ))))) < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (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 { (expression_statement (assignment_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (return_statement return ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "void __regparm3 FUN_000cc130(int param_1,int *param_2,int param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 unaff_EBX;\n  undefined4 unaff_EBP;\n  undefined4 unaff_ESI;\n  undefined4 unaff_EDI;\n  \n  while( true ) {\n    *(undefined4 *)((int)register0x00000010 + -4) = unaff_EBP;\n    *(undefined4 *)((int)register0x00000010 + -8) = unaff_EDI;\n    *(undefined4 *)((int)register0x00000010 + -0xc) = unaff_ESI;\n    *(undefined4 *)((int)register0x00000010 + -0x10) = unaff_EBX;\n    *(undefined4 *)((int)register0x00000010 + -0x14) = 0xcc139;\n    iVar1 = *(int *)((int)register0x00000010 + 4);\n    iVar2 = *(int *)((int)register0x00000010 + 8);\n    *(int *)((int)register0x00000010 + -0x40) = param_1;\n    *(char *)((int)register0x00000010 + -0x39) = (char)*(int *)((int)register0x00000010 + 0xc);\n    if (iVar1 == 0) {\n      return;\n    }\n    if (iVar2 == 0) {\n      return;\n    }\n    *(int *)((int)register0x00000010 + -0x2c) = param_3;\n    if (iVar1 + iVar2 == 2) break;\n    if (iVar2 < iVar1) {\n      *(int *)((int)register0x00000010 + -0x38) = iVar1 / 2;\n      param_1 = *(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int *)((int)register0x00000010 + -0x5c) = param_1;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc269;\n      FUN_000ba7c0();\n      *(int *)((int)register0x00000010 + -0x30) = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x20) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3 >> 2;\n    }\n    else {\n      iVar3 = iVar2 / 2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3;\n      *(int *)((int)register0x00000010 + -0x28) = iVar3 * 4;\n      *(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5;\n      FUN_000ba670();\n      param_1 = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x28);\n      *(int *)((int)register0x00000010 + -0x38) =\n           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2;\n    }\n    *(int *)((int)register0x00000010 + -0x28) = iVar3;\n    *(undefined4 *)((int)register0x00000010 + -0x5c) = 0;\n    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x30);\n    *(int **)((int)register0x00000010 + -100) = param_2;\n    *(int *)((int)register0x00000010 + -0x68) = param_1;\n    *(int *)((int)register0x00000010 + -0x6c) = *(int *)((int)register0x00000010 + -0x24);\n    *(undefined4 *)((int)register0x00000010 + -0x70) = 0xcc1e7;\n    FUN_001055f0();\n    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x2c);\n    *(uint *)((int)register0x00000010 + -0x58) = (uint)*(byte *)((int)register0x00000010 + -0x3d);\n    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x38);\n    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x3c);\n    *(undefined4 *)((int)register0x00000010 + -100) = 0xcc20c;\n    FUN_000cc130();\n    param_3 = *(int *)((int)register0x00000010 + -0x30);\n    *(int *)((int)register0x00000010 + 4) = iVar2 - *(int *)((int)register0x00000010 + -0x38);\n    *(undefined1 *)((int)register0x00000010 + 8) = *(undefined1 *)((int)register0x00000010 + -0x3d);\n    param_2 = *(int **)((int)register0x00000010 + -0x34);\n    *(int *)register0x00000010 = iVar1 - *(int *)((int)register0x00000010 + -0x3c);\n    unaff_EBX = *(int *)((int)register0x00000010 + -0x14);\n    unaff_ESI = *(int *)((int)register0x00000010 + -0x10);\n    unaff_EDI = *(int *)((int)register0x00000010 + -0xc);\n    unaff_EBP = *(int *)((int)register0x00000010 + -8);\n    register0x00000010 = (BADSPACEBASE *)((int)register0x00000010 + -4);\n  }\n  iVar1 = *param_2;\n  iVar2 = **(int **)((int)register0x00000010 + -0x40);\n  if ((*(byte *)(iVar1 + 0x1c) & 1) == 0) {\n    *(int *)((int)register0x00000010 + -0x50) = iVar2;\n    *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x14) + 0x39983b\n    ;\n    *(undefined4 *)((int)register0x00000010 + -0x58) = 0xc5;\n    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x14) + 0x381224\n    ;\n                    \n    *(undefined **)((int)register0x00000010 + -0x60) = &UNK_000cc2d9;\n    FUN_002446e0();\n  }\n  if ((*(byte *)(iVar2 + 0x1c) & 1) != 0) {\n    if (*(uint *)(iVar1 + 8) < *(uint *)(iVar2 + 8) ||\n        *(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8) <\n        (uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))) {\n      **(int **)((int)register0x00000010 + -0x40) = iVar1;\n      *param_2 = iVar2;\n    }\n    return;\n  }\n                    \n  *(undefined4 *)((int)register0x00000010 + -0x50) = 0xcc2c0;\n  FUN_000b0510();\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_000cc130(int param_1,int *param_2,int param_3)" (identifier "FUN_000cc130") (parameter_list "(int param_1,int *param_2,int param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 unaff_EBX;\n  undefined4 unaff_EBP;\n  undefined4 unaff_ESI;\n  undefined4 unaff_EDI;\n  \n  while( true ) {\n    *(undefined4 *)((int)register0x00000010 + -4) = unaff_EBP;\n    *(undefined4 *)((int)register0x00000010 + -8) = unaff_EDI;\n    *(undefined4 *)((int)register0x00000010 + -0xc) = unaff_ESI;\n    *(undefined4 *)((int)register0x00000010 + -0x10) = unaff_EBX;\n    *(undefined4 *)((int)register0x00000010 + -0x14) = 0xcc139;\n    iVar1 = *(int *)((int)register0x00000010 + 4);\n    iVar2 = *(int *)((int)register0x00000010 + 8);\n    *(int *)((int)register0x00000010 + -0x40) = param_1;\n    *(char *)((int)register0x00000010 + -0x39) = (char)*(int *)((int)register0x00000010 + 0xc);\n    if (iVar1 == 0) {\n      return;\n    }\n    if (iVar2 == 0) {\n      return;\n    }\n    *(int *)((int)register0x00000010 + -0x2c) = param_3;\n    if (iVar1 + iVar2 == 2) break;\n    if (iVar2 < iVar1) {\n      *(int *)((int)register0x00000010 + -0x38) = iVar1 / 2;\n      param_1 = *(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int *)((int)register0x00000010 + -0x5c) = param_1;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc269;\n      FUN_000ba7c0();\n      *(int *)((int)register0x00000010 + -0x30) = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x20) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3 >> 2;\n    }\n    else {\n      iVar3 = iVar2 / 2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3;\n      *(int *)((int)register0x00000010 + -0x28) = iVar3 * 4;\n      *(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5;\n      FUN_000ba670();\n      param_1 = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x28);\n      *(int *)((int)register0x00000010 + -0x38) =\n           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2;\n    }\n    *(int *)((int)register0x00000010 + -0x28) = iVar3;\n    *(undefined4 *)((int)register0x00000010 + -0x5c) = 0;\n    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x30);\n    *(int **)((int)register0x00000010 + -100) = param_2;\n    *(int *)((int)register0x00000010 + -0x68) = param_1;\n    *(int *)((int)register0x00000010 + -0x6c) = *(int *)((int)register0x00000010 + -0x24);\n    *(undefined4 *)((int)register0x00000010 + -0x70) = 0xcc1e7;\n    FUN_001055f0();\n    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x2c);\n    *(uint *)((int)register0x00000010 + -0x58) = (uint)*(byte *)((int)register0x00000010 + -0x3d);\n    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x38);\n    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x3c);\n    *(undefined4 *)((int)register0x00000010 + -100) = 0xcc20c;\n    FUN_000cc130();\n    param_3 = *(int *)((int)register0x00000010 + -0x30);\n    *(int *)((int)register0x00000010 + 4) = iVar2 - *(int *)((int)register0x00000010 + -0x38);\n    *(undefined1 *)((int)register0x00000010 + 8) = *(undefined1 *)((int)register0x00000010 + -0x3d);\n    param_2 = *(int **)((int)register0x00000010 + -0x34);\n    *(int *)register0x00000010 = iVar1 - *(int *)((int)register0x00000010 + -0x3c);\n    unaff_EBX = *(int *)((int)register0x00000010 + -0x14);\n    unaff_ESI = *(int *)((int)register0x00000010 + -0x10);\n    unaff_EDI = *(int *)((int)register0x00000010 + -0xc);\n    unaff_EBP = *(int *)((int)register0x00000010 + -8);\n    register0x00000010 = (BADSPACEBASE *)((int)register0x00000010 + -4);\n  }\n  iVar1 = *param_2;\n  iVar2 = **(int **)((int)register0x00000010 + -0x40);\n  if ((*(byte *)(iVar1 + 0x1c) & 1) == 0) {\n    *(int *)((int)register0x00000010 + -0x50) = iVar2;\n    *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x14) + 0x39983b\n    ;\n    *(undefined4 *)((int)register0x00000010 + -0x58) = 0xc5;\n    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x14) + 0x381224\n    ;\n                    \n    *(undefined **)((int)register0x00000010 + -0x60) = &UNK_000cc2d9;\n    FUN_002446e0();\n  }\n  if ((*(byte *)(iVar2 + 0x1c) & 1) != 0) {\n    if (*(uint *)(iVar1 + 8) < *(uint *)(iVar2 + 8) ||\n        *(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8) <\n        (uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))) {\n      **(int **)((int)register0x00000010 + -0x40) = iVar1;\n      *param_2 = iVar2;\n    }\n    return;\n  }\n                    \n  *(undefined4 *)((int)register0x00000010 + -0x50) = 0xcc2c0;\n  FUN_000b0510();\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 "undefined4 unaff_EBX;" (type_identifier "undefined4") (identifier "unaff_EBX") (; ";")) (declaration "undefined4 unaff_EBP;" (type_identifier "undefined4") (identifier "unaff_EBP") (; ";")) (declaration "undefined4 unaff_ESI;" (type_identifier "undefined4") (identifier "unaff_ESI") (; ";")) (declaration "undefined4 unaff_EDI;" (type_identifier "undefined4") (identifier "unaff_EDI") (; ";")) (while_statement "while( true ) {\n    *(undefined4 *)((int)register0x00000010 + -4) = unaff_EBP;\n    *(undefined4 *)((int)register0x00000010 + -8) = unaff_EDI;\n    *(undefined4 *)((int)register0x00000010 + -0xc) = unaff_ESI;\n    *(undefined4 *)((int)register0x00000010 + -0x10) = unaff_EBX;\n    *(undefined4 *)((int)register0x00000010 + -0x14) = 0xcc139;\n    iVar1 = *(int *)((int)register0x00000010 + 4);\n    iVar2 = *(int *)((int)register0x00000010 + 8);\n    *(int *)((int)register0x00000010 + -0x40) = param_1;\n    *(char *)((int)register0x00000010 + -0x39) = (char)*(int *)((int)register0x00000010 + 0xc);\n    if (iVar1 == 0) {\n      return;\n    }\n    if (iVar2 == 0) {\n      return;\n    }\n    *(int *)((int)register0x00000010 + -0x2c) = param_3;\n    if (iVar1 + iVar2 == 2) break;\n    if (iVar2 < iVar1) {\n      *(int *)((int)register0x00000010 + -0x38) = iVar1 / 2;\n      param_1 = *(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int *)((int)register0x00000010 + -0x5c) = param_1;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc269;\n      FUN_000ba7c0();\n      *(int *)((int)register0x00000010 + -0x30) = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x20) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3 >> 2;\n    }\n    else {\n      iVar3 = iVar2 / 2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3;\n      *(int *)((int)register0x00000010 + -0x28) = iVar3 * 4;\n      *(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5;\n      FUN_000ba670();\n      param_1 = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x28);\n      *(int *)((int)register0x00000010 + -0x38) =\n           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2;\n    }\n    *(int *)((int)register0x00000010 + -0x28) = iVar3;\n    *(undefined4 *)((int)register0x00000010 + -0x5c) = 0;\n    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x30);\n    *(int **)((int)register0x00000010 + -100) = param_2;\n    *(int *)((int)register0x00000010 + -0x68) = param_1;\n    *(int *)((int)register0x00000010 + -0x6c) = *(int *)((int)register0x00000010 + -0x24);\n    *(undefined4 *)((int)register0x00000010 + -0x70) = 0xcc1e7;\n    FUN_001055f0();\n    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x2c);\n    *(uint *)((int)register0x00000010 + -0x58) = (uint)*(byte *)((int)register0x00000010 + -0x3d);\n    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x38);\n    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x3c);\n    *(undefined4 *)((int)register0x00000010 + -100) = 0xcc20c;\n    FUN_000cc130();\n    param_3 = *(int *)((int)register0x00000010 + -0x30);\n    *(int *)((int)register0x00000010 + 4) = iVar2 - *(int *)((int)register0x00000010 + -0x38);\n    *(undefined1 *)((int)register0x00000010 + 8) = *(undefined1 *)((int)register0x00000010 + -0x3d);\n    param_2 = *(int **)((int)register0x00000010 + -0x34);\n    *(int *)register0x00000010 = iVar1 - *(int *)((int)register0x00000010 + -0x3c);\n    unaff_EBX = *(int *)((int)register0x00000010 + -0x14);\n    unaff_ESI = *(int *)((int)register0x00000010 + -0x10);\n    unaff_EDI = *(int *)((int)register0x00000010 + -0xc);\n    unaff_EBP = *(int *)((int)register0x00000010 + -8);\n    register0x00000010 = (BADSPACEBASE *)((int)register0x00000010 + -4);\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    *(undefined4 *)((int)register0x00000010 + -4) = unaff_EBP;\n    *(undefined4 *)((int)register0x00000010 + -8) = unaff_EDI;\n    *(undefined4 *)((int)register0x00000010 + -0xc) = unaff_ESI;\n    *(undefined4 *)((int)register0x00000010 + -0x10) = unaff_EBX;\n    *(undefined4 *)((int)register0x00000010 + -0x14) = 0xcc139;\n    iVar1 = *(int *)((int)register0x00000010 + 4);\n    iVar2 = *(int *)((int)register0x00000010 + 8);\n    *(int *)((int)register0x00000010 + -0x40) = param_1;\n    *(char *)((int)register0x00000010 + -0x39) = (char)*(int *)((int)register0x00000010 + 0xc);\n    if (iVar1 == 0) {\n      return;\n    }\n    if (iVar2 == 0) {\n      return;\n    }\n    *(int *)((int)register0x00000010 + -0x2c) = param_3;\n    if (iVar1 + iVar2 == 2) break;\n    if (iVar2 < iVar1) {\n      *(int *)((int)register0x00000010 + -0x38) = iVar1 / 2;\n      param_1 = *(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int *)((int)register0x00000010 + -0x5c) = param_1;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc269;\n      FUN_000ba7c0();\n      *(int *)((int)register0x00000010 + -0x30) = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x20) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3 >> 2;\n    }\n    else {\n      iVar3 = iVar2 / 2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3;\n      *(int *)((int)register0x00000010 + -0x28) = iVar3 * 4;\n      *(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5;\n      FUN_000ba670();\n      param_1 = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x28);\n      *(int *)((int)register0x00000010 + -0x38) =\n           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2;\n    }\n    *(int *)((int)register0x00000010 + -0x28) = iVar3;\n    *(undefined4 *)((int)register0x00000010 + -0x5c) = 0;\n    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x30);\n    *(int **)((int)register0x00000010 + -100) = param_2;\n    *(int *)((int)register0x00000010 + -0x68) = param_1;\n    *(int *)((int)register0x00000010 + -0x6c) = *(int *)((int)register0x00000010 + -0x24);\n    *(undefined4 *)((int)register0x00000010 + -0x70) = 0xcc1e7;\n    FUN_001055f0();\n    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x2c);\n    *(uint *)((int)register0x00000010 + -0x58) = (uint)*(byte *)((int)register0x00000010 + -0x3d);\n    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x38);\n    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x3c);\n    *(undefined4 *)((int)register0x00000010 + -100) = 0xcc20c;\n    FUN_000cc130();\n    param_3 = *(int *)((int)register0x00000010 + -0x30);\n    *(int *)((int)register0x00000010 + 4) = iVar2 - *(int *)((int)register0x00000010 + -0x38);\n    *(undefined1 *)((int)register0x00000010 + 8) = *(undefined1 *)((int)register0x00000010 + -0x3d);\n    param_2 = *(int **)((int)register0x00000010 + -0x34);\n    *(int *)register0x00000010 = iVar1 - *(int *)((int)register0x00000010 + -0x3c);\n    unaff_EBX = *(int *)((int)register0x00000010 + -0x14);\n    unaff_ESI = *(int *)((int)register0x00000010 + -0x10);\n    unaff_EDI = *(int *)((int)register0x00000010 + -0xc);\n    unaff_EBP = *(int *)((int)register0x00000010 + -8);\n    register0x00000010 = (BADSPACEBASE *)((int)register0x00000010 + -4);\n  }" ({ "{") (expression_statement "*(undefined4 *)((int)register0x00000010 + -4) = unaff_EBP;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -4) = unaff_EBP" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -4)" (* "*") (cast_expression "(undefined4 *)((int)register0x00000010 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -4)" (( "(") (binary_expression "(int)register0x00000010 + -4" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "unaff_EBP")) (; ";")) (expression_statement "*(undefined4 *)((int)register0x00000010 + -8) = unaff_EDI;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -8) = unaff_EDI" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -8)" (* "*") (cast_expression "(undefined4 *)((int)register0x00000010 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -8)" (( "(") (binary_expression "(int)register0x00000010 + -8" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "unaff_EDI")) (; ";")) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0xc) = unaff_ESI;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0xc) = unaff_ESI" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0xc)" (* "*") (cast_expression "(undefined4 *)((int)register0x00000010 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0xc)" (( "(") (binary_expression "(int)register0x00000010 + -0xc" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "unaff_ESI")) (; ";")) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x10) = unaff_EBX;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x10) = unaff_EBX" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x10)" (* "*") (cast_expression "(undefined4 *)((int)register0x00000010 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x10)" (( "(") (binary_expression "(int)register0x00000010 + -0x10" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_EBX")) (; ";")) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x14) = 0xcc139;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x14) = 0xcc139" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)register0x00000010 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x14)" (( "(") (binary_expression "(int)register0x00000010 + -0x14" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0xcc139")) (; ";")) (expression_statement "iVar1 = *(int *)((int)register0x00000010 + 4);" (assignment_expression "iVar1 = *(int *)((int)register0x00000010 + 4)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)((int)register0x00000010 + 4)" (* "*") (cast_expression "(int *)((int)register0x00000010 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + 4)" (( "(") (binary_expression "(int)register0x00000010 + 4" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "iVar2 = *(int *)((int)register0x00000010 + 8);" (assignment_expression "iVar2 = *(int *)((int)register0x00000010 + 8)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)((int)register0x00000010 + 8)" (* "*") (cast_expression "(int *)((int)register0x00000010 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + 8)" (( "(") (binary_expression "(int)register0x00000010 + 8" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "*(int *)((int)register0x00000010 + -0x40) = param_1;" (assignment_expression "*(int *)((int)register0x00000010 + -0x40) = param_1" (pointer_expression "*(int *)((int)register0x00000010 + -0x40)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x40)" (( "(") (binary_expression "(int)register0x00000010 + -0x40" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x40")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(char *)((int)register0x00000010 + -0x39) = (char)*(int *)((int)register0x00000010 + 0xc);" (assignment_expression "*(char *)((int)register0x00000010 + -0x39) = (char)*(int *)((int)register0x00000010 + 0xc)" (pointer_expression "*(char *)((int)register0x00000010 + -0x39)" (* "*") (cast_expression "(char *)((int)register0x00000010 + -0x39)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x39)" (( "(") (binary_expression "(int)register0x00000010 + -0x39" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x39")) () ")")))) (= "=") (cast_expression "(char)*(int *)((int)register0x00000010 + 0xc)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*(int *)((int)register0x00000010 + 0xc)" (* "*") (cast_expression "(int *)((int)register0x00000010 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + 0xc)" (( "(") (binary_expression "(int)register0x00000010 + 0xc" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "0xc")) () ")")))))) (; ";")) (if_statement "if (iVar1 == 0) {\n      return;\n    }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (iVar2 == 0) {\n      return;\n    }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "*(int *)((int)register0x00000010 + -0x2c) = param_3;" (assignment_expression "*(int *)((int)register0x00000010 + -0x2c) = param_3" (pointer_expression "*(int *)((int)register0x00000010 + -0x2c)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x2c)" (( "(") (binary_expression "(int)register0x00000010 + -0x2c" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x2c")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (if_statement "if (iVar1 + iVar2 == 2) break;" (if "if") (parenthesized_expression "(iVar1 + iVar2 == 2)" (( "(") (binary_expression "iVar1 + iVar2 == 2" (binary_expression "iVar1 + iVar2" (identifier "iVar1") (+ "+") (identifier "iVar2")) (== "==") (number_literal "2")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (iVar2 < iVar1) {\n      *(int *)((int)register0x00000010 + -0x38) = iVar1 / 2;\n      param_1 = *(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int *)((int)register0x00000010 + -0x5c) = param_1;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc269;\n      FUN_000ba7c0();\n      *(int *)((int)register0x00000010 + -0x30) = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x20) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3 >> 2;\n    }\n    else {\n      iVar3 = iVar2 / 2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3;\n      *(int *)((int)register0x00000010 + -0x28) = iVar3 * 4;\n      *(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5;\n      FUN_000ba670();\n      param_1 = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x28);\n      *(int *)((int)register0x00000010 + -0x38) =\n           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2;\n    }" (if "if") (parenthesized_expression "(iVar2 < iVar1)" (( "(") (binary_expression "iVar2 < iVar1" (identifier "iVar2") (< "<") (identifier "iVar1")) () ")")) (compound_statement "{\n      *(int *)((int)register0x00000010 + -0x38) = iVar1 / 2;\n      param_1 = *(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int *)((int)register0x00000010 + -0x5c) = param_1;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc269;\n      FUN_000ba7c0();\n      *(int *)((int)register0x00000010 + -0x30) = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x20) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3 >> 2;\n    }" ({ "{") (expression_statement "*(int *)((int)register0x00000010 + -0x38) = iVar1 / 2;" (assignment_expression "*(int *)((int)register0x00000010 + -0x38) = iVar1 / 2" (pointer_expression "*(int *)((int)register0x00000010 + -0x38)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x38)" (( "(") (binary_expression "(int)register0x00000010 + -0x38" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x38")) () ")")))) (= "=") (binary_expression "iVar1 / 2" (identifier "iVar1") (/ "/") (number_literal "2"))) (; ";")) (expression_statement "param_1 = *(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4;" (assignment_expression "param_1 = *(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4" (identifier "param_1") (= "=") (binary_expression "*(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4" (pointer_expression "*(int *)((int)register0x00000010 + -0x40)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x40)" (( "(") (binary_expression "(int)register0x00000010 + -0x40" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x40")) () ")")))) (+ "+") (binary_expression "(iVar1 / 2) * 4" (parenthesized_expression "(iVar1 / 2)" (( "(") (binary_expression "iVar1 / 2" (identifier "iVar1") (/ "/") (number_literal "2")) () ")")) (* "*") (number_literal "4")))) (; ";")) (expression_statement "*(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);" (assignment_expression "*(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20)" (pointer_expression "*(int **)((int)register0x00000010 + -0x24)" (* "*") (cast_expression "(int **)((int)register0x00000010 + -0x24)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x24)" (( "(") (binary_expression "(int)register0x00000010 + -0x24" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (cast_expression "(int *)((int)register0x00000010 + -0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x20)" (( "(") (binary_expression "(int)register0x00000010 + -0x20" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x20")) () ")")))) (; ";")) (expression_statement "*(int *)((int)register0x00000010 + -0x5c) = param_1;" (assignment_expression "*(int *)((int)register0x00000010 + -0x5c) = param_1" (pointer_expression "*(int *)((int)register0x00000010 + -0x5c)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x5c)" (( "(") (binary_expression "(int)register0x00000010 + -0x5c" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x5c")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc269;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc269" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x60)" (* "*") (cast_expression "(undefined4 *)((int)register0x00000010 + -0x60)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x60)" (( "(") (binary_expression "(int)register0x00000010 + -0x60" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x60")) () ")")))) (= "=") (number_literal "0xcc269")) (; ";")) (expression_statement "FUN_000ba7c0();" (call_expression "FUN_000ba7c0()" (identifier "FUN_000ba7c0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)((int)register0x00000010 + -0x30) = *(int *)((int)register0x00000010 + -0x20);" (assignment_expression "*(int *)((int)register0x00000010 + -0x30) = *(int *)((int)register0x00000010 + -0x20)" (pointer_expression "*(int *)((int)register0x00000010 + -0x30)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x30)" (( "(") (binary_expression "(int)register0x00000010 + -0x30" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x30")) () ")")))) (= "=") (pointer_expression "*(int *)((int)register0x00000010 + -0x20)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x20)" (( "(") (binary_expression "(int)register0x00000010 + -0x20" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x20")) () ")"))))) (; ";")) (expression_statement "iVar3 = *(int *)((int)register0x00000010 + -0x20) - (int)param_2;" (assignment_expression "iVar3 = *(int *)((int)register0x00000010 + -0x20) - (int)param_2" (identifier "iVar3") (= "=") (binary_expression "*(int *)((int)register0x00000010 + -0x20) - (int)param_2" (pointer_expression "*(int *)((int)register0x00000010 + -0x20)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x20)" (( "(") (binary_expression "(int)register0x00000010 + -0x20" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x20")) () ")")))) (- "-") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")))) (; ";")) (expression_statement "*(int *)((int)register0x00000010 + -0x34) = iVar3 >> 2;" (assignment_expression "*(int *)((int)register0x00000010 + -0x34) = iVar3 >> 2" (pointer_expression "*(int *)((int)register0x00000010 + -0x34)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x34)" (( "(") (binary_expression "(int)register0x00000010 + -0x34" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x34")) () ")")))) (= "=") (binary_expression "iVar3 >> 2" (identifier "iVar3") (>> ">>") (number_literal "2"))) (; ";")) (} "}")) (else_clause "else {\n      iVar3 = iVar2 / 2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3;\n      *(int *)((int)register0x00000010 + -0x28) = iVar3 * 4;\n      *(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5;\n      FUN_000ba670();\n      param_1 = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x28);\n      *(int *)((int)register0x00000010 + -0x38) =\n           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2;\n    }" (else "else") (compound_statement "{\n      iVar3 = iVar2 / 2;\n      *(int *)((int)register0x00000010 + -0x34) = iVar3;\n      *(int *)((int)register0x00000010 + -0x28) = iVar3 * 4;\n      *(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3;\n      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);\n      *(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3;\n      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5;\n      FUN_000ba670();\n      param_1 = *(int *)((int)register0x00000010 + -0x20);\n      iVar3 = *(int *)((int)register0x00000010 + -0x28);\n      *(int *)((int)register0x00000010 + -0x38) =\n           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2;\n    }" ({ "{") (expression_statement "iVar3 = iVar2 / 2;" (assignment_expression "iVar3 = iVar2 / 2" (identifier "iVar3") (= "=") (binary_expression "iVar2 / 2" (identifier "iVar2") (/ "/") (number_literal "2"))) (; ";")) (expression_statement "*(int *)((int)register0x00000010 + -0x34) = iVar3;" (assignment_expression "*(int *)((int)register0x00000010 + -0x34) = iVar3" (pointer_expression "*(int *)((int)register0x00000010 + -0x34)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x34)" (( "(") (binary_expression "(int)register0x00000010 + -0x34" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x34")) () ")")))) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "*(int *)((int)register0x00000010 + -0x28) = iVar3 * 4;" (assignment_expression "*(int *)((int)register0x00000010 + -0x28) = iVar3 * 4" (pointer_expression "*(int *)((int)register0x00000010 + -0x28)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x28)" (( "(") (binary_expression "(int)register0x00000010 + -0x28" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (binary_expression "iVar3 * 4" (identifier "iVar3") (* "*") (number_literal "4"))) (; ";")) (expression_statement "*(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3;" (assignment_expression "*(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3" (pointer_expression "*(int **)((int)register0x00000010 + -0x30)" (* "*") (cast_expression "(int **)((int)register0x00000010 + -0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x30)" (( "(") (binary_expression "(int)register0x00000010 + -0x30" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x30")) () ")")))) (= "=") (binary_expression "param_2 + iVar3" (identifier "param_2") (+ "+") (identifier "iVar3"))) (; ";")) (expression_statement "*(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);" (assignment_expression "*(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20)" (pointer_expression "*(int **)((int)register0x00000010 + -0x24)" (* "*") (cast_expression "(int **)((int)register0x00000010 + -0x24)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x24)" (( "(") (binary_expression "(int)register0x00000010 + -0x24" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (cast_expression "(int *)((int)register0x00000010 + -0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x20)" (( "(") (binary_expression "(int)register0x00000010 + -0x20" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x20")) () ")")))) (; ";")) (expression_statement "*(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3;" (assignment_expression "*(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3" (pointer_expression "*(int **)((int)register0x00000010 + -0x5c)" (* "*") (cast_expression "(int **)((int)register0x00000010 + -0x5c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x5c)" (( "(") (binary_expression "(int)register0x00000010 + -0x5c" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x5c")) () ")")))) (= "=") (binary_expression "param_2 + iVar3" (identifier "param_2") (+ "+") (identifier "iVar3"))) (; ";")) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x60)" (* "*") (cast_expression "(undefined4 *)((int)register0x00000010 + -0x60)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x60)" (( "(") (binary_expression "(int)register0x00000010 + -0x60" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x60")) () ")")))) (= "=") (number_literal "0xcc1b5")) (; ";")) (expression_statement "FUN_000ba670();" (call_expression "FUN_000ba670()" (identifier "FUN_000ba670") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "param_1 = *(int *)((int)register0x00000010 + -0x20);" (assignment_expression "param_1 = *(int *)((int)register0x00000010 + -0x20)" (identifier "param_1") (= "=") (pointer_expression "*(int *)((int)register0x00000010 + -0x20)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x20)" (( "(") (binary_expression "(int)register0x00000010 + -0x20" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x20")) () ")"))))) (; ";")) (expression_statement "iVar3 = *(int *)((int)register0x00000010 + -0x28);" (assignment_expression "iVar3 = *(int *)((int)register0x00000010 + -0x28)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)((int)register0x00000010 + -0x28)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x28)" (( "(") (binary_expression "(int)register0x00000010 + -0x28" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x28")) () ")"))))) (; ";")) (expression_statement "*(int *)((int)register0x00000010 + -0x38) =\n           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2;" (assignment_expression "*(int *)((int)register0x00000010 + -0x38) =\n           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2" (pointer_expression "*(int *)((int)register0x00000010 + -0x38)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x38)" (( "(") (binary_expression "(int)register0x00000010 + -0x38" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x38")) () ")")))) (= "=") (binary_expression "param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2" (binary_expression "param_1 - *(int *)((int)register0x00000010 + -0x40)" (identifier "param_1") (- "-") (pointer_expression "*(int *)((int)register0x00000010 + -0x40)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x40)" (( "(") (binary_expression "(int)register0x00000010 + -0x40" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x40")) () ")"))))) (>> ">>") (number_literal "2"))) (; ";")) (} "}")))) (expression_statement "*(int *)((int)register0x00000010 + -0x28) = iVar3;" (assignment_expression "*(int *)((int)register0x00000010 + -0x28) = iVar3" (pointer_expression "*(int *)((int)register0x00000010 + -0x28)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x28)" (( "(") (binary_expression "(int)register0x00000010 + -0x28" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x5c) = 0;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x5c) = 0" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x5c)" (* "*") (cast_expression "(undefined4 *)((int)register0x00000010 + -0x5c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x5c)" (( "(") (binary_expression "(int)register0x00000010 + -0x5c" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x5c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x30);" (assignment_expression "*(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x30)" (pointer_expression "*(int *)((int)register0x00000010 + -0x60)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x60)" (( "(") (binary_expression "(int)register0x00000010 + -0x60" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x60")) () ")")))) (= "=") (pointer_expression "*(int *)((int)register0x00000010 + -0x30)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x30)" (( "(") (binary_expression "(int)register0x00000010 + -0x30" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x30")) () ")"))))) (; ";")) (expression_statement "*(int **)((int)register0x00000010 + -100) = param_2;" (assignment_expression "*(int **)((int)register0x00000010 + -100) = param_2" (pointer_expression "*(int **)((int)register0x00000010 + -100)" (* "*") (cast_expression "(int **)((int)register0x00000010 + -100)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)register0x00000010 + -100)" (( "(") (binary_expression "(int)register0x00000010 + -100" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-100")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(int *)((int)register0x00000010 + -0x68) = param_1;" (assignment_expression "*(int *)((int)register0x00000010 + -0x68) = param_1" (pointer_expression "*(int *)((int)register0x00000010 + -0x68)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x68)" (( "(") (binary_expression "(int)register0x00000010 + -0x68" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x68")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(int *)((int)register0x00000010 + -0x6c) = *(int *)((int)register0x00000010 + -0x24);" (assignment_expression "*(int *)((int)register0x00000010 + -0x6c) = *(int *)((int)register0x00000010 + -0x24)" (pointer_expression "*(int *)((int)register0x00000010 + -0x6c)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x6c)" (( "(") (binary_expression "(int)register0x00000010 + -0x6c" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x6c")) () ")")))) (= "=") (pointer_expression "*(int *)((int)register0x00000010 + -0x24)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x24)" (( "(") (binary_expression "(int)register0x00000010 + -0x24" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x24")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x70) = 0xcc1e7;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x70) = 0xcc1e7" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x70)" (* "*") (cast_expression "(undefined4 *)((int)register0x00000010 + -0x70)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x70)" (( "(") (binary_expression "(int)register0x00000010 + -0x70" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x70")) () ")")))) (= "=") (number_literal "0xcc1e7")) (; ";")) (expression_statement "FUN_001055f0();" (call_expression "FUN_001055f0()" (identifier "FUN_001055f0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "param_1 = param_1 + *(int *)((int)register0x00000010 + -0x2c);" (assignment_expression "param_1 = param_1 + *(int *)((int)register0x00000010 + -0x2c)" (identifier "param_1") (= "=") (binary_expression "param_1 + *(int *)((int)register0x00000010 + -0x2c)" (identifier "param_1") (+ "+") (pointer_expression "*(int *)((int)register0x00000010 + -0x2c)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x2c)" (( "(") (binary_expression "(int)register0x00000010 + -0x2c" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x2c")) () ")")))))) (; ";")) (expression_statement "*(uint *)((int)register0x00000010 + -0x58) = (uint)*(byte *)((int)register0x00000010 + -0x3d);" (assignment_expression "*(uint *)((int)register0x00000010 + -0x58) = (uint)*(byte *)((int)register0x00000010 + -0x3d)" (pointer_expression "*(uint *)((int)register0x00000010 + -0x58)" (* "*") (cast_expression "(uint *)((int)register0x00000010 + -0x58)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x58)" (( "(") (binary_expression "(int)register0x00000010 + -0x58" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x58")) () ")")))) (= "=") (binary_expression "(uint)*(byte *)((int)register0x00000010 + -0x3d)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((int)register0x00000010 + -0x3d)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x3d)" (( "(") (binary_expression "(int)register0x00000010 + -0x3d" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x3d")) () ")"))))) (; ";")) (expression_statement "*(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x38);" (assignment_expression "*(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x38)" (pointer_expression "*(int *)((int)register0x00000010 + -0x5c)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x5c)" (( "(") (binary_expression "(int)register0x00000010 + -0x5c" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x5c")) () ")")))) (= "=") (pointer_expression "*(int *)((int)register0x00000010 + -0x38)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x38)" (( "(") (binary_expression "(int)register0x00000010 + -0x38" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x38")) () ")"))))) (; ";")) (expression_statement "*(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x3c);" (assignment_expression "*(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x3c)" (pointer_expression "*(int *)((int)register0x00000010 + -0x60)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x60)" (( "(") (binary_expression "(int)register0x00000010 + -0x60" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x60")) () ")")))) (= "=") (pointer_expression "*(int *)((int)register0x00000010 + -0x3c)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x3c)" (( "(") (binary_expression "(int)register0x00000010 + -0x3c" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x3c")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)((int)register0x00000010 + -100) = 0xcc20c;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -100) = 0xcc20c" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -100)" (* "*") (cast_expression "(undefined4 *)((int)register0x00000010 + -100)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -100)" (( "(") (binary_expression "(int)register0x00000010 + -100" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-100")) () ")")))) (= "=") (number_literal "0xcc20c")) (; ";")) (expression_statement "FUN_000cc130();" (call_expression "FUN_000cc130()" (identifier "FUN_000cc130") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "param_3 = *(int *)((int)register0x00000010 + -0x30);" (assignment_expression "param_3 = *(int *)((int)register0x00000010 + -0x30)" (identifier "param_3") (= "=") (pointer_expression "*(int *)((int)register0x00000010 + -0x30)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x30)" (( "(") (binary_expression "(int)register0x00000010 + -0x30" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x30")) () ")"))))) (; ";")) (expression_statement "*(int *)((int)register0x00000010 + 4) = iVar2 - *(int *)((int)register0x00000010 + -0x38);" (assignment_expression "*(int *)((int)register0x00000010 + 4) = iVar2 - *(int *)((int)register0x00000010 + -0x38)" (pointer_expression "*(int *)((int)register0x00000010 + 4)" (* "*") (cast_expression "(int *)((int)register0x00000010 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + 4)" (( "(") (binary_expression "(int)register0x00000010 + 4" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "iVar2 - *(int *)((int)register0x00000010 + -0x38)" (identifier "iVar2") (- "-") (pointer_expression "*(int *)((int)register0x00000010 + -0x38)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x38)" (( "(") (binary_expression "(int)register0x00000010 + -0x38" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x38")) () ")")))))) (; ";")) (expression_statement "*(undefined1 *)((int)register0x00000010 + 8) = *(undefined1 *)((int)register0x00000010 + -0x3d);" (assignment_expression "*(undefined1 *)((int)register0x00000010 + 8) = *(undefined1 *)((int)register0x00000010 + -0x3d)" (pointer_expression "*(undefined1 *)((int)register0x00000010 + 8)" (* "*") (cast_expression "(undefined1 *)((int)register0x00000010 + 8)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + 8)" (( "(") (binary_expression "(int)register0x00000010 + 8" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "8")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)((int)register0x00000010 + -0x3d)" (* "*") (cast_expression "(undefined1 *)((int)register0x00000010 + -0x3d)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x3d)" (( "(") (binary_expression "(int)register0x00000010 + -0x3d" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x3d")) () ")"))))) (; ";")) (expression_statement "param_2 = *(int **)((int)register0x00000010 + -0x34);" (assignment_expression "param_2 = *(int **)((int)register0x00000010 + -0x34)" (identifier "param_2") (= "=") (pointer_expression "*(int **)((int)register0x00000010 + -0x34)" (* "*") (cast_expression "(int **)((int)register0x00000010 + -0x34)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x34)" (( "(") (binary_expression "(int)register0x00000010 + -0x34" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x34")) () ")"))))) (; ";")) (expression_statement "*(int *)register0x00000010 = iVar1 - *(int *)((int)register0x00000010 + -0x3c);" (assignment_expression "*(int *)register0x00000010 = iVar1 - *(int *)((int)register0x00000010 + -0x3c)" (pointer_expression "*(int *)register0x00000010" (* "*") (cast_expression "(int *)register0x00000010" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "register0x00000010"))) (= "=") (binary_expression "iVar1 - *(int *)((int)register0x00000010 + -0x3c)" (identifier "iVar1") (- "-") (pointer_expression "*(int *)((int)register0x00000010 + -0x3c)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x3c)" (( "(") (binary_expression "(int)register0x00000010 + -0x3c" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x3c")) () ")")))))) (; ";")) (expression_statement "unaff_EBX = *(int *)((int)register0x00000010 + -0x14);" (assignment_expression "unaff_EBX = *(int *)((int)register0x00000010 + -0x14)" (identifier "unaff_EBX") (= "=") (pointer_expression "*(int *)((int)register0x00000010 + -0x14)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x14)" (( "(") (binary_expression "(int)register0x00000010 + -0x14" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x14")) () ")"))))) (; ";")) (expression_statement "unaff_ESI = *(int *)((int)register0x00000010 + -0x10);" (assignment_expression "unaff_ESI = *(int *)((int)register0x00000010 + -0x10)" (identifier "unaff_ESI") (= "=") (pointer_expression "*(int *)((int)register0x00000010 + -0x10)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x10)" (( "(") (binary_expression "(int)register0x00000010 + -0x10" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x10")) () ")"))))) (; ";")) (expression_statement "unaff_EDI = *(int *)((int)register0x00000010 + -0xc);" (assignment_expression "unaff_EDI = *(int *)((int)register0x00000010 + -0xc)" (identifier "unaff_EDI") (= "=") (pointer_expression "*(int *)((int)register0x00000010 + -0xc)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0xc)" (( "(") (binary_expression "(int)register0x00000010 + -0xc" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0xc")) () ")"))))) (; ";")) (expression_statement "unaff_EBP = *(int *)((int)register0x00000010 + -8);" (assignment_expression "unaff_EBP = *(int *)((int)register0x00000010 + -8)" (identifier "unaff_EBP") (= "=") (pointer_expression "*(int *)((int)register0x00000010 + -8)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -8)" (( "(") (binary_expression "(int)register0x00000010 + -8" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-8")) () ")"))))) (; ";")) (expression_statement "register0x00000010 = (BADSPACEBASE *)((int)register0x00000010 + -4);" (assignment_expression "register0x00000010 = (BADSPACEBASE *)((int)register0x00000010 + -4)" (identifier "register0x00000010") (= "=") (cast_expression "(BADSPACEBASE *)((int)register0x00000010 + -4)" (( "(") (type_descriptor "BADSPACEBASE *" (type_identifier "BADSPACEBASE") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -4)" (( "(") (binary_expression "(int)register0x00000010 + -4" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-4")) () ")")))) (; ";")) (} "}"))) (expression_statement "iVar1 = *param_2;" (assignment_expression "iVar1 = *param_2" (identifier "iVar1") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "iVar2 = **(int **)((int)register0x00000010 + -0x40);" (assignment_expression "iVar2 = **(int **)((int)register0x00000010 + -0x40)" (identifier "iVar2") (= "=") (pointer_expression "**(int **)((int)register0x00000010 + -0x40)" (* "*") (pointer_expression "*(int **)((int)register0x00000010 + -0x40)" (* "*") (cast_expression "(int **)((int)register0x00000010 + -0x40)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x40)" (( "(") (binary_expression "(int)register0x00000010 + -0x40" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x40")) () ")")))))) (; ";")) (if_statement "if ((*(byte *)(iVar1 + 0x1c) & 1) == 0) {\n    *(int *)((int)register0x00000010 + -0x50) = iVar2;\n    *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x14) + 0x39983b\n    ;\n    *(undefined4 *)((int)register0x00000010 + -0x58) = 0xc5;\n    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x14) + 0x381224\n    ;\n                    \n    *(undefined **)((int)register0x00000010 + -0x60) = &UNK_000cc2d9;\n    FUN_002446e0();\n  }" (if "if") (parenthesized_expression "((*(byte *)(iVar1 + 0x1c) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(iVar1 + 0x1c) & 1) == 0" (parenthesized_expression "(*(byte *)(iVar1 + 0x1c) & 1)" (( "(") (binary_expression "*(byte *)(iVar1 + 0x1c) & 1" (pointer_expression "*(byte *)(iVar1 + 0x1c)" (* "*") (cast_expression "(byte *)(iVar1 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x1c)" (( "(") (binary_expression "iVar1 + 0x1c" (identifier "iVar1") (+ "+") (number_literal "0x1c")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    *(int *)((int)register0x00000010 + -0x50) = iVar2;\n    *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x14) + 0x39983b\n    ;\n    *(undefined4 *)((int)register0x00000010 + -0x58) = 0xc5;\n    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x14) + 0x381224\n    ;\n                    \n    *(undefined **)((int)register0x00000010 + -0x60) = &UNK_000cc2d9;\n    FUN_002446e0();\n  }" ({ "{") (expression_statement "*(int *)((int)register0x00000010 + -0x50) = iVar2;" (assignment_expression "*(int *)((int)register0x00000010 + -0x50) = iVar2" (pointer_expression "*(int *)((int)register0x00000010 + -0x50)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x50)" (( "(") (binary_expression "(int)register0x00000010 + -0x50" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x50")) () ")")))) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "*(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x14) + 0x39983b\n    ;" (assignment_expression "*(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x14) + 0x39983b" (pointer_expression "*(int *)((int)register0x00000010 + -0x54)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x54)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x54)" (( "(") (binary_expression "(int)register0x00000010 + -0x54" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x54")) () ")")))) (= "=") (binary_expression "*(int *)((int)register0x00000010 + -0x14) + 0x39983b" (pointer_expression "*(int *)((int)register0x00000010 + -0x14)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x14)" (( "(") (binary_expression "(int)register0x00000010 + -0x14" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x14")) () ")")))) (+ "+") (number_literal "0x39983b"))) (; ";")) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x58) = 0xc5;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x58) = 0xc5" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x58)" (* "*") (cast_expression "(undefined4 *)((int)register0x00000010 + -0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x58)" (( "(") (binary_expression "(int)register0x00000010 + -0x58" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x58")) () ")")))) (= "=") (number_literal "0xc5")) (; ";")) (expression_statement "*(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x14) + 0x381224\n    ;" (assignment_expression "*(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x14) + 0x381224" (pointer_expression "*(int *)((int)register0x00000010 + -0x5c)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x5c)" (( "(") (binary_expression "(int)register0x00000010 + -0x5c" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x5c")) () ")")))) (= "=") (binary_expression "*(int *)((int)register0x00000010 + -0x14) + 0x381224" (pointer_expression "*(int *)((int)register0x00000010 + -0x14)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x14)" (( "(") (binary_expression "(int)register0x00000010 + -0x14" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x14")) () ")")))) (+ "+") (number_literal "0x381224"))) (; ";")) (expression_statement "*(undefined **)((int)register0x00000010 + -0x60) = &UNK_000cc2d9;" (assignment_expression "*(undefined **)((int)register0x00000010 + -0x60) = &UNK_000cc2d9" (pointer_expression "*(undefined **)((int)register0x00000010 + -0x60)" (* "*") (cast_expression "(undefined **)((int)register0x00000010 + -0x60)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x60)" (( "(") (binary_expression "(int)register0x00000010 + -0x60" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x60")) () ")")))) (= "=") (pointer_expression "&UNK_000cc2d9" (& "&") (identifier "UNK_000cc2d9"))) (; ";")) (expression_statement "FUN_002446e0();" (call_expression "FUN_002446e0()" (identifier "FUN_002446e0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if ((*(byte *)(iVar2 + 0x1c) & 1) != 0) {\n    if (*(uint *)(iVar1 + 8) < *(uint *)(iVar2 + 8) ||\n        *(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8) <\n        (uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))) {\n      **(int **)((int)register0x00000010 + -0x40) = iVar1;\n      *param_2 = iVar2;\n    }\n    return;\n  }" (if "if") (parenthesized_expression "((*(byte *)(iVar2 + 0x1c) & 1) != 0)" (( "(") (binary_expression "(*(byte *)(iVar2 + 0x1c) & 1) != 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x1c) & 1)" (( "(") (binary_expression "*(byte *)(iVar2 + 0x1c) & 1" (pointer_expression "*(byte *)(iVar2 + 0x1c)" (* "*") (cast_expression "(byte *)(iVar2 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x1c)" (( "(") (binary_expression "iVar2 + 0x1c" (identifier "iVar2") (+ "+") (number_literal "0x1c")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if (*(uint *)(iVar1 + 8) < *(uint *)(iVar2 + 8) ||\n        *(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8) <\n        (uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))) {\n      **(int **)((int)register0x00000010 + -0x40) = iVar1;\n      *param_2 = iVar2;\n    }\n    return;\n  }" ({ "{") (if_statement "if (*(uint *)(iVar1 + 8) < *(uint *)(iVar2 + 8) ||\n        *(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8) <\n        (uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))) {\n      **(int **)((int)register0x00000010 + -0x40) = iVar1;\n      *param_2 = iVar2;\n    }" (if "if") (parenthesized_expression "(*(uint *)(iVar1 + 8) < *(uint *)(iVar2 + 8) ||\n        *(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8) <\n        (uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4)))" (( "(") (binary_expression "*(uint *)(iVar1 + 8) < *(uint *)(iVar2 + 8) ||\n        *(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8) <\n        (uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))" (binary_expression "*(uint *)(iVar1 + 8) < *(uint *)(iVar2 + 8)" (pointer_expression "*(uint *)(iVar1 + 8)" (* "*") (cast_expression "(uint *)(iVar1 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 8)" (( "(") (binary_expression "iVar1 + 8" (identifier "iVar1") (+ "+") (number_literal "8")) () ")")))) (< "<") (pointer_expression "*(uint *)(iVar2 + 8)" (* "*") (cast_expression "(uint *)(iVar2 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 8)" (( "(") (binary_expression "iVar2 + 8" (identifier "iVar2") (+ "+") (number_literal "8")) () ")"))))) (|| "||") (binary_expression "*(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8) <\n        (uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))" (binary_expression "*(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8)" (pointer_expression "*(uint *)(iVar1 + 8)" (* "*") (cast_expression "(uint *)(iVar1 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 8)" (( "(") (binary_expression "iVar1 + 8" (identifier "iVar1") (+ "+") (number_literal "8")) () ")")))) (- "-") (pointer_expression "*(uint *)(iVar2 + 8)" (* "*") (cast_expression "(uint *)(iVar2 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 8)" (( "(") (binary_expression "iVar2 + 8" (identifier "iVar2") (+ "+") (number_literal "8")) () ")"))))) (< "<") (call_expression "(uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))" (( "(") (binary_expression "*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4)" (pointer_expression "*(uint *)(iVar1 + 4)" (* "*") (cast_expression "(uint *)(iVar1 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")")))) (< "<") (pointer_expression "*(uint *)(iVar2 + 4)" (* "*") (cast_expression "(uint *)(iVar2 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 4)" (( "(") (binary_expression "iVar2 + 4" (identifier "iVar2") (+ "+") (number_literal "4")) () ")"))))) () ")"))))) () ")")) (compound_statement "{\n      **(int **)((int)register0x00000010 + -0x40) = iVar1;\n      *param_2 = iVar2;\n    }" ({ "{") (expression_statement "**(int **)((int)register0x00000010 + -0x40) = iVar1;" (assignment_expression "**(int **)((int)register0x00000010 + -0x40) = iVar1" (pointer_expression "**(int **)((int)register0x00000010 + -0x40)" (* "*") (pointer_expression "*(int **)((int)register0x00000010 + -0x40)" (* "*") (cast_expression "(int **)((int)register0x00000010 + -0x40)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x40)" (( "(") (binary_expression "(int)register0x00000010 + -0x40" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x40")) () ")"))))) (= "=") (identifier "iVar1")) (; ";")) (expression_statement "*param_2 = iVar2;" (assignment_expression "*param_2 = iVar2" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "iVar2")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x50) = 0xcc2c0;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x50) = 0xcc2c0" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x50)" (* "*") (cast_expression "(undefined4 *)((int)register0x00000010 + -0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x50)" (( "(") (binary_expression "(int)register0x00000010 + -0x50" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x50")) () ")")))) (= "=") (number_literal "0xcc2c0")) (; ";")) (expression_statement "FUN_000b0510();" (call_expression "FUN_000b0510()" (identifier "FUN_000b0510") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* DWARF original name: __merge_without_buffer<__gnu_cxx::__normal_iterator<gold::Output_section**,
   std::vector<gold::Output_section*> >, int, __gnu_cxx::__ops::_Iter_comp_iter<(anonymous
   namespace)::Target_powerpc<64, true>::Sort_sections> > */

void std::
     __merge_without_buffer<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_int,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_true>::Sort_sections>_>
               (void)

{
}


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

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

void __regparm3 MASKED(int param_1,int *param_2,int param_3)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined4 unaff_EBX;
  undefined4 unaff_EBP;
  undefined4 unaff_ESI;
  undefined4 unaff_EDI;
  
  while( true ) {
    *(undefined4 *)((int)register0x00000010 + -4) = unaff_EBP;
    *(undefined4 *)((int)register0x00000010 + -8) = unaff_EDI;
    *(undefined4 *)((int)register0x00000010 + -0xc) = unaff_ESI;
    *(undefined4 *)((int)register0x00000010 + -0x10) = unaff_EBX;
    *(undefined4 *)((int)register0x00000010 + -0x14) = 0xcc139;
    iVar1 = *(int *)((int)register0x00000010 + 4);
    iVar2 = *(int *)((int)register0x00000010 + 8);
    *(int *)((int)register0x00000010 + -0x40) = param_1;
    *(char *)((int)register0x00000010 + -0x39) = (char)*(int *)((int)register0x00000010 + 0xc);
    if (iVar1 == 0) {
      return;
    }
    if (iVar2 == 0) {
      return;
    }
    *(int *)((int)register0x00000010 + -0x2c) = param_3;
    if (iVar1 + iVar2 == 2) break;
    if (iVar2 < iVar1) {
      *(int *)((int)register0x00000010 + -0x38) = iVar1 / 2;
      param_1 = *(int *)((int)register0x00000010 + -0x40) + (iVar1 / 2) * 4;
      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);
      *(int *)((int)register0x00000010 + -0x5c) = param_1;
      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc269;
      FUN_000ba7c0();
      *(int *)((int)register0x00000010 + -0x30) = *(int *)((int)register0x00000010 + -0x20);
      iVar3 = *(int *)((int)register0x00000010 + -0x20) - (int)param_2;
      *(int *)((int)register0x00000010 + -0x34) = iVar3 >> 2;
    }
    else {
      iVar3 = iVar2 / 2;
      *(int *)((int)register0x00000010 + -0x34) = iVar3;
      *(int *)((int)register0x00000010 + -0x28) = iVar3 * 4;
      *(int **)((int)register0x00000010 + -0x30) = param_2 + iVar3;
      *(int **)((int)register0x00000010 + -0x24) = (int *)((int)register0x00000010 + -0x20);
      *(int **)((int)register0x00000010 + -0x5c) = param_2 + iVar3;
      *(undefined4 *)((int)register0x00000010 + -0x60) = 0xcc1b5;
      FUN_000ba670();
      param_1 = *(int *)((int)register0x00000010 + -0x20);
      iVar3 = *(int *)((int)register0x00000010 + -0x28);
      *(int *)((int)register0x00000010 + -0x38) =
           param_1 - *(int *)((int)register0x00000010 + -0x40) >> 2;
    }
    *(int *)((int)register0x00000010 + -0x28) = iVar3;
    *(undefined4 *)((int)register0x00000010 + -0x5c) = 0;
    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x30);
    *(int **)((int)register0x00000010 + -100) = param_2;
    *(int *)((int)register0x00000010 + -0x68) = param_1;
    *(int *)((int)register0x00000010 + -0x6c) = *(int *)((int)register0x00000010 + -0x24);
    *(undefined4 *)((int)register0x00000010 + -0x70) = 0xcc1e7;
    FUN_001055f0();
    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x2c);
    *(uint *)((int)register0x00000010 + -0x58) = (uint)*(byte *)((int)register0x00000010 + -0x3d);
    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x38);
    *(int *)((int)register0x00000010 + -0x60) = *(int *)((int)register0x00000010 + -0x3c);
    *(undefined4 *)((int)register0x00000010 + -100) = 0xcc20c;
    MASKED();
    param_3 = *(int *)((int)register0x00000010 + -0x30);
    *(int *)((int)register0x00000010 + 4) = iVar2 - *(int *)((int)register0x00000010 + -0x38);
    *(undefined1 *)((int)register0x00000010 + 8) = *(undefined1 *)((int)register0x00000010 + -0x3d);
    param_2 = *(int **)((int)register0x00000010 + -0x34);
    *(int *)register0x00000010 = iVar1 - *(int *)((int)register0x00000010 + -0x3c);
    unaff_EBX = *(int *)((int)register0x00000010 + -0x14);
    unaff_ESI = *(int *)((int)register0x00000010 + -0x10);
    unaff_EDI = *(int *)((int)register0x00000010 + -0xc);
    unaff_EBP = *(int *)((int)register0x00000010 + -8);
    register0x00000010 = (BADSPACEBASE *)((int)register0x00000010 + -4);
  }
  iVar1 = *param_2;
  iVar2 = **(int **)((int)register0x00000010 + -0x40);
  if ((*(byte *)(iVar1 + 0x1c) & 1) == 0) {
    *(int *)((int)register0x00000010 + -0x50) = iVar2;
    *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x14) + 0x39983b
    ;
    *(undefined4 *)((int)register0x00000010 + -0x58) = 0xc5;
    *(int *)((int)register0x00000010 + -0x5c) = *(int *)((int)register0x00000010 + -0x14) + 0x381224
    ;
                    /* WARNING: Subroutine does not return */
    *(undefined **)((int)register0x00000010 + -0x60) = &UNK_000cc2d9;
    FUN_002446e0();
  }
  if ((*(byte *)(iVar2 + 0x1c) & 1) != 0) {
    if (*(uint *)(iVar1 + 8) < *(uint *)(iVar2 + 8) ||
        *(uint *)(iVar1 + 8) - *(uint *)(iVar2 + 8) <
        (uint)(*(uint *)(iVar1 + 4) < *(uint *)(iVar2 + 4))) {
      **(int **)((int)register0x00000010 + -0x40) = iVar1;
      *param_2 = iVar2;
    }
    return;
  }
                    /* WARNING: Subroutine does not return */
  *(undefined4 *)((int)register0x00000010 + -0x50) = 0xcc2c0;
  FUN_000b0510();
}

