
/* 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::Input_section*,
   std::vector<gold::Output_section::Input_section> >, int,
   __gnu_cxx::__ops::_Iter_comp_iter<(anonymous namespace)::Sort_toc_sections<false> > > */

void std::
     __merge_without_buffer<__gnu_cxx::__normal_iterator<gold::Output_section::Input_section*,_std::vector<gold::Output_section::Input_section>_>,_int,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Sort_toc_sections<false>_>_>
               (void)

{
  Input_section __tmp;
  
}



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

void __regparm3 FUN_000cad20(int param_1,uint *param_2,int param_3)

{
  int iVar1;
  uint *puVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  int iVar8;
  int iVar9;
  undefined4 unaff_EBX;
  undefined4 unaff_EBP;
  byte bVar10;
  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) = 0xcad29;
    iVar9 = *(int *)((int)register0x00000010 + 4);
    iVar1 = *(int *)((int)register0x00000010 + 8);
    *(int *)((int)register0x00000010 + -0x60) = param_1;
    *(char *)((int)register0x00000010 + -0x4d) = (char)*(int *)((int)register0x00000010 + 0xc);
    if (iVar9 == 0) {
      return;
    }
    if (iVar1 == 0) break;
    *(int *)((int)register0x00000010 + -0x4c) = param_3;
    if (iVar9 + iVar1 == 2) {
      if (*param_2 < 0xfffffffc) {
        *(uint **)((int)register0x00000010 + -0x7c) = param_2;
        *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;
        iVar9 = FUN_002c6110();
        bVar10 = *(byte *)(iVar9 + 0x14c);
        iVar9 = **(int **)((int)register0x00000010 + -0x60);
        *(int *)((int)register0x00000010 + -0x5c) = iVar9;
        if (3 < iVar9 + 4U) {
          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);
          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;
          iVar9 = FUN_002c6110();
          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);
        }
        if (bVar10 == 0) {
          return;
        }
      }
      else {
        iVar9 = **(int **)((int)register0x00000010 + -0x60);
        *(int *)((int)register0x00000010 + -0x5c) = iVar9;
        if (iVar9 + 4U < 4) {
          return;
        }
      }
      puVar2 = *(uint **)((int)register0x00000010 + -0x60);
      uVar3 = puVar2[4];
      uVar4 = *puVar2;
      uVar5 = puVar2[1];
      uVar6 = puVar2[2];
      *(uint *)((int)register0x00000010 + -0x60) = uVar3;
      uVar7 = puVar2[3];
      *(uint *)((int)register0x00000010 + -0x24) = uVar3;
      uVar3 = puVar2[5];
      *(uint *)((int)register0x00000010 + -0x34) = uVar4;
      *(uint *)((int)register0x00000010 + -0x5c) = uVar3;
      *(uint *)((int)register0x00000010 + -0x20) = uVar3;
      uVar3 = *param_2;
      *(uint *)((int)register0x00000010 + -0x30) = uVar5;
      *puVar2 = uVar3;
      uVar3 = param_2[1];
      *(uint *)((int)register0x00000010 + -0x2c) = uVar6;
      puVar2[1] = uVar3;
      uVar3 = param_2[2];
      *(uint *)((int)register0x00000010 + -0x28) = uVar7;
      puVar2[2] = uVar3;
      puVar2[3] = param_2[3];
      puVar2[4] = param_2[4];
      puVar2[5] = param_2[5];
      *param_2 = uVar4;
      uVar3 = *(uint *)((int)register0x00000010 + -0x60);
      param_2[1] = uVar5;
      param_2[2] = uVar6;
      param_2[3] = uVar7;
      param_2[4] = uVar3;
      param_2[5] = *(uint *)((int)register0x00000010 + -0x5c);
      return;
    }
    if (iVar1 < iVar9) {
      *(int *)((int)register0x00000010 + -0x5c) = iVar9 / 2;
      iVar8 = *(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18;
      *(int *)((int)register0x00000010 + -0x48) = iVar8;
      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);
      *(int *)((int)register0x00000010 + -0x7c) = iVar8;
      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae60;
      FUN_000b50e0();
      *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x40);
      param_1 = *(int *)((int)register0x00000010 + -0x40) - (int)param_2;
      *(int *)((int)register0x00000010 + -0x58) = (param_1 >> 3) * -0x55555555;
    }
    else {
      iVar8 = iVar1 / 2;
      *(int *)((int)register0x00000010 + -0x58) = iVar8;
      param_1 = iVar8 * 0x18;
      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);
      *(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6;
      *(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6;
      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2;
      FUN_000b4f60();
      *(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40);
      *(int *)((int)register0x00000010 + -0x5c) =
           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>
           3) * -0x55555555;
    }
    *(undefined4 *)((int)register0x00000010 + -0x7c) = 0;
    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x54);
    *(uint **)((int)register0x00000010 + -0x84) = param_2;
    *(int *)((int)register0x00000010 + -0x88) = *(int *)((int)register0x00000010 + -0x48);
    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x48);
    *(int *)((int)register0x00000010 + -0x8c) = *(int *)((int)register0x00000010 + -0x44);
    *(undefined4 *)((int)register0x00000010 + -0x90) = 0xcadd8;
    FUN_00104ec0();
    bVar10 = *(byte *)((int)register0x00000010 + -0x51);
    *(uint *)((int)register0x00000010 + -0x78) = (uint)bVar10;
    *(int *)((int)register0x00000010 + -0x7c) = *(int *)((int)register0x00000010 + -0x5c);
    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x60);
    *(undefined4 *)((int)register0x00000010 + -0x84) = 0xcadf6;
    FUN_000cad20();
    param_3 = *(int *)((int)register0x00000010 + -0x50);
    param_2 = *(uint **)((int)register0x00000010 + -0x58);
    *(byte *)((int)register0x00000010 + 8) = bVar10;
    *(int *)((int)register0x00000010 + 4) = iVar1 - *(int *)((int)register0x00000010 + -0x5c);
    *(int *)register0x00000010 = iVar9 - *(int *)((int)register0x00000010 + -0x60);
    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);
  }
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00050b50
ADD EBX,0x51f2d7
SUB ESP,0x5c
MOV ESI,dword ptr [ESP + 0x70]
MOV EDI,dword ptr [ESP + 0x74]
MOV dword ptr [ESP + 0xc],EAX
MOVZX EAX,byte ptr [ESP + 0x78]
MOV byte ptr [ESP + 0x1f],AL
TEST ESI,ESI
JZ 0x000caf46
TEST EDI,EDI
JZ 0x000caf46
LEA EAX,[ESI + EDI*0x1]
MOV dword ptr [ESP + 0x20],ECX
MOV EBP,EDX
CMP EAX,0x2
JZ 0x000cae88
CMP ESI,EDI
JG 0x000cae30
MOV EAX,EDI
SHR EAX,0x1f
ADD EAX,EDI
SAR EAX,0x1
LEA EBX,[EAX + EAX*0x2]
MOV dword ptr [ESP + 0x14],EAX
LEA EAX,[ESP + 0x2c]
SUB ESP,0xc
SHL EBX,0x3
MOV dword ptr [ESP + 0x34],EAX
LEA ECX,[EDX + EBX*0x1]
MOV dword ptr [ESP + 0x24],ECX
PUSH ECX
MOV ECX,EDX
MOV EDX,dword ptr [ESP + 0x1c]
CALL 0x000b4f60
MOV EAX,dword ptr [ESP + 0x3c]
MOV dword ptr [ESP + 0x34],EAX
SUB EAX,dword ptr [ESP + 0x1c]
SAR EAX,0x3
IMUL EAX,EAX,-0x55555555
MOV dword ptr [ESP + 0x20],EAX
ADD ESP,0x10
SUB ESP,0xc
PUSH 0x0
PUSH dword ptr [ESP + 0x28]
PUSH EBP
MOV EBP,dword ptr [ESP + 0x3c]
PUSH EBP
ADD EBX,EBP
PUSH dword ptr [ESP + 0x44]
CALL 0x00104ec0
MOV EDX,EBP
MOV ECX,EBX
ADD ESP,0x18
MOVZX EBP,byte ptr [ESP + 0x23]
PUSH EBP
PUSH dword ptr [ESP + 0x1c]
PUSH dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x000cad20
MOV EAX,EBP
SUB EDI,dword ptr [ESP + 0x24]
SUB ESI,dword ptr [ESP + 0x20]
MOV ECX,dword ptr [ESP + 0x30]
MOV EDX,dword ptr [ESP + 0x28]
MOV byte ptr [ESP + 0x88],AL
MOV EAX,EBX
MOV dword ptr [ESP + 0x84],EDI
MOV dword ptr [ESP + 0x80],ESI
ADD ESP,0x6c
POP EBX
POP ESI
POP EDI
POP EBP
JMP 0x000cad20
MOV EAX,ESI
MOV EBX,dword ptr [ESP + 0xc]
SHR EAX,0x1f
ADD EAX,ESI
SAR EAX,0x1
MOV dword ptr [ESP + 0x10],EAX
LEA EAX,[EAX + EAX*0x2]
LEA ECX,[EBX + EAX*0x8]
LEA EAX,[ESP + 0x2c]
SUB ESP,0xc
MOV dword ptr [ESP + 0x30],ECX
MOV dword ptr [ESP + 0x34],EAX
PUSH ECX
MOV ECX,dword ptr [ESP + 0x30]
CALL 0x000b50e0
MOV EAX,dword ptr [ESP + 0x3c]
MOV EBX,EAX
MOV dword ptr [ESP + 0x28],EAX
SUB EBX,EBP
MOV EAX,EBX
SAR EAX,0x3
IMUL EAX,EAX,-0x55555555
MOV dword ptr [ESP + 0x24],EAX
ADD ESP,0x10
JMP 0x000cadbe
CMP dword ptr [EDX],-0x4
JNC 0x000caf50
SUB ESP,0xc
PUSH EDX
CALL 0x002c6110
MOV EDI,dword ptr [ESP + 0x1c]
MOVZX ESI,byte ptr [EAX + 0x14c]
MOV EAX,dword ptr [EDI]
MOV dword ptr [ESP + 0x20],EAX
ADD EAX,0x4
ADD ESP,0x10
CMP EAX,0x3
JBE 0x000caece
SUB ESP,0xc
PUSH EDI
CALL 0x002c6110
ADD ESP,0x10
MOVZX EAX,byte ptr [EAX + 0x14c]
XOR EAX,0x1
AND ESI,EAX
MOV EAX,ESI
TEST AL,AL
JZ 0x000caf46
MOV EDI,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [EDI + 0x10]
MOV ESI,dword ptr [EDI]
MOV EBX,dword ptr [EDI + 0x4]
MOV ECX,dword ptr [EDI + 0x8]
MOV dword ptr [ESP + 0xc],EAX
MOV EDX,dword ptr [EDI + 0xc]
MOV dword ptr [ESP + 0x48],EAX
MOV EAX,dword ptr [EDI + 0x14]
MOV dword ptr [ESP + 0x38],ESI
MOV dword ptr [ESP + 0x10],EAX
MOV dword ptr [ESP + 0x4c],EAX
MOV EAX,dword ptr [EBP]
MOV dword ptr [ESP + 0x3c],EBX
MOV dword ptr [EDI],EAX
MOV EAX,dword ptr [EBP + 0x4]
MOV dword ptr [ESP + 0x40],ECX
MOV dword ptr [EDI + 0x4],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV dword ptr [ESP + 0x44],EDX
MOV dword ptr [EDI + 0x8],EAX
MOV EAX,dword ptr [EBP + 0xc]
MOV dword ptr [EDI + 0xc],EAX
MOV EAX,dword ptr [EBP + 0x10]
MOV dword ptr [EDI + 0x10],EAX
MOV EAX,dword ptr [EBP + 0x14]
MOV dword ptr [EDI + 0x14],EAX
MOV dword ptr [EBP],ESI
MOV ESI,dword ptr [ESP + 0xc]
MOV dword ptr [EBP + 0x4],EBX
MOV dword ptr [EBP + 0x8],ECX
MOV dword ptr [EBP + 0xc],EDX
MOV dword ptr [EBP + 0x10],ESI
MOV EAX,dword ptr [ESP + 0x10]
MOV dword ptr [EBP + 0x14],EAX
ADD ESP,0x5c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x10],EAX
ADD EAX,0x4
CMP EAX,0x3
JBE 0x000caf46
JMP 0x000caed4
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid __regparm3 FUN_000cad20(int param_1,uint *param_2,int param_3)\n\n{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 unaff_EBX;\n  undefined4 unaff_EBP;\n  byte bVar10;\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) = 0xcad29;\n    iVar9 = *(int *)((int)register0x00000010 + 4);\n    iVar1 = *(int *)((int)register0x00000010 + 8);\n    *(int *)((int)register0x00000010 + -0x60) = param_1;\n    *(char *)((int)register0x00000010 + -0x4d) = (char)*(int *)((int)register0x00000010 + 0xc);\n    if (iVar9 == 0) {\n      return;\n    }\n    if (iVar1 == 0) break;\n    *(int *)((int)register0x00000010 + -0x4c) = param_3;\n    if (iVar9 + iVar1 == 2) {\n      if (*param_2 < 0xfffffffc) {\n        *(uint **)((int)register0x00000010 + -0x7c) = param_2;\n        *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;\n        iVar9 = FUN_002c6110();\n        bVar10 = *(byte *)(iVar9 + 0x14c);\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (3 < iVar9 + 4U) {\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }\n        if (bVar10 == 0) {\n          return;\n        }\n      }\n      else {\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (iVar9 + 4U < 4) {\n          return;\n        }\n      }\n      puVar2 = *(uint **)((int)register0x00000010 + -0x60);\n      uVar3 = puVar2[4];\n      uVar4 = *puVar2;\n      uVar5 = puVar2[1];\n      uVar6 = puVar2[2];\n      *(uint *)((int)register0x00000010 + -0x60) = uVar3;\n      uVar7 = puVar2[3];\n      *(uint *)((int)register0x00000010 + -0x24) = uVar3;\n      uVar3 = puVar2[5];\n      *(uint *)((int)register0x00000010 + -0x34) = uVar4;\n      *(uint *)((int)register0x00000010 + -0x5c) = uVar3;\n      *(uint *)((int)register0x00000010 + -0x20) = uVar3;\n      uVar3 = *param_2;\n      *(uint *)((int)register0x00000010 + -0x30) = uVar5;\n      *puVar2 = uVar3;\n      uVar3 = param_2[1];\n      *(uint *)((int)register0x00000010 + -0x2c) = uVar6;\n      puVar2[1] = uVar3;\n      uVar3 = param_2[2];\n      *(uint *)((int)register0x00000010 + -0x28) = uVar7;\n      puVar2[2] = uVar3;\n      puVar2[3] = param_2[3];\n      puVar2[4] = param_2[4];\n      puVar2[5] = param_2[5];\n      *param_2 = uVar4;\n      uVar3 = *(uint *)((int)register0x00000010 + -0x60);\n      param_2[1] = uVar5;\n      param_2[2] = uVar6;\n      param_2[3] = uVar7;\n      param_2[4] = uVar3;\n      param_2[5] = *(uint *)((int)register0x00000010 + -0x5c);\n      return;\n    }\n    if (iVar1 < iVar9) {\n      *(int *)((int)register0x00000010 + -0x5c) = iVar9 / 2;\n      iVar8 = *(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18;\n      *(int *)((int)register0x00000010 + -0x48) = iVar8;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x7c) = iVar8;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae60;\n      FUN_000b50e0();\n      *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x40);\n      param_1 = *(int *)((int)register0x00000010 + -0x40) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x58) = (param_1 >> 3) * -0x55555555;\n    }\n    else {\n      iVar8 = iVar1 / 2;\n      *(int *)((int)register0x00000010 + -0x58) = iVar8;\n      param_1 = iVar8 * 0x18;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6;\n      *(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2;\n      FUN_000b4f60();\n      *(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x5c) =\n           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555;\n    }\n    *(undefined4 *)((int)register0x00000010 + -0x7c) = 0;\n    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x54);\n    *(uint **)((int)register0x00000010 + -0x84) = param_2;\n    *(int *)((int)register0x00000010 + -0x88) = *(int *)((int)register0x00000010 + -0x48);\n    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x48);\n    *(int *)((int)register0x00000010 + -0x8c) = *(int *)((int)register0x00000010 + -0x44);\n    *(undefined4 *)((int)register0x00000010 + -0x90) = 0xcadd8;\n    FUN_00104ec0();\n    bVar10 = *(byte *)((int)register0x00000010 + -0x51);\n    *(uint *)((int)register0x00000010 + -0x78) = (uint)bVar10;\n    *(int *)((int)register0x00000010 + -0x7c) = *(int *)((int)register0x00000010 + -0x5c);\n    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x60);\n    *(undefined4 *)((int)register0x00000010 + -0x84) = 0xcadf6;\n    FUN_000cad20();\n    param_3 = *(int *)((int)register0x00000010 + -0x50);\n    param_2 = *(uint **)((int)register0x00000010 + -0x58);\n    *(byte *)((int)register0x00000010 + 8) = bVar10;\n    *(int *)((int)register0x00000010 + 4) = iVar1 - *(int *)((int)register0x00000010 + -0x5c);\n    *(int *)register0x00000010 = iVar9 - *(int *)((int)register0x00000010 + -0x60);\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  return;\n}\n\n" comment (function_definition "void __regparm3 FUN_000cad20(int param_1,uint *param_2,int param_3)\n\n{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 unaff_EBX;\n  undefined4 unaff_EBP;\n  byte bVar10;\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) = 0xcad29;\n    iVar9 = *(int *)((int)register0x00000010 + 4);\n    iVar1 = *(int *)((int)register0x00000010 + 8);\n    *(int *)((int)register0x00000010 + -0x60) = param_1;\n    *(char *)((int)register0x00000010 + -0x4d) = (char)*(int *)((int)register0x00000010 + 0xc);\n    if (iVar9 == 0) {\n      return;\n    }\n    if (iVar1 == 0) break;\n    *(int *)((int)register0x00000010 + -0x4c) = param_3;\n    if (iVar9 + iVar1 == 2) {\n      if (*param_2 < 0xfffffffc) {\n        *(uint **)((int)register0x00000010 + -0x7c) = param_2;\n        *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;\n        iVar9 = FUN_002c6110();\n        bVar10 = *(byte *)(iVar9 + 0x14c);\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (3 < iVar9 + 4U) {\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }\n        if (bVar10 == 0) {\n          return;\n        }\n      }\n      else {\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (iVar9 + 4U < 4) {\n          return;\n        }\n      }\n      puVar2 = *(uint **)((int)register0x00000010 + -0x60);\n      uVar3 = puVar2[4];\n      uVar4 = *puVar2;\n      uVar5 = puVar2[1];\n      uVar6 = puVar2[2];\n      *(uint *)((int)register0x00000010 + -0x60) = uVar3;\n      uVar7 = puVar2[3];\n      *(uint *)((int)register0x00000010 + -0x24) = uVar3;\n      uVar3 = puVar2[5];\n      *(uint *)((int)register0x00000010 + -0x34) = uVar4;\n      *(uint *)((int)register0x00000010 + -0x5c) = uVar3;\n      *(uint *)((int)register0x00000010 + -0x20) = uVar3;\n      uVar3 = *param_2;\n      *(uint *)((int)register0x00000010 + -0x30) = uVar5;\n      *puVar2 = uVar3;\n      uVar3 = param_2[1];\n      *(uint *)((int)register0x00000010 + -0x2c) = uVar6;\n      puVar2[1] = uVar3;\n      uVar3 = param_2[2];\n      *(uint *)((int)register0x00000010 + -0x28) = uVar7;\n      puVar2[2] = uVar3;\n      puVar2[3] = param_2[3];\n      puVar2[4] = param_2[4];\n      puVar2[5] = param_2[5];\n      *param_2 = uVar4;\n      uVar3 = *(uint *)((int)register0x00000010 + -0x60);\n      param_2[1] = uVar5;\n      param_2[2] = uVar6;\n      param_2[3] = uVar7;\n      param_2[4] = uVar3;\n      param_2[5] = *(uint *)((int)register0x00000010 + -0x5c);\n      return;\n    }\n    if (iVar1 < iVar9) {\n      *(int *)((int)register0x00000010 + -0x5c) = iVar9 / 2;\n      iVar8 = *(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18;\n      *(int *)((int)register0x00000010 + -0x48) = iVar8;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x7c) = iVar8;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae60;\n      FUN_000b50e0();\n      *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x40);\n      param_1 = *(int *)((int)register0x00000010 + -0x40) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x58) = (param_1 >> 3) * -0x55555555;\n    }\n    else {\n      iVar8 = iVar1 / 2;\n      *(int *)((int)register0x00000010 + -0x58) = iVar8;\n      param_1 = iVar8 * 0x18;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6;\n      *(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2;\n      FUN_000b4f60();\n      *(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x5c) =\n           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555;\n    }\n    *(undefined4 *)((int)register0x00000010 + -0x7c) = 0;\n    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x54);\n    *(uint **)((int)register0x00000010 + -0x84) = param_2;\n    *(int *)((int)register0x00000010 + -0x88) = *(int *)((int)register0x00000010 + -0x48);\n    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x48);\n    *(int *)((int)register0x00000010 + -0x8c) = *(int *)((int)register0x00000010 + -0x44);\n    *(undefined4 *)((int)register0x00000010 + -0x90) = 0xcadd8;\n    FUN_00104ec0();\n    bVar10 = *(byte *)((int)register0x00000010 + -0x51);\n    *(uint *)((int)register0x00000010 + -0x78) = (uint)bVar10;\n    *(int *)((int)register0x00000010 + -0x7c) = *(int *)((int)register0x00000010 + -0x5c);\n    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x60);\n    *(undefined4 *)((int)register0x00000010 + -0x84) = 0xcadf6;\n    FUN_000cad20();\n    param_3 = *(int *)((int)register0x00000010 + -0x50);\n    param_2 = *(uint **)((int)register0x00000010 + -0x58);\n    *(byte *)((int)register0x00000010 + 8) = bVar10;\n    *(int *)((int)register0x00000010 + 4) = iVar1 - *(int *)((int)register0x00000010 + -0x5c);\n    *(int *)register0x00000010 = iVar9 - *(int *)((int)register0x00000010 + -0x60);\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  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_000cad20(int param_1,uint *param_2,int param_3)" identifier (parameter_list "(int param_1,uint *param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 unaff_EBX;\n  undefined4 unaff_EBP;\n  byte bVar10;\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) = 0xcad29;\n    iVar9 = *(int *)((int)register0x00000010 + 4);\n    iVar1 = *(int *)((int)register0x00000010 + 8);\n    *(int *)((int)register0x00000010 + -0x60) = param_1;\n    *(char *)((int)register0x00000010 + -0x4d) = (char)*(int *)((int)register0x00000010 + 0xc);\n    if (iVar9 == 0) {\n      return;\n    }\n    if (iVar1 == 0) break;\n    *(int *)((int)register0x00000010 + -0x4c) = param_3;\n    if (iVar9 + iVar1 == 2) {\n      if (*param_2 < 0xfffffffc) {\n        *(uint **)((int)register0x00000010 + -0x7c) = param_2;\n        *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;\n        iVar9 = FUN_002c6110();\n        bVar10 = *(byte *)(iVar9 + 0x14c);\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (3 < iVar9 + 4U) {\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }\n        if (bVar10 == 0) {\n          return;\n        }\n      }\n      else {\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (iVar9 + 4U < 4) {\n          return;\n        }\n      }\n      puVar2 = *(uint **)((int)register0x00000010 + -0x60);\n      uVar3 = puVar2[4];\n      uVar4 = *puVar2;\n      uVar5 = puVar2[1];\n      uVar6 = puVar2[2];\n      *(uint *)((int)register0x00000010 + -0x60) = uVar3;\n      uVar7 = puVar2[3];\n      *(uint *)((int)register0x00000010 + -0x24) = uVar3;\n      uVar3 = puVar2[5];\n      *(uint *)((int)register0x00000010 + -0x34) = uVar4;\n      *(uint *)((int)register0x00000010 + -0x5c) = uVar3;\n      *(uint *)((int)register0x00000010 + -0x20) = uVar3;\n      uVar3 = *param_2;\n      *(uint *)((int)register0x00000010 + -0x30) = uVar5;\n      *puVar2 = uVar3;\n      uVar3 = param_2[1];\n      *(uint *)((int)register0x00000010 + -0x2c) = uVar6;\n      puVar2[1] = uVar3;\n      uVar3 = param_2[2];\n      *(uint *)((int)register0x00000010 + -0x28) = uVar7;\n      puVar2[2] = uVar3;\n      puVar2[3] = param_2[3];\n      puVar2[4] = param_2[4];\n      puVar2[5] = param_2[5];\n      *param_2 = uVar4;\n      uVar3 = *(uint *)((int)register0x00000010 + -0x60);\n      param_2[1] = uVar5;\n      param_2[2] = uVar6;\n      param_2[3] = uVar7;\n      param_2[4] = uVar3;\n      param_2[5] = *(uint *)((int)register0x00000010 + -0x5c);\n      return;\n    }\n    if (iVar1 < iVar9) {\n      *(int *)((int)register0x00000010 + -0x5c) = iVar9 / 2;\n      iVar8 = *(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18;\n      *(int *)((int)register0x00000010 + -0x48) = iVar8;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x7c) = iVar8;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae60;\n      FUN_000b50e0();\n      *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x40);\n      param_1 = *(int *)((int)register0x00000010 + -0x40) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x58) = (param_1 >> 3) * -0x55555555;\n    }\n    else {\n      iVar8 = iVar1 / 2;\n      *(int *)((int)register0x00000010 + -0x58) = iVar8;\n      param_1 = iVar8 * 0x18;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6;\n      *(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2;\n      FUN_000b4f60();\n      *(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x5c) =\n           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555;\n    }\n    *(undefined4 *)((int)register0x00000010 + -0x7c) = 0;\n    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x54);\n    *(uint **)((int)register0x00000010 + -0x84) = param_2;\n    *(int *)((int)register0x00000010 + -0x88) = *(int *)((int)register0x00000010 + -0x48);\n    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x48);\n    *(int *)((int)register0x00000010 + -0x8c) = *(int *)((int)register0x00000010 + -0x44);\n    *(undefined4 *)((int)register0x00000010 + -0x90) = 0xcadd8;\n    FUN_00104ec0();\n    bVar10 = *(byte *)((int)register0x00000010 + -0x51);\n    *(uint *)((int)register0x00000010 + -0x78) = (uint)bVar10;\n    *(int *)((int)register0x00000010 + -0x7c) = *(int *)((int)register0x00000010 + -0x5c);\n    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x60);\n    *(undefined4 *)((int)register0x00000010 + -0x84) = 0xcadf6;\n    FUN_000cad20();\n    param_3 = *(int *)((int)register0x00000010 + -0x50);\n    param_2 = *(uint **)((int)register0x00000010 + -0x58);\n    *(byte *)((int)register0x00000010 + 8) = bVar10;\n    *(int *)((int)register0x00000010 + 4) = iVar1 - *(int *)((int)register0x00000010 + -0x5c);\n    *(int *)register0x00000010 = iVar9 - *(int *)((int)register0x00000010 + -0x60);\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  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "undefined4 unaff_EBX;" type_identifier identifier ;) (declaration "undefined4 unaff_EBP;" type_identifier identifier ;) (declaration "byte bVar10;" 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) = 0xcad29;\n    iVar9 = *(int *)((int)register0x00000010 + 4);\n    iVar1 = *(int *)((int)register0x00000010 + 8);\n    *(int *)((int)register0x00000010 + -0x60) = param_1;\n    *(char *)((int)register0x00000010 + -0x4d) = (char)*(int *)((int)register0x00000010 + 0xc);\n    if (iVar9 == 0) {\n      return;\n    }\n    if (iVar1 == 0) break;\n    *(int *)((int)register0x00000010 + -0x4c) = param_3;\n    if (iVar9 + iVar1 == 2) {\n      if (*param_2 < 0xfffffffc) {\n        *(uint **)((int)register0x00000010 + -0x7c) = param_2;\n        *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;\n        iVar9 = FUN_002c6110();\n        bVar10 = *(byte *)(iVar9 + 0x14c);\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (3 < iVar9 + 4U) {\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }\n        if (bVar10 == 0) {\n          return;\n        }\n      }\n      else {\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (iVar9 + 4U < 4) {\n          return;\n        }\n      }\n      puVar2 = *(uint **)((int)register0x00000010 + -0x60);\n      uVar3 = puVar2[4];\n      uVar4 = *puVar2;\n      uVar5 = puVar2[1];\n      uVar6 = puVar2[2];\n      *(uint *)((int)register0x00000010 + -0x60) = uVar3;\n      uVar7 = puVar2[3];\n      *(uint *)((int)register0x00000010 + -0x24) = uVar3;\n      uVar3 = puVar2[5];\n      *(uint *)((int)register0x00000010 + -0x34) = uVar4;\n      *(uint *)((int)register0x00000010 + -0x5c) = uVar3;\n      *(uint *)((int)register0x00000010 + -0x20) = uVar3;\n      uVar3 = *param_2;\n      *(uint *)((int)register0x00000010 + -0x30) = uVar5;\n      *puVar2 = uVar3;\n      uVar3 = param_2[1];\n      *(uint *)((int)register0x00000010 + -0x2c) = uVar6;\n      puVar2[1] = uVar3;\n      uVar3 = param_2[2];\n      *(uint *)((int)register0x00000010 + -0x28) = uVar7;\n      puVar2[2] = uVar3;\n      puVar2[3] = param_2[3];\n      puVar2[4] = param_2[4];\n      puVar2[5] = param_2[5];\n      *param_2 = uVar4;\n      uVar3 = *(uint *)((int)register0x00000010 + -0x60);\n      param_2[1] = uVar5;\n      param_2[2] = uVar6;\n      param_2[3] = uVar7;\n      param_2[4] = uVar3;\n      param_2[5] = *(uint *)((int)register0x00000010 + -0x5c);\n      return;\n    }\n    if (iVar1 < iVar9) {\n      *(int *)((int)register0x00000010 + -0x5c) = iVar9 / 2;\n      iVar8 = *(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18;\n      *(int *)((int)register0x00000010 + -0x48) = iVar8;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x7c) = iVar8;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae60;\n      FUN_000b50e0();\n      *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x40);\n      param_1 = *(int *)((int)register0x00000010 + -0x40) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x58) = (param_1 >> 3) * -0x55555555;\n    }\n    else {\n      iVar8 = iVar1 / 2;\n      *(int *)((int)register0x00000010 + -0x58) = iVar8;\n      param_1 = iVar8 * 0x18;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6;\n      *(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2;\n      FUN_000b4f60();\n      *(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x5c) =\n           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555;\n    }\n    *(undefined4 *)((int)register0x00000010 + -0x7c) = 0;\n    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x54);\n    *(uint **)((int)register0x00000010 + -0x84) = param_2;\n    *(int *)((int)register0x00000010 + -0x88) = *(int *)((int)register0x00000010 + -0x48);\n    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x48);\n    *(int *)((int)register0x00000010 + -0x8c) = *(int *)((int)register0x00000010 + -0x44);\n    *(undefined4 *)((int)register0x00000010 + -0x90) = 0xcadd8;\n    FUN_00104ec0();\n    bVar10 = *(byte *)((int)register0x00000010 + -0x51);\n    *(uint *)((int)register0x00000010 + -0x78) = (uint)bVar10;\n    *(int *)((int)register0x00000010 + -0x7c) = *(int *)((int)register0x00000010 + -0x5c);\n    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x60);\n    *(undefined4 *)((int)register0x00000010 + -0x84) = 0xcadf6;\n    FUN_000cad20();\n    param_3 = *(int *)((int)register0x00000010 + -0x50);\n    param_2 = *(uint **)((int)register0x00000010 + -0x58);\n    *(byte *)((int)register0x00000010 + 8) = bVar10;\n    *(int *)((int)register0x00000010 + 4) = iVar1 - *(int *)((int)register0x00000010 + -0x5c);\n    *(int *)register0x00000010 = iVar9 - *(int *)((int)register0x00000010 + -0x60);\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) = 0xcad29;\n    iVar9 = *(int *)((int)register0x00000010 + 4);\n    iVar1 = *(int *)((int)register0x00000010 + 8);\n    *(int *)((int)register0x00000010 + -0x60) = param_1;\n    *(char *)((int)register0x00000010 + -0x4d) = (char)*(int *)((int)register0x00000010 + 0xc);\n    if (iVar9 == 0) {\n      return;\n    }\n    if (iVar1 == 0) break;\n    *(int *)((int)register0x00000010 + -0x4c) = param_3;\n    if (iVar9 + iVar1 == 2) {\n      if (*param_2 < 0xfffffffc) {\n        *(uint **)((int)register0x00000010 + -0x7c) = param_2;\n        *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;\n        iVar9 = FUN_002c6110();\n        bVar10 = *(byte *)(iVar9 + 0x14c);\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (3 < iVar9 + 4U) {\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }\n        if (bVar10 == 0) {\n          return;\n        }\n      }\n      else {\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (iVar9 + 4U < 4) {\n          return;\n        }\n      }\n      puVar2 = *(uint **)((int)register0x00000010 + -0x60);\n      uVar3 = puVar2[4];\n      uVar4 = *puVar2;\n      uVar5 = puVar2[1];\n      uVar6 = puVar2[2];\n      *(uint *)((int)register0x00000010 + -0x60) = uVar3;\n      uVar7 = puVar2[3];\n      *(uint *)((int)register0x00000010 + -0x24) = uVar3;\n      uVar3 = puVar2[5];\n      *(uint *)((int)register0x00000010 + -0x34) = uVar4;\n      *(uint *)((int)register0x00000010 + -0x5c) = uVar3;\n      *(uint *)((int)register0x00000010 + -0x20) = uVar3;\n      uVar3 = *param_2;\n      *(uint *)((int)register0x00000010 + -0x30) = uVar5;\n      *puVar2 = uVar3;\n      uVar3 = param_2[1];\n      *(uint *)((int)register0x00000010 + -0x2c) = uVar6;\n      puVar2[1] = uVar3;\n      uVar3 = param_2[2];\n      *(uint *)((int)register0x00000010 + -0x28) = uVar7;\n      puVar2[2] = uVar3;\n      puVar2[3] = param_2[3];\n      puVar2[4] = param_2[4];\n      puVar2[5] = param_2[5];\n      *param_2 = uVar4;\n      uVar3 = *(uint *)((int)register0x00000010 + -0x60);\n      param_2[1] = uVar5;\n      param_2[2] = uVar6;\n      param_2[3] = uVar7;\n      param_2[4] = uVar3;\n      param_2[5] = *(uint *)((int)register0x00000010 + -0x5c);\n      return;\n    }\n    if (iVar1 < iVar9) {\n      *(int *)((int)register0x00000010 + -0x5c) = iVar9 / 2;\n      iVar8 = *(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18;\n      *(int *)((int)register0x00000010 + -0x48) = iVar8;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x7c) = iVar8;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae60;\n      FUN_000b50e0();\n      *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x40);\n      param_1 = *(int *)((int)register0x00000010 + -0x40) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x58) = (param_1 >> 3) * -0x55555555;\n    }\n    else {\n      iVar8 = iVar1 / 2;\n      *(int *)((int)register0x00000010 + -0x58) = iVar8;\n      param_1 = iVar8 * 0x18;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6;\n      *(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2;\n      FUN_000b4f60();\n      *(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x5c) =\n           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555;\n    }\n    *(undefined4 *)((int)register0x00000010 + -0x7c) = 0;\n    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x54);\n    *(uint **)((int)register0x00000010 + -0x84) = param_2;\n    *(int *)((int)register0x00000010 + -0x88) = *(int *)((int)register0x00000010 + -0x48);\n    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x48);\n    *(int *)((int)register0x00000010 + -0x8c) = *(int *)((int)register0x00000010 + -0x44);\n    *(undefined4 *)((int)register0x00000010 + -0x90) = 0xcadd8;\n    FUN_00104ec0();\n    bVar10 = *(byte *)((int)register0x00000010 + -0x51);\n    *(uint *)((int)register0x00000010 + -0x78) = (uint)bVar10;\n    *(int *)((int)register0x00000010 + -0x7c) = *(int *)((int)register0x00000010 + -0x5c);\n    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x60);\n    *(undefined4 *)((int)register0x00000010 + -0x84) = 0xcadf6;\n    FUN_000cad20();\n    param_3 = *(int *)((int)register0x00000010 + -0x50);\n    param_2 = *(uint **)((int)register0x00000010 + -0x58);\n    *(byte *)((int)register0x00000010 + 8) = bVar10;\n    *(int *)((int)register0x00000010 + 4) = iVar1 - *(int *)((int)register0x00000010 + -0x5c);\n    *(int *)register0x00000010 = iVar9 - *(int *)((int)register0x00000010 + -0x60);\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) = 0xcad29;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x14) = 0xcad29" (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 "iVar9 = *(int *)((int)register0x00000010 + 4);" (assignment_expression "iVar9 = *(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 "iVar1 = *(int *)((int)register0x00000010 + 8);" (assignment_expression "iVar1 = *(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 + -0x60) = param_1;" (assignment_expression "*(int *)((int)register0x00000010 + -0x60) = param_1" (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) )))) = identifier) ;) (expression_statement "*(char *)((int)register0x00000010 + -0x4d) = (char)*(int *)((int)register0x00000010 + 0xc);" (assignment_expression "*(char *)((int)register0x00000010 + -0x4d) = (char)*(int *)((int)register0x00000010 + 0xc)" (pointer_expression "*(char *)((int)register0x00000010 + -0x4d)" * (cast_expression "(char *)((int)register0x00000010 + -0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x4d)" ( (binary_expression "(int)register0x00000010 + -0x4d" (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 (iVar9 == 0) {\n      return;\n    }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (if_statement "if (iVar1 == 0) break;" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "*(int *)((int)register0x00000010 + -0x4c) = param_3;" (assignment_expression "*(int *)((int)register0x00000010 + -0x4c) = param_3" (pointer_expression "*(int *)((int)register0x00000010 + -0x4c)" * (cast_expression "(int *)((int)register0x00000010 + -0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x4c)" ( (binary_expression "(int)register0x00000010 + -0x4c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if (iVar9 + iVar1 == 2) {\n      if (*param_2 < 0xfffffffc) {\n        *(uint **)((int)register0x00000010 + -0x7c) = param_2;\n        *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;\n        iVar9 = FUN_002c6110();\n        bVar10 = *(byte *)(iVar9 + 0x14c);\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (3 < iVar9 + 4U) {\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }\n        if (bVar10 == 0) {\n          return;\n        }\n      }\n      else {\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (iVar9 + 4U < 4) {\n          return;\n        }\n      }\n      puVar2 = *(uint **)((int)register0x00000010 + -0x60);\n      uVar3 = puVar2[4];\n      uVar4 = *puVar2;\n      uVar5 = puVar2[1];\n      uVar6 = puVar2[2];\n      *(uint *)((int)register0x00000010 + -0x60) = uVar3;\n      uVar7 = puVar2[3];\n      *(uint *)((int)register0x00000010 + -0x24) = uVar3;\n      uVar3 = puVar2[5];\n      *(uint *)((int)register0x00000010 + -0x34) = uVar4;\n      *(uint *)((int)register0x00000010 + -0x5c) = uVar3;\n      *(uint *)((int)register0x00000010 + -0x20) = uVar3;\n      uVar3 = *param_2;\n      *(uint *)((int)register0x00000010 + -0x30) = uVar5;\n      *puVar2 = uVar3;\n      uVar3 = param_2[1];\n      *(uint *)((int)register0x00000010 + -0x2c) = uVar6;\n      puVar2[1] = uVar3;\n      uVar3 = param_2[2];\n      *(uint *)((int)register0x00000010 + -0x28) = uVar7;\n      puVar2[2] = uVar3;\n      puVar2[3] = param_2[3];\n      puVar2[4] = param_2[4];\n      puVar2[5] = param_2[5];\n      *param_2 = uVar4;\n      uVar3 = *(uint *)((int)register0x00000010 + -0x60);\n      param_2[1] = uVar5;\n      param_2[2] = uVar6;\n      param_2[3] = uVar7;\n      param_2[4] = uVar3;\n      param_2[5] = *(uint *)((int)register0x00000010 + -0x5c);\n      return;\n    }" if (parenthesized_expression "(iVar9 + iVar1 == 2)" ( (binary_expression "iVar9 + iVar1 == 2" (binary_expression "iVar9 + iVar1" identifier + identifier) == number_literal) )) (compound_statement "{\n      if (*param_2 < 0xfffffffc) {\n        *(uint **)((int)register0x00000010 + -0x7c) = param_2;\n        *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;\n        iVar9 = FUN_002c6110();\n        bVar10 = *(byte *)(iVar9 + 0x14c);\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (3 < iVar9 + 4U) {\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }\n        if (bVar10 == 0) {\n          return;\n        }\n      }\n      else {\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (iVar9 + 4U < 4) {\n          return;\n        }\n      }\n      puVar2 = *(uint **)((int)register0x00000010 + -0x60);\n      uVar3 = puVar2[4];\n      uVar4 = *puVar2;\n      uVar5 = puVar2[1];\n      uVar6 = puVar2[2];\n      *(uint *)((int)register0x00000010 + -0x60) = uVar3;\n      uVar7 = puVar2[3];\n      *(uint *)((int)register0x00000010 + -0x24) = uVar3;\n      uVar3 = puVar2[5];\n      *(uint *)((int)register0x00000010 + -0x34) = uVar4;\n      *(uint *)((int)register0x00000010 + -0x5c) = uVar3;\n      *(uint *)((int)register0x00000010 + -0x20) = uVar3;\n      uVar3 = *param_2;\n      *(uint *)((int)register0x00000010 + -0x30) = uVar5;\n      *puVar2 = uVar3;\n      uVar3 = param_2[1];\n      *(uint *)((int)register0x00000010 + -0x2c) = uVar6;\n      puVar2[1] = uVar3;\n      uVar3 = param_2[2];\n      *(uint *)((int)register0x00000010 + -0x28) = uVar7;\n      puVar2[2] = uVar3;\n      puVar2[3] = param_2[3];\n      puVar2[4] = param_2[4];\n      puVar2[5] = param_2[5];\n      *param_2 = uVar4;\n      uVar3 = *(uint *)((int)register0x00000010 + -0x60);\n      param_2[1] = uVar5;\n      param_2[2] = uVar6;\n      param_2[3] = uVar7;\n      param_2[4] = uVar3;\n      param_2[5] = *(uint *)((int)register0x00000010 + -0x5c);\n      return;\n    }" { (if_statement "if (*param_2 < 0xfffffffc) {\n        *(uint **)((int)register0x00000010 + -0x7c) = param_2;\n        *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;\n        iVar9 = FUN_002c6110();\n        bVar10 = *(byte *)(iVar9 + 0x14c);\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (3 < iVar9 + 4U) {\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }\n        if (bVar10 == 0) {\n          return;\n        }\n      }\n      else {\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (iVar9 + 4U < 4) {\n          return;\n        }\n      }" if (parenthesized_expression "(*param_2 < 0xfffffffc)" ( (binary_expression "*param_2 < 0xfffffffc" (pointer_expression "*param_2" * identifier) < number_literal) )) (compound_statement "{\n        *(uint **)((int)register0x00000010 + -0x7c) = param_2;\n        *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;\n        iVar9 = FUN_002c6110();\n        bVar10 = *(byte *)(iVar9 + 0x14c);\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (3 < iVar9 + 4U) {\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }\n        if (bVar10 == 0) {\n          return;\n        }\n      }" { (expression_statement "*(uint **)((int)register0x00000010 + -0x7c) = param_2;" (assignment_expression "*(uint **)((int)register0x00000010 + -0x7c) = param_2" (pointer_expression "*(uint **)((int)register0x00000010 + -0x7c)" * (cast_expression "(uint **)((int)register0x00000010 + -0x7c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000010 + -0x7c)" ( (binary_expression "(int)register0x00000010 + -0x7c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x80)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0x80)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x80)" ( (binary_expression "(int)register0x00000010 + -0x80" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "iVar9 = FUN_002c6110();" (assignment_expression "iVar9 = FUN_002c6110()" identifier = (call_expression "FUN_002c6110()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar10 = *(byte *)(iVar9 + 0x14c);" (assignment_expression "bVar10 = *(byte *)(iVar9 + 0x14c)" identifier = (pointer_expression "*(byte *)(iVar9 + 0x14c)" * (cast_expression "(byte *)(iVar9 + 0x14c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x14c)" ( (binary_expression "iVar9 + 0x14c" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = **(int **)((int)register0x00000010 + -0x60);" (assignment_expression "iVar9 = **(int **)((int)register0x00000010 + -0x60)" identifier = (pointer_expression "**(int **)((int)register0x00000010 + -0x60)" * (pointer_expression "*(int **)((int)register0x00000010 + -0x60)" * (cast_expression "(int **)((int)register0x00000010 + -0x60)" ( (type_descriptor "int **" primitive_type (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) )))))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x5c) = iVar9;" (assignment_expression "*(int *)((int)register0x00000010 + -0x5c) = iVar9" (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) ;) (if_statement "if (3 < iVar9 + 4U) {\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }" if (parenthesized_expression "(3 < iVar9 + 4U)" ( (binary_expression "3 < iVar9 + 4U" number_literal < (binary_expression "iVar9 + 4U" identifier + number_literal)) )) (compound_statement "{\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }" { (expression_statement "*(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);" (assignment_expression "*(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60)" (pointer_expression "*(int **)((int)register0x00000010 + -0x7c)" * (cast_expression "(int **)((int)register0x00000010 + -0x7c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000010 + -0x7c)" ( (binary_expression "(int)register0x00000010 + -0x7c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(int **)((int)register0x00000010 + -0x60)" * (cast_expression "(int **)((int)register0x00000010 + -0x60)" ( (type_descriptor "int **" primitive_type (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) ))))) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x80)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0x80)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x80)" ( (binary_expression "(int)register0x00000010 + -0x80" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "iVar9 = FUN_002c6110();" (assignment_expression "iVar9 = FUN_002c6110()" identifier = (call_expression "FUN_002c6110()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);" (assignment_expression "bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1)" identifier = (binary_expression "bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1)" identifier & (parenthesized_expression "(*(byte *)(iVar9 + 0x14c) ^ 1)" ( (binary_expression "*(byte *)(iVar9 + 0x14c) ^ 1" (pointer_expression "*(byte *)(iVar9 + 0x14c)" * (cast_expression "(byte *)(iVar9 + 0x14c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x14c)" ( (binary_expression "iVar9 + 0x14c" identifier + number_literal) )))) ^ number_literal) )))) ;) })) (if_statement "if (bVar10 == 0) {\n          return;\n        }" if (parenthesized_expression "(bVar10 == 0)" ( (binary_expression "bVar10 == 0" identifier == number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) }) (else_clause "else {\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (iVar9 + 4U < 4) {\n          return;\n        }\n      }" else (compound_statement "{\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (iVar9 + 4U < 4) {\n          return;\n        }\n      }" { (expression_statement "iVar9 = **(int **)((int)register0x00000010 + -0x60);" (assignment_expression "iVar9 = **(int **)((int)register0x00000010 + -0x60)" identifier = (pointer_expression "**(int **)((int)register0x00000010 + -0x60)" * (pointer_expression "*(int **)((int)register0x00000010 + -0x60)" * (cast_expression "(int **)((int)register0x00000010 + -0x60)" ( (type_descriptor "int **" primitive_type (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) )))))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x5c) = iVar9;" (assignment_expression "*(int *)((int)register0x00000010 + -0x5c) = iVar9" (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) ;) (if_statement "if (iVar9 + 4U < 4) {\n          return;\n        }" if (parenthesized_expression "(iVar9 + 4U < 4)" ( (binary_expression "iVar9 + 4U < 4" (binary_expression "iVar9 + 4U" identifier + number_literal) < number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) }))) (expression_statement "puVar2 = *(uint **)((int)register0x00000010 + -0x60);" (assignment_expression "puVar2 = *(uint **)((int)register0x00000010 + -0x60)" identifier = (pointer_expression "*(uint **)((int)register0x00000010 + -0x60)" * (cast_expression "(uint **)((int)register0x00000010 + -0x60)" ( (type_descriptor "uint **" 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) ))))) ;) (expression_statement "uVar3 = puVar2[4];" (assignment_expression "uVar3 = puVar2[4]" identifier = (subscript_expression "puVar2[4]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = *puVar2;" (assignment_expression "uVar4 = *puVar2" identifier = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "uVar5 = puVar2[1];" (assignment_expression "uVar5 = puVar2[1]" identifier = (subscript_expression "puVar2[1]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = puVar2[2];" (assignment_expression "uVar6 = puVar2[2]" identifier = (subscript_expression "puVar2[2]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)((int)register0x00000010 + -0x60) = uVar3;" (assignment_expression "*(uint *)((int)register0x00000010 + -0x60) = uVar3" (pointer_expression "*(uint *)((int)register0x00000010 + -0x60)" * (cast_expression "(uint *)((int)register0x00000010 + -0x60)" ( (type_descriptor "uint *" 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) )))) = identifier) ;) (expression_statement "uVar7 = puVar2[3];" (assignment_expression "uVar7 = puVar2[3]" identifier = (subscript_expression "puVar2[3]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)((int)register0x00000010 + -0x24) = uVar3;" (assignment_expression "*(uint *)((int)register0x00000010 + -0x24) = uVar3" (pointer_expression "*(uint *)((int)register0x00000010 + -0x24)" * (cast_expression "(uint *)((int)register0x00000010 + -0x24)" ( (type_descriptor "uint *" type_identifier (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) )))) = identifier) ;) (expression_statement "uVar3 = puVar2[5];" (assignment_expression "uVar3 = puVar2[5]" identifier = (subscript_expression "puVar2[5]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)((int)register0x00000010 + -0x34) = uVar4;" (assignment_expression "*(uint *)((int)register0x00000010 + -0x34) = uVar4" (pointer_expression "*(uint *)((int)register0x00000010 + -0x34)" * (cast_expression "(uint *)((int)register0x00000010 + -0x34)" ( (type_descriptor "uint *" type_identifier (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 "*(uint *)((int)register0x00000010 + -0x5c) = uVar3;" (assignment_expression "*(uint *)((int)register0x00000010 + -0x5c) = uVar3" (pointer_expression "*(uint *)((int)register0x00000010 + -0x5c)" * (cast_expression "(uint *)((int)register0x00000010 + -0x5c)" ( (type_descriptor "uint *" 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) )))) = identifier) ;) (expression_statement "*(uint *)((int)register0x00000010 + -0x20) = uVar3;" (assignment_expression "*(uint *)((int)register0x00000010 + -0x20) = uVar3" (pointer_expression "*(uint *)((int)register0x00000010 + -0x20)" * (cast_expression "(uint *)((int)register0x00000010 + -0x20)" ( (type_descriptor "uint *" type_identifier (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) )))) = identifier) ;) (expression_statement "uVar3 = *param_2;" (assignment_expression "uVar3 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(uint *)((int)register0x00000010 + -0x30) = uVar5;" (assignment_expression "*(uint *)((int)register0x00000010 + -0x30) = uVar5" (pointer_expression "*(uint *)((int)register0x00000010 + -0x30)" * (cast_expression "(uint *)((int)register0x00000010 + -0x30)" ( (type_descriptor "uint *" type_identifier (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) )))) = identifier) ;) (expression_statement "*puVar2 = uVar3;" (assignment_expression "*puVar2 = uVar3" (pointer_expression "*puVar2" * identifier) = identifier) ;) (expression_statement "uVar3 = param_2[1];" (assignment_expression "uVar3 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)((int)register0x00000010 + -0x2c) = uVar6;" (assignment_expression "*(uint *)((int)register0x00000010 + -0x2c) = uVar6" (pointer_expression "*(uint *)((int)register0x00000010 + -0x2c)" * (cast_expression "(uint *)((int)register0x00000010 + -0x2c)" ( (type_descriptor "uint *" type_identifier (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) ;) (expression_statement "puVar2[1] = uVar3;" (assignment_expression "puVar2[1] = uVar3" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar3 = param_2[2];" (assignment_expression "uVar3 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)((int)register0x00000010 + -0x28) = uVar7;" (assignment_expression "*(uint *)((int)register0x00000010 + -0x28) = uVar7" (pointer_expression "*(uint *)((int)register0x00000010 + -0x28)" * (cast_expression "(uint *)((int)register0x00000010 + -0x28)" ( (type_descriptor "uint *" type_identifier (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 "puVar2[2] = uVar3;" (assignment_expression "puVar2[2] = uVar3" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[3] = param_2[3];" (assignment_expression "puVar2[3] = param_2[3]" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (expression_statement "puVar2[4] = param_2[4];" (assignment_expression "puVar2[4] = param_2[4]" (subscript_expression "puVar2[4]" identifier [ number_literal ]) = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (expression_statement "puVar2[5] = param_2[5];" (assignment_expression "puVar2[5] = param_2[5]" (subscript_expression "puVar2[5]" identifier [ number_literal ]) = (subscript_expression "param_2[5]" identifier [ number_literal ])) ;) (expression_statement "*param_2 = uVar4;" (assignment_expression "*param_2 = uVar4" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "uVar3 = *(uint *)((int)register0x00000010 + -0x60);" (assignment_expression "uVar3 = *(uint *)((int)register0x00000010 + -0x60)" identifier = (pointer_expression "*(uint *)((int)register0x00000010 + -0x60)" * (cast_expression "(uint *)((int)register0x00000010 + -0x60)" ( (type_descriptor "uint *" 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) ))))) ;) (expression_statement "param_2[1] = uVar5;" (assignment_expression "param_2[1] = uVar5" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_2[2] = uVar6;" (assignment_expression "param_2[2] = uVar6" (subscript_expression "param_2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_2[3] = uVar7;" (assignment_expression "param_2[3] = uVar7" (subscript_expression "param_2[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_2[4] = uVar3;" (assignment_expression "param_2[4] = uVar3" (subscript_expression "param_2[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_2[5] = *(uint *)((int)register0x00000010 + -0x5c);" (assignment_expression "param_2[5] = *(uint *)((int)register0x00000010 + -0x5c)" (subscript_expression "param_2[5]" identifier [ number_literal ]) = (pointer_expression "*(uint *)((int)register0x00000010 + -0x5c)" * (cast_expression "(uint *)((int)register0x00000010 + -0x5c)" ( (type_descriptor "uint *" 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) ))))) ;) (return_statement "return;" return ;) })) (if_statement "if (iVar1 < iVar9) {\n      *(int *)((int)register0x00000010 + -0x5c) = iVar9 / 2;\n      iVar8 = *(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18;\n      *(int *)((int)register0x00000010 + -0x48) = iVar8;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x7c) = iVar8;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae60;\n      FUN_000b50e0();\n      *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x40);\n      param_1 = *(int *)((int)register0x00000010 + -0x40) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x58) = (param_1 >> 3) * -0x55555555;\n    }\n    else {\n      iVar8 = iVar1 / 2;\n      *(int *)((int)register0x00000010 + -0x58) = iVar8;\n      param_1 = iVar8 * 0x18;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6;\n      *(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2;\n      FUN_000b4f60();\n      *(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x5c) =\n           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555;\n    }" if (parenthesized_expression "(iVar1 < iVar9)" ( (binary_expression "iVar1 < iVar9" identifier < identifier) )) (compound_statement "{\n      *(int *)((int)register0x00000010 + -0x5c) = iVar9 / 2;\n      iVar8 = *(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18;\n      *(int *)((int)register0x00000010 + -0x48) = iVar8;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x7c) = iVar8;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae60;\n      FUN_000b50e0();\n      *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x40);\n      param_1 = *(int *)((int)register0x00000010 + -0x40) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x58) = (param_1 >> 3) * -0x55555555;\n    }" { (expression_statement "*(int *)((int)register0x00000010 + -0x5c) = iVar9 / 2;" (assignment_expression "*(int *)((int)register0x00000010 + -0x5c) = iVar9 / 2" (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 "iVar9 / 2" identifier / number_literal)) ;) (expression_statement "iVar8 = *(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18;" (assignment_expression "iVar8 = *(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18" identifier = (binary_expression "*(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18" (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) )))) + (binary_expression "(iVar9 / 2) * 0x18" (parenthesized_expression "(iVar9 / 2)" ( (binary_expression "iVar9 / 2" identifier / number_literal) )) * number_literal))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x48) = iVar8;" (assignment_expression "*(int *)((int)register0x00000010 + -0x48) = iVar8" (pointer_expression "*(int *)((int)register0x00000010 + -0x48)" * (cast_expression "(int *)((int)register0x00000010 + -0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x48)" ( (binary_expression "(int)register0x00000010 + -0x48" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);" (assignment_expression "*(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40)" (pointer_expression "*(int **)((int)register0x00000010 + -0x44)" * (cast_expression "(int **)((int)register0x00000010 + -0x44)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000010 + -0x44)" ( (binary_expression "(int)register0x00000010 + -0x44" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (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) )))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x7c) = iVar8;" (assignment_expression "*(int *)((int)register0x00000010 + -0x7c) = iVar8" (pointer_expression "*(int *)((int)register0x00000010 + -0x7c)" * (cast_expression "(int *)((int)register0x00000010 + -0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x7c)" ( (binary_expression "(int)register0x00000010 + -0x7c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae60;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae60" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x80)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0x80)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x80)" ( (binary_expression "(int)register0x00000010 + -0x80" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000b50e0();" (call_expression "FUN_000b50e0()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x40);" (assignment_expression "*(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x40)" (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) )))) = (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) ))))) ;) (expression_statement "param_1 = *(int *)((int)register0x00000010 + -0x40) - (int)param_2;" (assignment_expression "param_1 = *(int *)((int)register0x00000010 + -0x40) - (int)param_2" identifier = (binary_expression "*(int *)((int)register0x00000010 + -0x40) - (int)param_2" (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) )))) - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x58) = (param_1 >> 3) * -0x55555555;" (assignment_expression "*(int *)((int)register0x00000010 + -0x58) = (param_1 >> 3) * -0x55555555" (pointer_expression "*(int *)((int)register0x00000010 + -0x58)" * (cast_expression "(int *)((int)register0x00000010 + -0x58)" ( (type_descriptor "int *" primitive_type (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 "(param_1 >> 3) * -0x55555555" (parenthesized_expression "(param_1 >> 3)" ( (binary_expression "param_1 >> 3" identifier >> number_literal) )) * number_literal)) ;) }) (else_clause "else {\n      iVar8 = iVar1 / 2;\n      *(int *)((int)register0x00000010 + -0x58) = iVar8;\n      param_1 = iVar8 * 0x18;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6;\n      *(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2;\n      FUN_000b4f60();\n      *(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x5c) =\n           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555;\n    }" else (compound_statement "{\n      iVar8 = iVar1 / 2;\n      *(int *)((int)register0x00000010 + -0x58) = iVar8;\n      param_1 = iVar8 * 0x18;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6;\n      *(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2;\n      FUN_000b4f60();\n      *(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x5c) =\n           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555;\n    }" { (expression_statement "iVar8 = iVar1 / 2;" (assignment_expression "iVar8 = iVar1 / 2" identifier = (binary_expression "iVar1 / 2" identifier / number_literal)) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x58) = iVar8;" (assignment_expression "*(int *)((int)register0x00000010 + -0x58) = iVar8" (pointer_expression "*(int *)((int)register0x00000010 + -0x58)" * (cast_expression "(int *)((int)register0x00000010 + -0x58)" ( (type_descriptor "int *" primitive_type (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) )))) = identifier) ;) (expression_statement "param_1 = iVar8 * 0x18;" (assignment_expression "param_1 = iVar8 * 0x18" identifier = (binary_expression "iVar8 * 0x18" identifier * number_literal)) ;) (expression_statement "*(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);" (assignment_expression "*(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40)" (pointer_expression "*(int **)((int)register0x00000010 + -0x44)" * (cast_expression "(int **)((int)register0x00000010 + -0x44)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000010 + -0x44)" ( (binary_expression "(int)register0x00000010 + -0x44" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (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) )))) ;) (expression_statement "*(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6;" (assignment_expression "*(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6" (pointer_expression "*(uint **)((int)register0x00000010 + -0x54)" * (cast_expression "(uint **)((int)register0x00000010 + -0x54)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (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 "param_2 + iVar8 * 6" identifier + (binary_expression "iVar8 * 6" identifier * number_literal))) ;) (expression_statement "*(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6;" (assignment_expression "*(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6" (pointer_expression "*(uint **)((int)register0x00000010 + -0x7c)" * (cast_expression "(uint **)((int)register0x00000010 + -0x7c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000010 + -0x7c)" ( (binary_expression "(int)register0x00000010 + -0x7c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "param_2 + iVar8 * 6" identifier + (binary_expression "iVar8 * 6" identifier * number_literal))) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x80)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0x80)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x80)" ( (binary_expression "(int)register0x00000010 + -0x80" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000b4f60();" (call_expression "FUN_000b4f60()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40);" (assignment_expression "*(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40)" (pointer_expression "*(int *)((int)register0x00000010 + -0x48)" * (cast_expression "(int *)((int)register0x00000010 + -0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x48)" ( (binary_expression "(int)register0x00000010 + -0x48" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (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) ))))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x5c) =\n           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555;" (assignment_expression "*(int *)((int)register0x00000010 + -0x5c) =\n           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555" (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 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555" (parenthesized_expression "(*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3)" ( (binary_expression "*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3" (binary_expression "*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60)" (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) )))) - (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) ))))) >> number_literal) )) * number_literal)) ;) }))) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x7c) = 0;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x7c) = 0" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x7c)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0x7c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x7c)" ( (binary_expression "(int)register0x00000010 + -0x7c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x54);" (assignment_expression "*(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x54)" (pointer_expression "*(int *)((int)register0x00000010 + -0x80)" * (cast_expression "(int *)((int)register0x00000010 + -0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x80)" ( (binary_expression "(int)register0x00000010 + -0x80" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (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) ))))) ;) (expression_statement "*(uint **)((int)register0x00000010 + -0x84) = param_2;" (assignment_expression "*(uint **)((int)register0x00000010 + -0x84) = param_2" (pointer_expression "*(uint **)((int)register0x00000010 + -0x84)" * (cast_expression "(uint **)((int)register0x00000010 + -0x84)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000010 + -0x84)" ( (binary_expression "(int)register0x00000010 + -0x84" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x88) = *(int *)((int)register0x00000010 + -0x48);" (assignment_expression "*(int *)((int)register0x00000010 + -0x88) = *(int *)((int)register0x00000010 + -0x48)" (pointer_expression "*(int *)((int)register0x00000010 + -0x88)" * (cast_expression "(int *)((int)register0x00000010 + -0x88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x88)" ( (binary_expression "(int)register0x00000010 + -0x88" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(int *)((int)register0x00000010 + -0x48)" * (cast_expression "(int *)((int)register0x00000010 + -0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x48)" ( (binary_expression "(int)register0x00000010 + -0x48" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "param_1 = param_1 + *(int *)((int)register0x00000010 + -0x48);" (assignment_expression "param_1 = param_1 + *(int *)((int)register0x00000010 + -0x48)" identifier = (binary_expression "param_1 + *(int *)((int)register0x00000010 + -0x48)" identifier + (pointer_expression "*(int *)((int)register0x00000010 + -0x48)" * (cast_expression "(int *)((int)register0x00000010 + -0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x48)" ( (binary_expression "(int)register0x00000010 + -0x48" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x8c) = *(int *)((int)register0x00000010 + -0x44);" (assignment_expression "*(int *)((int)register0x00000010 + -0x8c) = *(int *)((int)register0x00000010 + -0x44)" (pointer_expression "*(int *)((int)register0x00000010 + -0x8c)" * (cast_expression "(int *)((int)register0x00000010 + -0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x8c)" ( (binary_expression "(int)register0x00000010 + -0x8c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(int *)((int)register0x00000010 + -0x44)" * (cast_expression "(int *)((int)register0x00000010 + -0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x44)" ( (binary_expression "(int)register0x00000010 + -0x44" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x90) = 0xcadd8;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x90) = 0xcadd8" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x90)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0x90)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x90)" ( (binary_expression "(int)register0x00000010 + -0x90" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00104ec0();" (call_expression "FUN_00104ec0()" identifier (argument_list "()" ( ))) ;) (expression_statement "bVar10 = *(byte *)((int)register0x00000010 + -0x51);" (assignment_expression "bVar10 = *(byte *)((int)register0x00000010 + -0x51)" identifier = (pointer_expression "*(byte *)((int)register0x00000010 + -0x51)" * (cast_expression "(byte *)((int)register0x00000010 + -0x51)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x51)" ( (binary_expression "(int)register0x00000010 + -0x51" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(uint *)((int)register0x00000010 + -0x78) = (uint)bVar10;" (assignment_expression "*(uint *)((int)register0x00000010 + -0x78) = (uint)bVar10" (pointer_expression "*(uint *)((int)register0x00000010 + -0x78)" * (cast_expression "(uint *)((int)register0x00000010 + -0x78)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x78)" ( (binary_expression "(int)register0x00000010 + -0x78" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x7c) = *(int *)((int)register0x00000010 + -0x5c);" (assignment_expression "*(int *)((int)register0x00000010 + -0x7c) = *(int *)((int)register0x00000010 + -0x5c)" (pointer_expression "*(int *)((int)register0x00000010 + -0x7c)" * (cast_expression "(int *)((int)register0x00000010 + -0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x7c)" ( (binary_expression "(int)register0x00000010 + -0x7c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (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) ))))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x60);" (assignment_expression "*(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x60)" (pointer_expression "*(int *)((int)register0x00000010 + -0x80)" * (cast_expression "(int *)((int)register0x00000010 + -0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x80)" ( (binary_expression "(int)register0x00000010 + -0x80" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (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) ))))) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x84) = 0xcadf6;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x84) = 0xcadf6" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x84)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x84)" ( (binary_expression "(int)register0x00000010 + -0x84" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000cad20();" (call_expression "FUN_000cad20()" identifier (argument_list "()" ( ))) ;) (expression_statement "param_3 = *(int *)((int)register0x00000010 + -0x50);" (assignment_expression "param_3 = *(int *)((int)register0x00000010 + -0x50)" identifier = (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) ))))) ;) (expression_statement "param_2 = *(uint **)((int)register0x00000010 + -0x58);" (assignment_expression "param_2 = *(uint **)((int)register0x00000010 + -0x58)" identifier = (pointer_expression "*(uint **)((int)register0x00000010 + -0x58)" * (cast_expression "(uint **)((int)register0x00000010 + -0x58)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (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) ))))) ;) (expression_statement "*(byte *)((int)register0x00000010 + 8) = bVar10;" (assignment_expression "*(byte *)((int)register0x00000010 + 8) = bVar10" (pointer_expression "*(byte *)((int)register0x00000010 + 8)" * (cast_expression "(byte *)((int)register0x00000010 + 8)" ( (type_descriptor "byte *" 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 "*(int *)((int)register0x00000010 + 4) = iVar1 - *(int *)((int)register0x00000010 + -0x5c);" (assignment_expression "*(int *)((int)register0x00000010 + 4) = iVar1 - *(int *)((int)register0x00000010 + -0x5c)" (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 "iVar1 - *(int *)((int)register0x00000010 + -0x5c)" identifier - (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) )))))) ;) (expression_statement "*(int *)register0x00000010 = iVar9 - *(int *)((int)register0x00000010 + -0x60);" (assignment_expression "*(int *)register0x00000010 = iVar9 - *(int *)((int)register0x00000010 + -0x60)" (pointer_expression "*(int *)register0x00000010" * (cast_expression "(int *)register0x00000010" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "iVar9 - *(int *)((int)register0x00000010 + -0x60)" identifier - (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) )))))) ;) (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) )))) ;) })) (return_statement "return;" return ;) })))
(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:\n   __merge_without_buffer<__gnu_cxx::__normal_iterator<gold::Output_section::Input_section*,\n   std::vector<gold::Output_section::Input_section> >, int,\n   __gnu_cxx::__ops::_Iter_comp_iter<(anonymous namespace)::Sort_toc_sections<false> > > */\n\nvoid std::\n     __merge_without_buffer<__gnu_cxx::__normal_iterator<gold::Output_section::Input_section*,_std::vector<gold::Output_section::Input_section>_>,_int,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Sort_toc_sections<false>_>_>\n               (void)\n\n{\n  Input_section __tmp;\n  \n}\n\n" comment comment comment (declaration "void std::\n     __merge_without_buffer<__gnu_cxx::__normal_iterator<gold::Output_section::Input_section*,_std::vector<gold::Output_section::Input_section>_>,_int,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Sort_toc_sections<false>_>_>\n               (void)\n\n{\n  Input_section __tmp;" primitive_type (ERROR "std::\n     __merge_without_buffer<__gnu_cxx::__normal_iterator<gold::Output_section::" identifier : : identifier < identifier : : identifier < identifier : : identifier : :) identifier (ERROR "*" *) , (ERROR "_std::vector<gold::Output_section::Input_section>" identifier : : identifier < identifier : : identifier : : identifier >) identifier (ERROR ">" >) , identifier , (ERROR "___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Sort_toc_sections<false>_>_>\n               (void)\n\n{\n  Input_section" identifier : : identifier : : identifier < ( identifier ) : : identifier < false > identifier > (function_declarator "_>\n               (void)" identifier (ERROR ">" >) (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) { identifier) identifier ;) (ERROR "}" }))
(translation_unit "void __regparm3 FUN_000cad20(int param_1,uint *param_2,int param_3)\n\n{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 unaff_EBX;\n  undefined4 unaff_EBP;\n  byte bVar10;\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) = 0xcad29;\n    iVar9 = *(int *)((int)register0x00000010 + 4);\n    iVar1 = *(int *)((int)register0x00000010 + 8);\n    *(int *)((int)register0x00000010 + -0x60) = param_1;\n    *(char *)((int)register0x00000010 + -0x4d) = (char)*(int *)((int)register0x00000010 + 0xc);\n    if (iVar9 == 0) {\n      return;\n    }\n    if (iVar1 == 0) break;\n    *(int *)((int)register0x00000010 + -0x4c) = param_3;\n    if (iVar9 + iVar1 == 2) {\n      if (*param_2 < 0xfffffffc) {\n        *(uint **)((int)register0x00000010 + -0x7c) = param_2;\n        *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;\n        iVar9 = FUN_002c6110();\n        bVar10 = *(byte *)(iVar9 + 0x14c);\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (3 < iVar9 + 4U) {\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }\n        if (bVar10 == 0) {\n          return;\n        }\n      }\n      else {\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (iVar9 + 4U < 4) {\n          return;\n        }\n      }\n      puVar2 = *(uint **)((int)register0x00000010 + -0x60);\n      uVar3 = puVar2[4];\n      uVar4 = *puVar2;\n      uVar5 = puVar2[1];\n      uVar6 = puVar2[2];\n      *(uint *)((int)register0x00000010 + -0x60) = uVar3;\n      uVar7 = puVar2[3];\n      *(uint *)((int)register0x00000010 + -0x24) = uVar3;\n      uVar3 = puVar2[5];\n      *(uint *)((int)register0x00000010 + -0x34) = uVar4;\n      *(uint *)((int)register0x00000010 + -0x5c) = uVar3;\n      *(uint *)((int)register0x00000010 + -0x20) = uVar3;\n      uVar3 = *param_2;\n      *(uint *)((int)register0x00000010 + -0x30) = uVar5;\n      *puVar2 = uVar3;\n      uVar3 = param_2[1];\n      *(uint *)((int)register0x00000010 + -0x2c) = uVar6;\n      puVar2[1] = uVar3;\n      uVar3 = param_2[2];\n      *(uint *)((int)register0x00000010 + -0x28) = uVar7;\n      puVar2[2] = uVar3;\n      puVar2[3] = param_2[3];\n      puVar2[4] = param_2[4];\n      puVar2[5] = param_2[5];\n      *param_2 = uVar4;\n      uVar3 = *(uint *)((int)register0x00000010 + -0x60);\n      param_2[1] = uVar5;\n      param_2[2] = uVar6;\n      param_2[3] = uVar7;\n      param_2[4] = uVar3;\n      param_2[5] = *(uint *)((int)register0x00000010 + -0x5c);\n      return;\n    }\n    if (iVar1 < iVar9) {\n      *(int *)((int)register0x00000010 + -0x5c) = iVar9 / 2;\n      iVar8 = *(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18;\n      *(int *)((int)register0x00000010 + -0x48) = iVar8;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x7c) = iVar8;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae60;\n      FUN_000b50e0();\n      *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x40);\n      param_1 = *(int *)((int)register0x00000010 + -0x40) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x58) = (param_1 >> 3) * -0x55555555;\n    }\n    else {\n      iVar8 = iVar1 / 2;\n      *(int *)((int)register0x00000010 + -0x58) = iVar8;\n      param_1 = iVar8 * 0x18;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6;\n      *(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2;\n      FUN_000b4f60();\n      *(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x5c) =\n           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555;\n    }\n    *(undefined4 *)((int)register0x00000010 + -0x7c) = 0;\n    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x54);\n    *(uint **)((int)register0x00000010 + -0x84) = param_2;\n    *(int *)((int)register0x00000010 + -0x88) = *(int *)((int)register0x00000010 + -0x48);\n    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x48);\n    *(int *)((int)register0x00000010 + -0x8c) = *(int *)((int)register0x00000010 + -0x44);\n    *(undefined4 *)((int)register0x00000010 + -0x90) = 0xcadd8;\n    FUN_00104ec0();\n    bVar10 = *(byte *)((int)register0x00000010 + -0x51);\n    *(uint *)((int)register0x00000010 + -0x78) = (uint)bVar10;\n    *(int *)((int)register0x00000010 + -0x7c) = *(int *)((int)register0x00000010 + -0x5c);\n    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x60);\n    *(undefined4 *)((int)register0x00000010 + -0x84) = 0xcadf6;\n    FUN_000cad20();\n    param_3 = *(int *)((int)register0x00000010 + -0x50);\n    param_2 = *(uint **)((int)register0x00000010 + -0x58);\n    *(byte *)((int)register0x00000010 + 8) = bVar10;\n    *(int *)((int)register0x00000010 + 4) = iVar1 - *(int *)((int)register0x00000010 + -0x5c);\n    *(int *)register0x00000010 = iVar9 - *(int *)((int)register0x00000010 + -0x60);\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  return;\n}\n\n" (function_definition "void __regparm3 FUN_000cad20(int param_1,uint *param_2,int param_3)\n\n{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 unaff_EBX;\n  undefined4 unaff_EBP;\n  byte bVar10;\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) = 0xcad29;\n    iVar9 = *(int *)((int)register0x00000010 + 4);\n    iVar1 = *(int *)((int)register0x00000010 + 8);\n    *(int *)((int)register0x00000010 + -0x60) = param_1;\n    *(char *)((int)register0x00000010 + -0x4d) = (char)*(int *)((int)register0x00000010 + 0xc);\n    if (iVar9 == 0) {\n      return;\n    }\n    if (iVar1 == 0) break;\n    *(int *)((int)register0x00000010 + -0x4c) = param_3;\n    if (iVar9 + iVar1 == 2) {\n      if (*param_2 < 0xfffffffc) {\n        *(uint **)((int)register0x00000010 + -0x7c) = param_2;\n        *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;\n        iVar9 = FUN_002c6110();\n        bVar10 = *(byte *)(iVar9 + 0x14c);\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (3 < iVar9 + 4U) {\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }\n        if (bVar10 == 0) {\n          return;\n        }\n      }\n      else {\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (iVar9 + 4U < 4) {\n          return;\n        }\n      }\n      puVar2 = *(uint **)((int)register0x00000010 + -0x60);\n      uVar3 = puVar2[4];\n      uVar4 = *puVar2;\n      uVar5 = puVar2[1];\n      uVar6 = puVar2[2];\n      *(uint *)((int)register0x00000010 + -0x60) = uVar3;\n      uVar7 = puVar2[3];\n      *(uint *)((int)register0x00000010 + -0x24) = uVar3;\n      uVar3 = puVar2[5];\n      *(uint *)((int)register0x00000010 + -0x34) = uVar4;\n      *(uint *)((int)register0x00000010 + -0x5c) = uVar3;\n      *(uint *)((int)register0x00000010 + -0x20) = uVar3;\n      uVar3 = *param_2;\n      *(uint *)((int)register0x00000010 + -0x30) = uVar5;\n      *puVar2 = uVar3;\n      uVar3 = param_2[1];\n      *(uint *)((int)register0x00000010 + -0x2c) = uVar6;\n      puVar2[1] = uVar3;\n      uVar3 = param_2[2];\n      *(uint *)((int)register0x00000010 + -0x28) = uVar7;\n      puVar2[2] = uVar3;\n      puVar2[3] = param_2[3];\n      puVar2[4] = param_2[4];\n      puVar2[5] = param_2[5];\n      *param_2 = uVar4;\n      uVar3 = *(uint *)((int)register0x00000010 + -0x60);\n      param_2[1] = uVar5;\n      param_2[2] = uVar6;\n      param_2[3] = uVar7;\n      param_2[4] = uVar3;\n      param_2[5] = *(uint *)((int)register0x00000010 + -0x5c);\n      return;\n    }\n    if (iVar1 < iVar9) {\n      *(int *)((int)register0x00000010 + -0x5c) = iVar9 / 2;\n      iVar8 = *(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18;\n      *(int *)((int)register0x00000010 + -0x48) = iVar8;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x7c) = iVar8;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae60;\n      FUN_000b50e0();\n      *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x40);\n      param_1 = *(int *)((int)register0x00000010 + -0x40) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x58) = (param_1 >> 3) * -0x55555555;\n    }\n    else {\n      iVar8 = iVar1 / 2;\n      *(int *)((int)register0x00000010 + -0x58) = iVar8;\n      param_1 = iVar8 * 0x18;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6;\n      *(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2;\n      FUN_000b4f60();\n      *(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x5c) =\n           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555;\n    }\n    *(undefined4 *)((int)register0x00000010 + -0x7c) = 0;\n    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x54);\n    *(uint **)((int)register0x00000010 + -0x84) = param_2;\n    *(int *)((int)register0x00000010 + -0x88) = *(int *)((int)register0x00000010 + -0x48);\n    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x48);\n    *(int *)((int)register0x00000010 + -0x8c) = *(int *)((int)register0x00000010 + -0x44);\n    *(undefined4 *)((int)register0x00000010 + -0x90) = 0xcadd8;\n    FUN_00104ec0();\n    bVar10 = *(byte *)((int)register0x00000010 + -0x51);\n    *(uint *)((int)register0x00000010 + -0x78) = (uint)bVar10;\n    *(int *)((int)register0x00000010 + -0x7c) = *(int *)((int)register0x00000010 + -0x5c);\n    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x60);\n    *(undefined4 *)((int)register0x00000010 + -0x84) = 0xcadf6;\n    FUN_000cad20();\n    param_3 = *(int *)((int)register0x00000010 + -0x50);\n    param_2 = *(uint **)((int)register0x00000010 + -0x58);\n    *(byte *)((int)register0x00000010 + 8) = bVar10;\n    *(int *)((int)register0x00000010 + 4) = iVar1 - *(int *)((int)register0x00000010 + -0x5c);\n    *(int *)register0x00000010 = iVar9 - *(int *)((int)register0x00000010 + -0x60);\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  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_000cad20(int param_1,uint *param_2,int param_3)" identifier (parameter_list "(int param_1,uint *param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 unaff_EBX;\n  undefined4 unaff_EBP;\n  byte bVar10;\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) = 0xcad29;\n    iVar9 = *(int *)((int)register0x00000010 + 4);\n    iVar1 = *(int *)((int)register0x00000010 + 8);\n    *(int *)((int)register0x00000010 + -0x60) = param_1;\n    *(char *)((int)register0x00000010 + -0x4d) = (char)*(int *)((int)register0x00000010 + 0xc);\n    if (iVar9 == 0) {\n      return;\n    }\n    if (iVar1 == 0) break;\n    *(int *)((int)register0x00000010 + -0x4c) = param_3;\n    if (iVar9 + iVar1 == 2) {\n      if (*param_2 < 0xfffffffc) {\n        *(uint **)((int)register0x00000010 + -0x7c) = param_2;\n        *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;\n        iVar9 = FUN_002c6110();\n        bVar10 = *(byte *)(iVar9 + 0x14c);\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (3 < iVar9 + 4U) {\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }\n        if (bVar10 == 0) {\n          return;\n        }\n      }\n      else {\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (iVar9 + 4U < 4) {\n          return;\n        }\n      }\n      puVar2 = *(uint **)((int)register0x00000010 + -0x60);\n      uVar3 = puVar2[4];\n      uVar4 = *puVar2;\n      uVar5 = puVar2[1];\n      uVar6 = puVar2[2];\n      *(uint *)((int)register0x00000010 + -0x60) = uVar3;\n      uVar7 = puVar2[3];\n      *(uint *)((int)register0x00000010 + -0x24) = uVar3;\n      uVar3 = puVar2[5];\n      *(uint *)((int)register0x00000010 + -0x34) = uVar4;\n      *(uint *)((int)register0x00000010 + -0x5c) = uVar3;\n      *(uint *)((int)register0x00000010 + -0x20) = uVar3;\n      uVar3 = *param_2;\n      *(uint *)((int)register0x00000010 + -0x30) = uVar5;\n      *puVar2 = uVar3;\n      uVar3 = param_2[1];\n      *(uint *)((int)register0x00000010 + -0x2c) = uVar6;\n      puVar2[1] = uVar3;\n      uVar3 = param_2[2];\n      *(uint *)((int)register0x00000010 + -0x28) = uVar7;\n      puVar2[2] = uVar3;\n      puVar2[3] = param_2[3];\n      puVar2[4] = param_2[4];\n      puVar2[5] = param_2[5];\n      *param_2 = uVar4;\n      uVar3 = *(uint *)((int)register0x00000010 + -0x60);\n      param_2[1] = uVar5;\n      param_2[2] = uVar6;\n      param_2[3] = uVar7;\n      param_2[4] = uVar3;\n      param_2[5] = *(uint *)((int)register0x00000010 + -0x5c);\n      return;\n    }\n    if (iVar1 < iVar9) {\n      *(int *)((int)register0x00000010 + -0x5c) = iVar9 / 2;\n      iVar8 = *(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18;\n      *(int *)((int)register0x00000010 + -0x48) = iVar8;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x7c) = iVar8;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae60;\n      FUN_000b50e0();\n      *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x40);\n      param_1 = *(int *)((int)register0x00000010 + -0x40) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x58) = (param_1 >> 3) * -0x55555555;\n    }\n    else {\n      iVar8 = iVar1 / 2;\n      *(int *)((int)register0x00000010 + -0x58) = iVar8;\n      param_1 = iVar8 * 0x18;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6;\n      *(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2;\n      FUN_000b4f60();\n      *(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x5c) =\n           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555;\n    }\n    *(undefined4 *)((int)register0x00000010 + -0x7c) = 0;\n    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x54);\n    *(uint **)((int)register0x00000010 + -0x84) = param_2;\n    *(int *)((int)register0x00000010 + -0x88) = *(int *)((int)register0x00000010 + -0x48);\n    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x48);\n    *(int *)((int)register0x00000010 + -0x8c) = *(int *)((int)register0x00000010 + -0x44);\n    *(undefined4 *)((int)register0x00000010 + -0x90) = 0xcadd8;\n    FUN_00104ec0();\n    bVar10 = *(byte *)((int)register0x00000010 + -0x51);\n    *(uint *)((int)register0x00000010 + -0x78) = (uint)bVar10;\n    *(int *)((int)register0x00000010 + -0x7c) = *(int *)((int)register0x00000010 + -0x5c);\n    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x60);\n    *(undefined4 *)((int)register0x00000010 + -0x84) = 0xcadf6;\n    FUN_000cad20();\n    param_3 = *(int *)((int)register0x00000010 + -0x50);\n    param_2 = *(uint **)((int)register0x00000010 + -0x58);\n    *(byte *)((int)register0x00000010 + 8) = bVar10;\n    *(int *)((int)register0x00000010 + 4) = iVar1 - *(int *)((int)register0x00000010 + -0x5c);\n    *(int *)register0x00000010 = iVar9 - *(int *)((int)register0x00000010 + -0x60);\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  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "undefined4 unaff_EBX;" type_identifier identifier ;) (declaration "undefined4 unaff_EBP;" type_identifier identifier ;) (declaration "byte bVar10;" 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) = 0xcad29;\n    iVar9 = *(int *)((int)register0x00000010 + 4);\n    iVar1 = *(int *)((int)register0x00000010 + 8);\n    *(int *)((int)register0x00000010 + -0x60) = param_1;\n    *(char *)((int)register0x00000010 + -0x4d) = (char)*(int *)((int)register0x00000010 + 0xc);\n    if (iVar9 == 0) {\n      return;\n    }\n    if (iVar1 == 0) break;\n    *(int *)((int)register0x00000010 + -0x4c) = param_3;\n    if (iVar9 + iVar1 == 2) {\n      if (*param_2 < 0xfffffffc) {\n        *(uint **)((int)register0x00000010 + -0x7c) = param_2;\n        *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;\n        iVar9 = FUN_002c6110();\n        bVar10 = *(byte *)(iVar9 + 0x14c);\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (3 < iVar9 + 4U) {\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }\n        if (bVar10 == 0) {\n          return;\n        }\n      }\n      else {\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (iVar9 + 4U < 4) {\n          return;\n        }\n      }\n      puVar2 = *(uint **)((int)register0x00000010 + -0x60);\n      uVar3 = puVar2[4];\n      uVar4 = *puVar2;\n      uVar5 = puVar2[1];\n      uVar6 = puVar2[2];\n      *(uint *)((int)register0x00000010 + -0x60) = uVar3;\n      uVar7 = puVar2[3];\n      *(uint *)((int)register0x00000010 + -0x24) = uVar3;\n      uVar3 = puVar2[5];\n      *(uint *)((int)register0x00000010 + -0x34) = uVar4;\n      *(uint *)((int)register0x00000010 + -0x5c) = uVar3;\n      *(uint *)((int)register0x00000010 + -0x20) = uVar3;\n      uVar3 = *param_2;\n      *(uint *)((int)register0x00000010 + -0x30) = uVar5;\n      *puVar2 = uVar3;\n      uVar3 = param_2[1];\n      *(uint *)((int)register0x00000010 + -0x2c) = uVar6;\n      puVar2[1] = uVar3;\n      uVar3 = param_2[2];\n      *(uint *)((int)register0x00000010 + -0x28) = uVar7;\n      puVar2[2] = uVar3;\n      puVar2[3] = param_2[3];\n      puVar2[4] = param_2[4];\n      puVar2[5] = param_2[5];\n      *param_2 = uVar4;\n      uVar3 = *(uint *)((int)register0x00000010 + -0x60);\n      param_2[1] = uVar5;\n      param_2[2] = uVar6;\n      param_2[3] = uVar7;\n      param_2[4] = uVar3;\n      param_2[5] = *(uint *)((int)register0x00000010 + -0x5c);\n      return;\n    }\n    if (iVar1 < iVar9) {\n      *(int *)((int)register0x00000010 + -0x5c) = iVar9 / 2;\n      iVar8 = *(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18;\n      *(int *)((int)register0x00000010 + -0x48) = iVar8;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x7c) = iVar8;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae60;\n      FUN_000b50e0();\n      *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x40);\n      param_1 = *(int *)((int)register0x00000010 + -0x40) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x58) = (param_1 >> 3) * -0x55555555;\n    }\n    else {\n      iVar8 = iVar1 / 2;\n      *(int *)((int)register0x00000010 + -0x58) = iVar8;\n      param_1 = iVar8 * 0x18;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6;\n      *(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2;\n      FUN_000b4f60();\n      *(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x5c) =\n           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555;\n    }\n    *(undefined4 *)((int)register0x00000010 + -0x7c) = 0;\n    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x54);\n    *(uint **)((int)register0x00000010 + -0x84) = param_2;\n    *(int *)((int)register0x00000010 + -0x88) = *(int *)((int)register0x00000010 + -0x48);\n    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x48);\n    *(int *)((int)register0x00000010 + -0x8c) = *(int *)((int)register0x00000010 + -0x44);\n    *(undefined4 *)((int)register0x00000010 + -0x90) = 0xcadd8;\n    FUN_00104ec0();\n    bVar10 = *(byte *)((int)register0x00000010 + -0x51);\n    *(uint *)((int)register0x00000010 + -0x78) = (uint)bVar10;\n    *(int *)((int)register0x00000010 + -0x7c) = *(int *)((int)register0x00000010 + -0x5c);\n    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x60);\n    *(undefined4 *)((int)register0x00000010 + -0x84) = 0xcadf6;\n    FUN_000cad20();\n    param_3 = *(int *)((int)register0x00000010 + -0x50);\n    param_2 = *(uint **)((int)register0x00000010 + -0x58);\n    *(byte *)((int)register0x00000010 + 8) = bVar10;\n    *(int *)((int)register0x00000010 + 4) = iVar1 - *(int *)((int)register0x00000010 + -0x5c);\n    *(int *)register0x00000010 = iVar9 - *(int *)((int)register0x00000010 + -0x60);\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) = 0xcad29;\n    iVar9 = *(int *)((int)register0x00000010 + 4);\n    iVar1 = *(int *)((int)register0x00000010 + 8);\n    *(int *)((int)register0x00000010 + -0x60) = param_1;\n    *(char *)((int)register0x00000010 + -0x4d) = (char)*(int *)((int)register0x00000010 + 0xc);\n    if (iVar9 == 0) {\n      return;\n    }\n    if (iVar1 == 0) break;\n    *(int *)((int)register0x00000010 + -0x4c) = param_3;\n    if (iVar9 + iVar1 == 2) {\n      if (*param_2 < 0xfffffffc) {\n        *(uint **)((int)register0x00000010 + -0x7c) = param_2;\n        *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;\n        iVar9 = FUN_002c6110();\n        bVar10 = *(byte *)(iVar9 + 0x14c);\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (3 < iVar9 + 4U) {\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }\n        if (bVar10 == 0) {\n          return;\n        }\n      }\n      else {\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (iVar9 + 4U < 4) {\n          return;\n        }\n      }\n      puVar2 = *(uint **)((int)register0x00000010 + -0x60);\n      uVar3 = puVar2[4];\n      uVar4 = *puVar2;\n      uVar5 = puVar2[1];\n      uVar6 = puVar2[2];\n      *(uint *)((int)register0x00000010 + -0x60) = uVar3;\n      uVar7 = puVar2[3];\n      *(uint *)((int)register0x00000010 + -0x24) = uVar3;\n      uVar3 = puVar2[5];\n      *(uint *)((int)register0x00000010 + -0x34) = uVar4;\n      *(uint *)((int)register0x00000010 + -0x5c) = uVar3;\n      *(uint *)((int)register0x00000010 + -0x20) = uVar3;\n      uVar3 = *param_2;\n      *(uint *)((int)register0x00000010 + -0x30) = uVar5;\n      *puVar2 = uVar3;\n      uVar3 = param_2[1];\n      *(uint *)((int)register0x00000010 + -0x2c) = uVar6;\n      puVar2[1] = uVar3;\n      uVar3 = param_2[2];\n      *(uint *)((int)register0x00000010 + -0x28) = uVar7;\n      puVar2[2] = uVar3;\n      puVar2[3] = param_2[3];\n      puVar2[4] = param_2[4];\n      puVar2[5] = param_2[5];\n      *param_2 = uVar4;\n      uVar3 = *(uint *)((int)register0x00000010 + -0x60);\n      param_2[1] = uVar5;\n      param_2[2] = uVar6;\n      param_2[3] = uVar7;\n      param_2[4] = uVar3;\n      param_2[5] = *(uint *)((int)register0x00000010 + -0x5c);\n      return;\n    }\n    if (iVar1 < iVar9) {\n      *(int *)((int)register0x00000010 + -0x5c) = iVar9 / 2;\n      iVar8 = *(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18;\n      *(int *)((int)register0x00000010 + -0x48) = iVar8;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x7c) = iVar8;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae60;\n      FUN_000b50e0();\n      *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x40);\n      param_1 = *(int *)((int)register0x00000010 + -0x40) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x58) = (param_1 >> 3) * -0x55555555;\n    }\n    else {\n      iVar8 = iVar1 / 2;\n      *(int *)((int)register0x00000010 + -0x58) = iVar8;\n      param_1 = iVar8 * 0x18;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6;\n      *(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2;\n      FUN_000b4f60();\n      *(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x5c) =\n           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555;\n    }\n    *(undefined4 *)((int)register0x00000010 + -0x7c) = 0;\n    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x54);\n    *(uint **)((int)register0x00000010 + -0x84) = param_2;\n    *(int *)((int)register0x00000010 + -0x88) = *(int *)((int)register0x00000010 + -0x48);\n    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x48);\n    *(int *)((int)register0x00000010 + -0x8c) = *(int *)((int)register0x00000010 + -0x44);\n    *(undefined4 *)((int)register0x00000010 + -0x90) = 0xcadd8;\n    FUN_00104ec0();\n    bVar10 = *(byte *)((int)register0x00000010 + -0x51);\n    *(uint *)((int)register0x00000010 + -0x78) = (uint)bVar10;\n    *(int *)((int)register0x00000010 + -0x7c) = *(int *)((int)register0x00000010 + -0x5c);\n    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x60);\n    *(undefined4 *)((int)register0x00000010 + -0x84) = 0xcadf6;\n    FUN_000cad20();\n    param_3 = *(int *)((int)register0x00000010 + -0x50);\n    param_2 = *(uint **)((int)register0x00000010 + -0x58);\n    *(byte *)((int)register0x00000010 + 8) = bVar10;\n    *(int *)((int)register0x00000010 + 4) = iVar1 - *(int *)((int)register0x00000010 + -0x5c);\n    *(int *)register0x00000010 = iVar9 - *(int *)((int)register0x00000010 + -0x60);\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) = 0xcad29;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x14) = 0xcad29" (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 "iVar9 = *(int *)((int)register0x00000010 + 4);" (assignment_expression "iVar9 = *(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 "iVar1 = *(int *)((int)register0x00000010 + 8);" (assignment_expression "iVar1 = *(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 + -0x60) = param_1;" (assignment_expression "*(int *)((int)register0x00000010 + -0x60) = param_1" (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) )))) = identifier) ;) (expression_statement "*(char *)((int)register0x00000010 + -0x4d) = (char)*(int *)((int)register0x00000010 + 0xc);" (assignment_expression "*(char *)((int)register0x00000010 + -0x4d) = (char)*(int *)((int)register0x00000010 + 0xc)" (pointer_expression "*(char *)((int)register0x00000010 + -0x4d)" * (cast_expression "(char *)((int)register0x00000010 + -0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x4d)" ( (binary_expression "(int)register0x00000010 + -0x4d" (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 (iVar9 == 0) {\n      return;\n    }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (if_statement "if (iVar1 == 0) break;" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "*(int *)((int)register0x00000010 + -0x4c) = param_3;" (assignment_expression "*(int *)((int)register0x00000010 + -0x4c) = param_3" (pointer_expression "*(int *)((int)register0x00000010 + -0x4c)" * (cast_expression "(int *)((int)register0x00000010 + -0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x4c)" ( (binary_expression "(int)register0x00000010 + -0x4c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if (iVar9 + iVar1 == 2) {\n      if (*param_2 < 0xfffffffc) {\n        *(uint **)((int)register0x00000010 + -0x7c) = param_2;\n        *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;\n        iVar9 = FUN_002c6110();\n        bVar10 = *(byte *)(iVar9 + 0x14c);\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (3 < iVar9 + 4U) {\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }\n        if (bVar10 == 0) {\n          return;\n        }\n      }\n      else {\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (iVar9 + 4U < 4) {\n          return;\n        }\n      }\n      puVar2 = *(uint **)((int)register0x00000010 + -0x60);\n      uVar3 = puVar2[4];\n      uVar4 = *puVar2;\n      uVar5 = puVar2[1];\n      uVar6 = puVar2[2];\n      *(uint *)((int)register0x00000010 + -0x60) = uVar3;\n      uVar7 = puVar2[3];\n      *(uint *)((int)register0x00000010 + -0x24) = uVar3;\n      uVar3 = puVar2[5];\n      *(uint *)((int)register0x00000010 + -0x34) = uVar4;\n      *(uint *)((int)register0x00000010 + -0x5c) = uVar3;\n      *(uint *)((int)register0x00000010 + -0x20) = uVar3;\n      uVar3 = *param_2;\n      *(uint *)((int)register0x00000010 + -0x30) = uVar5;\n      *puVar2 = uVar3;\n      uVar3 = param_2[1];\n      *(uint *)((int)register0x00000010 + -0x2c) = uVar6;\n      puVar2[1] = uVar3;\n      uVar3 = param_2[2];\n      *(uint *)((int)register0x00000010 + -0x28) = uVar7;\n      puVar2[2] = uVar3;\n      puVar2[3] = param_2[3];\n      puVar2[4] = param_2[4];\n      puVar2[5] = param_2[5];\n      *param_2 = uVar4;\n      uVar3 = *(uint *)((int)register0x00000010 + -0x60);\n      param_2[1] = uVar5;\n      param_2[2] = uVar6;\n      param_2[3] = uVar7;\n      param_2[4] = uVar3;\n      param_2[5] = *(uint *)((int)register0x00000010 + -0x5c);\n      return;\n    }" if (parenthesized_expression "(iVar9 + iVar1 == 2)" ( (binary_expression "iVar9 + iVar1 == 2" (binary_expression "iVar9 + iVar1" identifier + identifier) == number_literal) )) (compound_statement "{\n      if (*param_2 < 0xfffffffc) {\n        *(uint **)((int)register0x00000010 + -0x7c) = param_2;\n        *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;\n        iVar9 = FUN_002c6110();\n        bVar10 = *(byte *)(iVar9 + 0x14c);\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (3 < iVar9 + 4U) {\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }\n        if (bVar10 == 0) {\n          return;\n        }\n      }\n      else {\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (iVar9 + 4U < 4) {\n          return;\n        }\n      }\n      puVar2 = *(uint **)((int)register0x00000010 + -0x60);\n      uVar3 = puVar2[4];\n      uVar4 = *puVar2;\n      uVar5 = puVar2[1];\n      uVar6 = puVar2[2];\n      *(uint *)((int)register0x00000010 + -0x60) = uVar3;\n      uVar7 = puVar2[3];\n      *(uint *)((int)register0x00000010 + -0x24) = uVar3;\n      uVar3 = puVar2[5];\n      *(uint *)((int)register0x00000010 + -0x34) = uVar4;\n      *(uint *)((int)register0x00000010 + -0x5c) = uVar3;\n      *(uint *)((int)register0x00000010 + -0x20) = uVar3;\n      uVar3 = *param_2;\n      *(uint *)((int)register0x00000010 + -0x30) = uVar5;\n      *puVar2 = uVar3;\n      uVar3 = param_2[1];\n      *(uint *)((int)register0x00000010 + -0x2c) = uVar6;\n      puVar2[1] = uVar3;\n      uVar3 = param_2[2];\n      *(uint *)((int)register0x00000010 + -0x28) = uVar7;\n      puVar2[2] = uVar3;\n      puVar2[3] = param_2[3];\n      puVar2[4] = param_2[4];\n      puVar2[5] = param_2[5];\n      *param_2 = uVar4;\n      uVar3 = *(uint *)((int)register0x00000010 + -0x60);\n      param_2[1] = uVar5;\n      param_2[2] = uVar6;\n      param_2[3] = uVar7;\n      param_2[4] = uVar3;\n      param_2[5] = *(uint *)((int)register0x00000010 + -0x5c);\n      return;\n    }" { (if_statement "if (*param_2 < 0xfffffffc) {\n        *(uint **)((int)register0x00000010 + -0x7c) = param_2;\n        *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;\n        iVar9 = FUN_002c6110();\n        bVar10 = *(byte *)(iVar9 + 0x14c);\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (3 < iVar9 + 4U) {\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }\n        if (bVar10 == 0) {\n          return;\n        }\n      }\n      else {\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (iVar9 + 4U < 4) {\n          return;\n        }\n      }" if (parenthesized_expression "(*param_2 < 0xfffffffc)" ( (binary_expression "*param_2 < 0xfffffffc" (pointer_expression "*param_2" * identifier) < number_literal) )) (compound_statement "{\n        *(uint **)((int)register0x00000010 + -0x7c) = param_2;\n        *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;\n        iVar9 = FUN_002c6110();\n        bVar10 = *(byte *)(iVar9 + 0x14c);\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (3 < iVar9 + 4U) {\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }\n        if (bVar10 == 0) {\n          return;\n        }\n      }" { (expression_statement "*(uint **)((int)register0x00000010 + -0x7c) = param_2;" (assignment_expression "*(uint **)((int)register0x00000010 + -0x7c) = param_2" (pointer_expression "*(uint **)((int)register0x00000010 + -0x7c)" * (cast_expression "(uint **)((int)register0x00000010 + -0x7c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000010 + -0x7c)" ( (binary_expression "(int)register0x00000010 + -0x7c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x80)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0x80)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x80)" ( (binary_expression "(int)register0x00000010 + -0x80" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "iVar9 = FUN_002c6110();" (assignment_expression "iVar9 = FUN_002c6110()" identifier = (call_expression "FUN_002c6110()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar10 = *(byte *)(iVar9 + 0x14c);" (assignment_expression "bVar10 = *(byte *)(iVar9 + 0x14c)" identifier = (pointer_expression "*(byte *)(iVar9 + 0x14c)" * (cast_expression "(byte *)(iVar9 + 0x14c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x14c)" ( (binary_expression "iVar9 + 0x14c" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = **(int **)((int)register0x00000010 + -0x60);" (assignment_expression "iVar9 = **(int **)((int)register0x00000010 + -0x60)" identifier = (pointer_expression "**(int **)((int)register0x00000010 + -0x60)" * (pointer_expression "*(int **)((int)register0x00000010 + -0x60)" * (cast_expression "(int **)((int)register0x00000010 + -0x60)" ( (type_descriptor "int **" primitive_type (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) )))))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x5c) = iVar9;" (assignment_expression "*(int *)((int)register0x00000010 + -0x5c) = iVar9" (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) ;) (if_statement "if (3 < iVar9 + 4U) {\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }" if (parenthesized_expression "(3 < iVar9 + 4U)" ( (binary_expression "3 < iVar9 + 4U" number_literal < (binary_expression "iVar9 + 4U" identifier + number_literal)) )) (compound_statement "{\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }" { (expression_statement "*(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);" (assignment_expression "*(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60)" (pointer_expression "*(int **)((int)register0x00000010 + -0x7c)" * (cast_expression "(int **)((int)register0x00000010 + -0x7c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000010 + -0x7c)" ( (binary_expression "(int)register0x00000010 + -0x7c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(int **)((int)register0x00000010 + -0x60)" * (cast_expression "(int **)((int)register0x00000010 + -0x60)" ( (type_descriptor "int **" primitive_type (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) ))))) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x80)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0x80)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x80)" ( (binary_expression "(int)register0x00000010 + -0x80" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "iVar9 = FUN_002c6110();" (assignment_expression "iVar9 = FUN_002c6110()" identifier = (call_expression "FUN_002c6110()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);" (assignment_expression "bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1)" identifier = (binary_expression "bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1)" identifier & (parenthesized_expression "(*(byte *)(iVar9 + 0x14c) ^ 1)" ( (binary_expression "*(byte *)(iVar9 + 0x14c) ^ 1" (pointer_expression "*(byte *)(iVar9 + 0x14c)" * (cast_expression "(byte *)(iVar9 + 0x14c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x14c)" ( (binary_expression "iVar9 + 0x14c" identifier + number_literal) )))) ^ number_literal) )))) ;) })) (if_statement "if (bVar10 == 0) {\n          return;\n        }" if (parenthesized_expression "(bVar10 == 0)" ( (binary_expression "bVar10 == 0" identifier == number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) }) (else_clause "else {\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (iVar9 + 4U < 4) {\n          return;\n        }\n      }" else (compound_statement "{\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (iVar9 + 4U < 4) {\n          return;\n        }\n      }" { (expression_statement "iVar9 = **(int **)((int)register0x00000010 + -0x60);" (assignment_expression "iVar9 = **(int **)((int)register0x00000010 + -0x60)" identifier = (pointer_expression "**(int **)((int)register0x00000010 + -0x60)" * (pointer_expression "*(int **)((int)register0x00000010 + -0x60)" * (cast_expression "(int **)((int)register0x00000010 + -0x60)" ( (type_descriptor "int **" primitive_type (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) )))))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x5c) = iVar9;" (assignment_expression "*(int *)((int)register0x00000010 + -0x5c) = iVar9" (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) ;) (if_statement "if (iVar9 + 4U < 4) {\n          return;\n        }" if (parenthesized_expression "(iVar9 + 4U < 4)" ( (binary_expression "iVar9 + 4U < 4" (binary_expression "iVar9 + 4U" identifier + number_literal) < number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) }))) (expression_statement "puVar2 = *(uint **)((int)register0x00000010 + -0x60);" (assignment_expression "puVar2 = *(uint **)((int)register0x00000010 + -0x60)" identifier = (pointer_expression "*(uint **)((int)register0x00000010 + -0x60)" * (cast_expression "(uint **)((int)register0x00000010 + -0x60)" ( (type_descriptor "uint **" 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) ))))) ;) (expression_statement "uVar3 = puVar2[4];" (assignment_expression "uVar3 = puVar2[4]" identifier = (subscript_expression "puVar2[4]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = *puVar2;" (assignment_expression "uVar4 = *puVar2" identifier = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "uVar5 = puVar2[1];" (assignment_expression "uVar5 = puVar2[1]" identifier = (subscript_expression "puVar2[1]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = puVar2[2];" (assignment_expression "uVar6 = puVar2[2]" identifier = (subscript_expression "puVar2[2]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)((int)register0x00000010 + -0x60) = uVar3;" (assignment_expression "*(uint *)((int)register0x00000010 + -0x60) = uVar3" (pointer_expression "*(uint *)((int)register0x00000010 + -0x60)" * (cast_expression "(uint *)((int)register0x00000010 + -0x60)" ( (type_descriptor "uint *" 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) )))) = identifier) ;) (expression_statement "uVar7 = puVar2[3];" (assignment_expression "uVar7 = puVar2[3]" identifier = (subscript_expression "puVar2[3]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)((int)register0x00000010 + -0x24) = uVar3;" (assignment_expression "*(uint *)((int)register0x00000010 + -0x24) = uVar3" (pointer_expression "*(uint *)((int)register0x00000010 + -0x24)" * (cast_expression "(uint *)((int)register0x00000010 + -0x24)" ( (type_descriptor "uint *" type_identifier (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) )))) = identifier) ;) (expression_statement "uVar3 = puVar2[5];" (assignment_expression "uVar3 = puVar2[5]" identifier = (subscript_expression "puVar2[5]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)((int)register0x00000010 + -0x34) = uVar4;" (assignment_expression "*(uint *)((int)register0x00000010 + -0x34) = uVar4" (pointer_expression "*(uint *)((int)register0x00000010 + -0x34)" * (cast_expression "(uint *)((int)register0x00000010 + -0x34)" ( (type_descriptor "uint *" type_identifier (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 "*(uint *)((int)register0x00000010 + -0x5c) = uVar3;" (assignment_expression "*(uint *)((int)register0x00000010 + -0x5c) = uVar3" (pointer_expression "*(uint *)((int)register0x00000010 + -0x5c)" * (cast_expression "(uint *)((int)register0x00000010 + -0x5c)" ( (type_descriptor "uint *" 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) )))) = identifier) ;) (expression_statement "*(uint *)((int)register0x00000010 + -0x20) = uVar3;" (assignment_expression "*(uint *)((int)register0x00000010 + -0x20) = uVar3" (pointer_expression "*(uint *)((int)register0x00000010 + -0x20)" * (cast_expression "(uint *)((int)register0x00000010 + -0x20)" ( (type_descriptor "uint *" type_identifier (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) )))) = identifier) ;) (expression_statement "uVar3 = *param_2;" (assignment_expression "uVar3 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(uint *)((int)register0x00000010 + -0x30) = uVar5;" (assignment_expression "*(uint *)((int)register0x00000010 + -0x30) = uVar5" (pointer_expression "*(uint *)((int)register0x00000010 + -0x30)" * (cast_expression "(uint *)((int)register0x00000010 + -0x30)" ( (type_descriptor "uint *" type_identifier (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) )))) = identifier) ;) (expression_statement "*puVar2 = uVar3;" (assignment_expression "*puVar2 = uVar3" (pointer_expression "*puVar2" * identifier) = identifier) ;) (expression_statement "uVar3 = param_2[1];" (assignment_expression "uVar3 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)((int)register0x00000010 + -0x2c) = uVar6;" (assignment_expression "*(uint *)((int)register0x00000010 + -0x2c) = uVar6" (pointer_expression "*(uint *)((int)register0x00000010 + -0x2c)" * (cast_expression "(uint *)((int)register0x00000010 + -0x2c)" ( (type_descriptor "uint *" type_identifier (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) ;) (expression_statement "puVar2[1] = uVar3;" (assignment_expression "puVar2[1] = uVar3" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar3 = param_2[2];" (assignment_expression "uVar3 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)((int)register0x00000010 + -0x28) = uVar7;" (assignment_expression "*(uint *)((int)register0x00000010 + -0x28) = uVar7" (pointer_expression "*(uint *)((int)register0x00000010 + -0x28)" * (cast_expression "(uint *)((int)register0x00000010 + -0x28)" ( (type_descriptor "uint *" type_identifier (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 "puVar2[2] = uVar3;" (assignment_expression "puVar2[2] = uVar3" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[3] = param_2[3];" (assignment_expression "puVar2[3] = param_2[3]" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (expression_statement "puVar2[4] = param_2[4];" (assignment_expression "puVar2[4] = param_2[4]" (subscript_expression "puVar2[4]" identifier [ number_literal ]) = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (expression_statement "puVar2[5] = param_2[5];" (assignment_expression "puVar2[5] = param_2[5]" (subscript_expression "puVar2[5]" identifier [ number_literal ]) = (subscript_expression "param_2[5]" identifier [ number_literal ])) ;) (expression_statement "*param_2 = uVar4;" (assignment_expression "*param_2 = uVar4" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "uVar3 = *(uint *)((int)register0x00000010 + -0x60);" (assignment_expression "uVar3 = *(uint *)((int)register0x00000010 + -0x60)" identifier = (pointer_expression "*(uint *)((int)register0x00000010 + -0x60)" * (cast_expression "(uint *)((int)register0x00000010 + -0x60)" ( (type_descriptor "uint *" 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) ))))) ;) (expression_statement "param_2[1] = uVar5;" (assignment_expression "param_2[1] = uVar5" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_2[2] = uVar6;" (assignment_expression "param_2[2] = uVar6" (subscript_expression "param_2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_2[3] = uVar7;" (assignment_expression "param_2[3] = uVar7" (subscript_expression "param_2[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_2[4] = uVar3;" (assignment_expression "param_2[4] = uVar3" (subscript_expression "param_2[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_2[5] = *(uint *)((int)register0x00000010 + -0x5c);" (assignment_expression "param_2[5] = *(uint *)((int)register0x00000010 + -0x5c)" (subscript_expression "param_2[5]" identifier [ number_literal ]) = (pointer_expression "*(uint *)((int)register0x00000010 + -0x5c)" * (cast_expression "(uint *)((int)register0x00000010 + -0x5c)" ( (type_descriptor "uint *" 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) ))))) ;) (return_statement "return;" return ;) })) (if_statement "if (iVar1 < iVar9) {\n      *(int *)((int)register0x00000010 + -0x5c) = iVar9 / 2;\n      iVar8 = *(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18;\n      *(int *)((int)register0x00000010 + -0x48) = iVar8;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x7c) = iVar8;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae60;\n      FUN_000b50e0();\n      *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x40);\n      param_1 = *(int *)((int)register0x00000010 + -0x40) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x58) = (param_1 >> 3) * -0x55555555;\n    }\n    else {\n      iVar8 = iVar1 / 2;\n      *(int *)((int)register0x00000010 + -0x58) = iVar8;\n      param_1 = iVar8 * 0x18;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6;\n      *(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2;\n      FUN_000b4f60();\n      *(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x5c) =\n           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555;\n    }" if (parenthesized_expression "(iVar1 < iVar9)" ( (binary_expression "iVar1 < iVar9" identifier < identifier) )) (compound_statement "{\n      *(int *)((int)register0x00000010 + -0x5c) = iVar9 / 2;\n      iVar8 = *(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18;\n      *(int *)((int)register0x00000010 + -0x48) = iVar8;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x7c) = iVar8;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae60;\n      FUN_000b50e0();\n      *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x40);\n      param_1 = *(int *)((int)register0x00000010 + -0x40) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x58) = (param_1 >> 3) * -0x55555555;\n    }" { (expression_statement "*(int *)((int)register0x00000010 + -0x5c) = iVar9 / 2;" (assignment_expression "*(int *)((int)register0x00000010 + -0x5c) = iVar9 / 2" (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 "iVar9 / 2" identifier / number_literal)) ;) (expression_statement "iVar8 = *(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18;" (assignment_expression "iVar8 = *(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18" identifier = (binary_expression "*(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18" (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) )))) + (binary_expression "(iVar9 / 2) * 0x18" (parenthesized_expression "(iVar9 / 2)" ( (binary_expression "iVar9 / 2" identifier / number_literal) )) * number_literal))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x48) = iVar8;" (assignment_expression "*(int *)((int)register0x00000010 + -0x48) = iVar8" (pointer_expression "*(int *)((int)register0x00000010 + -0x48)" * (cast_expression "(int *)((int)register0x00000010 + -0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x48)" ( (binary_expression "(int)register0x00000010 + -0x48" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);" (assignment_expression "*(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40)" (pointer_expression "*(int **)((int)register0x00000010 + -0x44)" * (cast_expression "(int **)((int)register0x00000010 + -0x44)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000010 + -0x44)" ( (binary_expression "(int)register0x00000010 + -0x44" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (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) )))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x7c) = iVar8;" (assignment_expression "*(int *)((int)register0x00000010 + -0x7c) = iVar8" (pointer_expression "*(int *)((int)register0x00000010 + -0x7c)" * (cast_expression "(int *)((int)register0x00000010 + -0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x7c)" ( (binary_expression "(int)register0x00000010 + -0x7c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae60;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae60" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x80)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0x80)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x80)" ( (binary_expression "(int)register0x00000010 + -0x80" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000b50e0();" (call_expression "FUN_000b50e0()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x40);" (assignment_expression "*(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x40)" (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) )))) = (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) ))))) ;) (expression_statement "param_1 = *(int *)((int)register0x00000010 + -0x40) - (int)param_2;" (assignment_expression "param_1 = *(int *)((int)register0x00000010 + -0x40) - (int)param_2" identifier = (binary_expression "*(int *)((int)register0x00000010 + -0x40) - (int)param_2" (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) )))) - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x58) = (param_1 >> 3) * -0x55555555;" (assignment_expression "*(int *)((int)register0x00000010 + -0x58) = (param_1 >> 3) * -0x55555555" (pointer_expression "*(int *)((int)register0x00000010 + -0x58)" * (cast_expression "(int *)((int)register0x00000010 + -0x58)" ( (type_descriptor "int *" primitive_type (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 "(param_1 >> 3) * -0x55555555" (parenthesized_expression "(param_1 >> 3)" ( (binary_expression "param_1 >> 3" identifier >> number_literal) )) * number_literal)) ;) }) (else_clause "else {\n      iVar8 = iVar1 / 2;\n      *(int *)((int)register0x00000010 + -0x58) = iVar8;\n      param_1 = iVar8 * 0x18;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6;\n      *(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2;\n      FUN_000b4f60();\n      *(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x5c) =\n           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555;\n    }" else (compound_statement "{\n      iVar8 = iVar1 / 2;\n      *(int *)((int)register0x00000010 + -0x58) = iVar8;\n      param_1 = iVar8 * 0x18;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6;\n      *(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2;\n      FUN_000b4f60();\n      *(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x5c) =\n           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555;\n    }" { (expression_statement "iVar8 = iVar1 / 2;" (assignment_expression "iVar8 = iVar1 / 2" identifier = (binary_expression "iVar1 / 2" identifier / number_literal)) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x58) = iVar8;" (assignment_expression "*(int *)((int)register0x00000010 + -0x58) = iVar8" (pointer_expression "*(int *)((int)register0x00000010 + -0x58)" * (cast_expression "(int *)((int)register0x00000010 + -0x58)" ( (type_descriptor "int *" primitive_type (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) )))) = identifier) ;) (expression_statement "param_1 = iVar8 * 0x18;" (assignment_expression "param_1 = iVar8 * 0x18" identifier = (binary_expression "iVar8 * 0x18" identifier * number_literal)) ;) (expression_statement "*(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);" (assignment_expression "*(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40)" (pointer_expression "*(int **)((int)register0x00000010 + -0x44)" * (cast_expression "(int **)((int)register0x00000010 + -0x44)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000010 + -0x44)" ( (binary_expression "(int)register0x00000010 + -0x44" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (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) )))) ;) (expression_statement "*(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6;" (assignment_expression "*(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6" (pointer_expression "*(uint **)((int)register0x00000010 + -0x54)" * (cast_expression "(uint **)((int)register0x00000010 + -0x54)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (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 "param_2 + iVar8 * 6" identifier + (binary_expression "iVar8 * 6" identifier * number_literal))) ;) (expression_statement "*(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6;" (assignment_expression "*(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6" (pointer_expression "*(uint **)((int)register0x00000010 + -0x7c)" * (cast_expression "(uint **)((int)register0x00000010 + -0x7c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000010 + -0x7c)" ( (binary_expression "(int)register0x00000010 + -0x7c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "param_2 + iVar8 * 6" identifier + (binary_expression "iVar8 * 6" identifier * number_literal))) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x80)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0x80)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x80)" ( (binary_expression "(int)register0x00000010 + -0x80" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000b4f60();" (call_expression "FUN_000b4f60()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40);" (assignment_expression "*(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40)" (pointer_expression "*(int *)((int)register0x00000010 + -0x48)" * (cast_expression "(int *)((int)register0x00000010 + -0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x48)" ( (binary_expression "(int)register0x00000010 + -0x48" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (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) ))))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x5c) =\n           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555;" (assignment_expression "*(int *)((int)register0x00000010 + -0x5c) =\n           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555" (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 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555" (parenthesized_expression "(*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3)" ( (binary_expression "*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3" (binary_expression "*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60)" (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) )))) - (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) ))))) >> number_literal) )) * number_literal)) ;) }))) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x7c) = 0;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x7c) = 0" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x7c)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0x7c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x7c)" ( (binary_expression "(int)register0x00000010 + -0x7c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x54);" (assignment_expression "*(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x54)" (pointer_expression "*(int *)((int)register0x00000010 + -0x80)" * (cast_expression "(int *)((int)register0x00000010 + -0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x80)" ( (binary_expression "(int)register0x00000010 + -0x80" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (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) ))))) ;) (expression_statement "*(uint **)((int)register0x00000010 + -0x84) = param_2;" (assignment_expression "*(uint **)((int)register0x00000010 + -0x84) = param_2" (pointer_expression "*(uint **)((int)register0x00000010 + -0x84)" * (cast_expression "(uint **)((int)register0x00000010 + -0x84)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000010 + -0x84)" ( (binary_expression "(int)register0x00000010 + -0x84" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x88) = *(int *)((int)register0x00000010 + -0x48);" (assignment_expression "*(int *)((int)register0x00000010 + -0x88) = *(int *)((int)register0x00000010 + -0x48)" (pointer_expression "*(int *)((int)register0x00000010 + -0x88)" * (cast_expression "(int *)((int)register0x00000010 + -0x88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x88)" ( (binary_expression "(int)register0x00000010 + -0x88" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(int *)((int)register0x00000010 + -0x48)" * (cast_expression "(int *)((int)register0x00000010 + -0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x48)" ( (binary_expression "(int)register0x00000010 + -0x48" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "param_1 = param_1 + *(int *)((int)register0x00000010 + -0x48);" (assignment_expression "param_1 = param_1 + *(int *)((int)register0x00000010 + -0x48)" identifier = (binary_expression "param_1 + *(int *)((int)register0x00000010 + -0x48)" identifier + (pointer_expression "*(int *)((int)register0x00000010 + -0x48)" * (cast_expression "(int *)((int)register0x00000010 + -0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x48)" ( (binary_expression "(int)register0x00000010 + -0x48" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x8c) = *(int *)((int)register0x00000010 + -0x44);" (assignment_expression "*(int *)((int)register0x00000010 + -0x8c) = *(int *)((int)register0x00000010 + -0x44)" (pointer_expression "*(int *)((int)register0x00000010 + -0x8c)" * (cast_expression "(int *)((int)register0x00000010 + -0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x8c)" ( (binary_expression "(int)register0x00000010 + -0x8c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(int *)((int)register0x00000010 + -0x44)" * (cast_expression "(int *)((int)register0x00000010 + -0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x44)" ( (binary_expression "(int)register0x00000010 + -0x44" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x90) = 0xcadd8;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x90) = 0xcadd8" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x90)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0x90)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x90)" ( (binary_expression "(int)register0x00000010 + -0x90" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00104ec0();" (call_expression "FUN_00104ec0()" identifier (argument_list "()" ( ))) ;) (expression_statement "bVar10 = *(byte *)((int)register0x00000010 + -0x51);" (assignment_expression "bVar10 = *(byte *)((int)register0x00000010 + -0x51)" identifier = (pointer_expression "*(byte *)((int)register0x00000010 + -0x51)" * (cast_expression "(byte *)((int)register0x00000010 + -0x51)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x51)" ( (binary_expression "(int)register0x00000010 + -0x51" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(uint *)((int)register0x00000010 + -0x78) = (uint)bVar10;" (assignment_expression "*(uint *)((int)register0x00000010 + -0x78) = (uint)bVar10" (pointer_expression "*(uint *)((int)register0x00000010 + -0x78)" * (cast_expression "(uint *)((int)register0x00000010 + -0x78)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x78)" ( (binary_expression "(int)register0x00000010 + -0x78" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x7c) = *(int *)((int)register0x00000010 + -0x5c);" (assignment_expression "*(int *)((int)register0x00000010 + -0x7c) = *(int *)((int)register0x00000010 + -0x5c)" (pointer_expression "*(int *)((int)register0x00000010 + -0x7c)" * (cast_expression "(int *)((int)register0x00000010 + -0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x7c)" ( (binary_expression "(int)register0x00000010 + -0x7c" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (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) ))))) ;) (expression_statement "*(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x60);" (assignment_expression "*(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x60)" (pointer_expression "*(int *)((int)register0x00000010 + -0x80)" * (cast_expression "(int *)((int)register0x00000010 + -0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x80)" ( (binary_expression "(int)register0x00000010 + -0x80" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (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) ))))) ;) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x84) = 0xcadf6;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x84) = 0xcadf6" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x84)" * (cast_expression "(undefined4 *)((int)register0x00000010 + -0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000010 + -0x84)" ( (binary_expression "(int)register0x00000010 + -0x84" (cast_expression "(int)register0x00000010" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000cad20();" (call_expression "FUN_000cad20()" identifier (argument_list "()" ( ))) ;) (expression_statement "param_3 = *(int *)((int)register0x00000010 + -0x50);" (assignment_expression "param_3 = *(int *)((int)register0x00000010 + -0x50)" identifier = (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) ))))) ;) (expression_statement "param_2 = *(uint **)((int)register0x00000010 + -0x58);" (assignment_expression "param_2 = *(uint **)((int)register0x00000010 + -0x58)" identifier = (pointer_expression "*(uint **)((int)register0x00000010 + -0x58)" * (cast_expression "(uint **)((int)register0x00000010 + -0x58)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (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) ))))) ;) (expression_statement "*(byte *)((int)register0x00000010 + 8) = bVar10;" (assignment_expression "*(byte *)((int)register0x00000010 + 8) = bVar10" (pointer_expression "*(byte *)((int)register0x00000010 + 8)" * (cast_expression "(byte *)((int)register0x00000010 + 8)" ( (type_descriptor "byte *" 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 "*(int *)((int)register0x00000010 + 4) = iVar1 - *(int *)((int)register0x00000010 + -0x5c);" (assignment_expression "*(int *)((int)register0x00000010 + 4) = iVar1 - *(int *)((int)register0x00000010 + -0x5c)" (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 "iVar1 - *(int *)((int)register0x00000010 + -0x5c)" identifier - (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) )))))) ;) (expression_statement "*(int *)register0x00000010 = iVar9 - *(int *)((int)register0x00000010 + -0x60);" (assignment_expression "*(int *)register0x00000010 = iVar9 - *(int *)((int)register0x00000010 + -0x60)" (pointer_expression "*(int *)register0x00000010" * (cast_expression "(int *)register0x00000010" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "iVar9 - *(int *)((int)register0x00000010 + -0x60)" identifier - (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) )))))) ;) (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) )))) ;) })) (return_statement "return;" return ;) })))
(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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (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) )) (break_statement break ;)) (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) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < LIT) )) (compound_statement { (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) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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) )))))) ;) (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 LIT < (binary_expression IDENT + LIT)) )) (compound_statement { (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 * (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 *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ^ LIT) )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return ;) })) }) (else_clause else (compound_statement { (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) )))))) ;) (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 + LIT) < LIT) )) (compound_statement { (return_statement return ;) })) }))) (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 IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_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 IDENT = (subscript_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 IDENT = (subscript_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) )))) = 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 IDENT = (pointer_expression * 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 * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (return_statement return ;) })) (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 *)) ) (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 * (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 (parenthesized_expression ( (binary_expression IDENT >> LIT) )) * 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 IDENT = (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) )))) = (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 + (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 + (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) )))) = 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 (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 (binary_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) ))))) >> 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) )))) = (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) )))) = (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 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 (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) )))) = (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) )))) = (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 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 *)) ) (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 - (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 *)) ) 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) )))) ;) })) (return_statement return ;) })))
(function_definition "void __regparm3 FUN_000cad20(int param_1,uint *param_2,int param_3)\n\n{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 unaff_EBX;\n  undefined4 unaff_EBP;\n  byte bVar10;\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) = 0xcad29;\n    iVar9 = *(int *)((int)register0x00000010 + 4);\n    iVar1 = *(int *)((int)register0x00000010 + 8);\n    *(int *)((int)register0x00000010 + -0x60) = param_1;\n    *(char *)((int)register0x00000010 + -0x4d) = (char)*(int *)((int)register0x00000010 + 0xc);\n    if (iVar9 == 0) {\n      return;\n    }\n    if (iVar1 == 0) break;\n    *(int *)((int)register0x00000010 + -0x4c) = param_3;\n    if (iVar9 + iVar1 == 2) {\n      if (*param_2 < 0xfffffffc) {\n        *(uint **)((int)register0x00000010 + -0x7c) = param_2;\n        *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;\n        iVar9 = FUN_002c6110();\n        bVar10 = *(byte *)(iVar9 + 0x14c);\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (3 < iVar9 + 4U) {\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }\n        if (bVar10 == 0) {\n          return;\n        }\n      }\n      else {\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (iVar9 + 4U < 4) {\n          return;\n        }\n      }\n      puVar2 = *(uint **)((int)register0x00000010 + -0x60);\n      uVar3 = puVar2[4];\n      uVar4 = *puVar2;\n      uVar5 = puVar2[1];\n      uVar6 = puVar2[2];\n      *(uint *)((int)register0x00000010 + -0x60) = uVar3;\n      uVar7 = puVar2[3];\n      *(uint *)((int)register0x00000010 + -0x24) = uVar3;\n      uVar3 = puVar2[5];\n      *(uint *)((int)register0x00000010 + -0x34) = uVar4;\n      *(uint *)((int)register0x00000010 + -0x5c) = uVar3;\n      *(uint *)((int)register0x00000010 + -0x20) = uVar3;\n      uVar3 = *param_2;\n      *(uint *)((int)register0x00000010 + -0x30) = uVar5;\n      *puVar2 = uVar3;\n      uVar3 = param_2[1];\n      *(uint *)((int)register0x00000010 + -0x2c) = uVar6;\n      puVar2[1] = uVar3;\n      uVar3 = param_2[2];\n      *(uint *)((int)register0x00000010 + -0x28) = uVar7;\n      puVar2[2] = uVar3;\n      puVar2[3] = param_2[3];\n      puVar2[4] = param_2[4];\n      puVar2[5] = param_2[5];\n      *param_2 = uVar4;\n      uVar3 = *(uint *)((int)register0x00000010 + -0x60);\n      param_2[1] = uVar5;\n      param_2[2] = uVar6;\n      param_2[3] = uVar7;\n      param_2[4] = uVar3;\n      param_2[5] = *(uint *)((int)register0x00000010 + -0x5c);\n      return;\n    }\n    if (iVar1 < iVar9) {\n      *(int *)((int)register0x00000010 + -0x5c) = iVar9 / 2;\n      iVar8 = *(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18;\n      *(int *)((int)register0x00000010 + -0x48) = iVar8;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x7c) = iVar8;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae60;\n      FUN_000b50e0();\n      *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x40);\n      param_1 = *(int *)((int)register0x00000010 + -0x40) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x58) = (param_1 >> 3) * -0x55555555;\n    }\n    else {\n      iVar8 = iVar1 / 2;\n      *(int *)((int)register0x00000010 + -0x58) = iVar8;\n      param_1 = iVar8 * 0x18;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6;\n      *(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2;\n      FUN_000b4f60();\n      *(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x5c) =\n           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555;\n    }\n    *(undefined4 *)((int)register0x00000010 + -0x7c) = 0;\n    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x54);\n    *(uint **)((int)register0x00000010 + -0x84) = param_2;\n    *(int *)((int)register0x00000010 + -0x88) = *(int *)((int)register0x00000010 + -0x48);\n    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x48);\n    *(int *)((int)register0x00000010 + -0x8c) = *(int *)((int)register0x00000010 + -0x44);\n    *(undefined4 *)((int)register0x00000010 + -0x90) = 0xcadd8;\n    FUN_00104ec0();\n    bVar10 = *(byte *)((int)register0x00000010 + -0x51);\n    *(uint *)((int)register0x00000010 + -0x78) = (uint)bVar10;\n    *(int *)((int)register0x00000010 + -0x7c) = *(int *)((int)register0x00000010 + -0x5c);\n    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x60);\n    *(undefined4 *)((int)register0x00000010 + -0x84) = 0xcadf6;\n    FUN_000cad20();\n    param_3 = *(int *)((int)register0x00000010 + -0x50);\n    param_2 = *(uint **)((int)register0x00000010 + -0x58);\n    *(byte *)((int)register0x00000010 + 8) = bVar10;\n    *(int *)((int)register0x00000010 + 4) = iVar1 - *(int *)((int)register0x00000010 + -0x5c);\n    *(int *)register0x00000010 = iVar9 - *(int *)((int)register0x00000010 + -0x60);\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  return;\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_000cad20(int param_1,uint *param_2,int param_3)" (identifier "FUN_000cad20") (parameter_list "(int param_1,uint *param_2,int param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 unaff_EBX;\n  undefined4 unaff_EBP;\n  byte bVar10;\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) = 0xcad29;\n    iVar9 = *(int *)((int)register0x00000010 + 4);\n    iVar1 = *(int *)((int)register0x00000010 + 8);\n    *(int *)((int)register0x00000010 + -0x60) = param_1;\n    *(char *)((int)register0x00000010 + -0x4d) = (char)*(int *)((int)register0x00000010 + 0xc);\n    if (iVar9 == 0) {\n      return;\n    }\n    if (iVar1 == 0) break;\n    *(int *)((int)register0x00000010 + -0x4c) = param_3;\n    if (iVar9 + iVar1 == 2) {\n      if (*param_2 < 0xfffffffc) {\n        *(uint **)((int)register0x00000010 + -0x7c) = param_2;\n        *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;\n        iVar9 = FUN_002c6110();\n        bVar10 = *(byte *)(iVar9 + 0x14c);\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (3 < iVar9 + 4U) {\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }\n        if (bVar10 == 0) {\n          return;\n        }\n      }\n      else {\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (iVar9 + 4U < 4) {\n          return;\n        }\n      }\n      puVar2 = *(uint **)((int)register0x00000010 + -0x60);\n      uVar3 = puVar2[4];\n      uVar4 = *puVar2;\n      uVar5 = puVar2[1];\n      uVar6 = puVar2[2];\n      *(uint *)((int)register0x00000010 + -0x60) = uVar3;\n      uVar7 = puVar2[3];\n      *(uint *)((int)register0x00000010 + -0x24) = uVar3;\n      uVar3 = puVar2[5];\n      *(uint *)((int)register0x00000010 + -0x34) = uVar4;\n      *(uint *)((int)register0x00000010 + -0x5c) = uVar3;\n      *(uint *)((int)register0x00000010 + -0x20) = uVar3;\n      uVar3 = *param_2;\n      *(uint *)((int)register0x00000010 + -0x30) = uVar5;\n      *puVar2 = uVar3;\n      uVar3 = param_2[1];\n      *(uint *)((int)register0x00000010 + -0x2c) = uVar6;\n      puVar2[1] = uVar3;\n      uVar3 = param_2[2];\n      *(uint *)((int)register0x00000010 + -0x28) = uVar7;\n      puVar2[2] = uVar3;\n      puVar2[3] = param_2[3];\n      puVar2[4] = param_2[4];\n      puVar2[5] = param_2[5];\n      *param_2 = uVar4;\n      uVar3 = *(uint *)((int)register0x00000010 + -0x60);\n      param_2[1] = uVar5;\n      param_2[2] = uVar6;\n      param_2[3] = uVar7;\n      param_2[4] = uVar3;\n      param_2[5] = *(uint *)((int)register0x00000010 + -0x5c);\n      return;\n    }\n    if (iVar1 < iVar9) {\n      *(int *)((int)register0x00000010 + -0x5c) = iVar9 / 2;\n      iVar8 = *(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18;\n      *(int *)((int)register0x00000010 + -0x48) = iVar8;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x7c) = iVar8;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae60;\n      FUN_000b50e0();\n      *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x40);\n      param_1 = *(int *)((int)register0x00000010 + -0x40) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x58) = (param_1 >> 3) * -0x55555555;\n    }\n    else {\n      iVar8 = iVar1 / 2;\n      *(int *)((int)register0x00000010 + -0x58) = iVar8;\n      param_1 = iVar8 * 0x18;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6;\n      *(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2;\n      FUN_000b4f60();\n      *(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x5c) =\n           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555;\n    }\n    *(undefined4 *)((int)register0x00000010 + -0x7c) = 0;\n    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x54);\n    *(uint **)((int)register0x00000010 + -0x84) = param_2;\n    *(int *)((int)register0x00000010 + -0x88) = *(int *)((int)register0x00000010 + -0x48);\n    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x48);\n    *(int *)((int)register0x00000010 + -0x8c) = *(int *)((int)register0x00000010 + -0x44);\n    *(undefined4 *)((int)register0x00000010 + -0x90) = 0xcadd8;\n    FUN_00104ec0();\n    bVar10 = *(byte *)((int)register0x00000010 + -0x51);\n    *(uint *)((int)register0x00000010 + -0x78) = (uint)bVar10;\n    *(int *)((int)register0x00000010 + -0x7c) = *(int *)((int)register0x00000010 + -0x5c);\n    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x60);\n    *(undefined4 *)((int)register0x00000010 + -0x84) = 0xcadf6;\n    FUN_000cad20();\n    param_3 = *(int *)((int)register0x00000010 + -0x50);\n    param_2 = *(uint **)((int)register0x00000010 + -0x58);\n    *(byte *)((int)register0x00000010 + 8) = bVar10;\n    *(int *)((int)register0x00000010 + 4) = iVar1 - *(int *)((int)register0x00000010 + -0x5c);\n    *(int *)register0x00000010 = iVar9 - *(int *)((int)register0x00000010 + -0x60);\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  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint *puVar2;" (type_identifier "uint") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "undefined4 unaff_EBX;" (type_identifier "undefined4") (identifier "unaff_EBX") (; ";")) (declaration "undefined4 unaff_EBP;" (type_identifier "undefined4") (identifier "unaff_EBP") (; ";")) (declaration "byte bVar10;" (type_identifier "byte") (identifier "bVar10") (; ";")) (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) = 0xcad29;\n    iVar9 = *(int *)((int)register0x00000010 + 4);\n    iVar1 = *(int *)((int)register0x00000010 + 8);\n    *(int *)((int)register0x00000010 + -0x60) = param_1;\n    *(char *)((int)register0x00000010 + -0x4d) = (char)*(int *)((int)register0x00000010 + 0xc);\n    if (iVar9 == 0) {\n      return;\n    }\n    if (iVar1 == 0) break;\n    *(int *)((int)register0x00000010 + -0x4c) = param_3;\n    if (iVar9 + iVar1 == 2) {\n      if (*param_2 < 0xfffffffc) {\n        *(uint **)((int)register0x00000010 + -0x7c) = param_2;\n        *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;\n        iVar9 = FUN_002c6110();\n        bVar10 = *(byte *)(iVar9 + 0x14c);\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (3 < iVar9 + 4U) {\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }\n        if (bVar10 == 0) {\n          return;\n        }\n      }\n      else {\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (iVar9 + 4U < 4) {\n          return;\n        }\n      }\n      puVar2 = *(uint **)((int)register0x00000010 + -0x60);\n      uVar3 = puVar2[4];\n      uVar4 = *puVar2;\n      uVar5 = puVar2[1];\n      uVar6 = puVar2[2];\n      *(uint *)((int)register0x00000010 + -0x60) = uVar3;\n      uVar7 = puVar2[3];\n      *(uint *)((int)register0x00000010 + -0x24) = uVar3;\n      uVar3 = puVar2[5];\n      *(uint *)((int)register0x00000010 + -0x34) = uVar4;\n      *(uint *)((int)register0x00000010 + -0x5c) = uVar3;\n      *(uint *)((int)register0x00000010 + -0x20) = uVar3;\n      uVar3 = *param_2;\n      *(uint *)((int)register0x00000010 + -0x30) = uVar5;\n      *puVar2 = uVar3;\n      uVar3 = param_2[1];\n      *(uint *)((int)register0x00000010 + -0x2c) = uVar6;\n      puVar2[1] = uVar3;\n      uVar3 = param_2[2];\n      *(uint *)((int)register0x00000010 + -0x28) = uVar7;\n      puVar2[2] = uVar3;\n      puVar2[3] = param_2[3];\n      puVar2[4] = param_2[4];\n      puVar2[5] = param_2[5];\n      *param_2 = uVar4;\n      uVar3 = *(uint *)((int)register0x00000010 + -0x60);\n      param_2[1] = uVar5;\n      param_2[2] = uVar6;\n      param_2[3] = uVar7;\n      param_2[4] = uVar3;\n      param_2[5] = *(uint *)((int)register0x00000010 + -0x5c);\n      return;\n    }\n    if (iVar1 < iVar9) {\n      *(int *)((int)register0x00000010 + -0x5c) = iVar9 / 2;\n      iVar8 = *(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18;\n      *(int *)((int)register0x00000010 + -0x48) = iVar8;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x7c) = iVar8;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae60;\n      FUN_000b50e0();\n      *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x40);\n      param_1 = *(int *)((int)register0x00000010 + -0x40) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x58) = (param_1 >> 3) * -0x55555555;\n    }\n    else {\n      iVar8 = iVar1 / 2;\n      *(int *)((int)register0x00000010 + -0x58) = iVar8;\n      param_1 = iVar8 * 0x18;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6;\n      *(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2;\n      FUN_000b4f60();\n      *(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x5c) =\n           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555;\n    }\n    *(undefined4 *)((int)register0x00000010 + -0x7c) = 0;\n    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x54);\n    *(uint **)((int)register0x00000010 + -0x84) = param_2;\n    *(int *)((int)register0x00000010 + -0x88) = *(int *)((int)register0x00000010 + -0x48);\n    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x48);\n    *(int *)((int)register0x00000010 + -0x8c) = *(int *)((int)register0x00000010 + -0x44);\n    *(undefined4 *)((int)register0x00000010 + -0x90) = 0xcadd8;\n    FUN_00104ec0();\n    bVar10 = *(byte *)((int)register0x00000010 + -0x51);\n    *(uint *)((int)register0x00000010 + -0x78) = (uint)bVar10;\n    *(int *)((int)register0x00000010 + -0x7c) = *(int *)((int)register0x00000010 + -0x5c);\n    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x60);\n    *(undefined4 *)((int)register0x00000010 + -0x84) = 0xcadf6;\n    FUN_000cad20();\n    param_3 = *(int *)((int)register0x00000010 + -0x50);\n    param_2 = *(uint **)((int)register0x00000010 + -0x58);\n    *(byte *)((int)register0x00000010 + 8) = bVar10;\n    *(int *)((int)register0x00000010 + 4) = iVar1 - *(int *)((int)register0x00000010 + -0x5c);\n    *(int *)register0x00000010 = iVar9 - *(int *)((int)register0x00000010 + -0x60);\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) = 0xcad29;\n    iVar9 = *(int *)((int)register0x00000010 + 4);\n    iVar1 = *(int *)((int)register0x00000010 + 8);\n    *(int *)((int)register0x00000010 + -0x60) = param_1;\n    *(char *)((int)register0x00000010 + -0x4d) = (char)*(int *)((int)register0x00000010 + 0xc);\n    if (iVar9 == 0) {\n      return;\n    }\n    if (iVar1 == 0) break;\n    *(int *)((int)register0x00000010 + -0x4c) = param_3;\n    if (iVar9 + iVar1 == 2) {\n      if (*param_2 < 0xfffffffc) {\n        *(uint **)((int)register0x00000010 + -0x7c) = param_2;\n        *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;\n        iVar9 = FUN_002c6110();\n        bVar10 = *(byte *)(iVar9 + 0x14c);\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (3 < iVar9 + 4U) {\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }\n        if (bVar10 == 0) {\n          return;\n        }\n      }\n      else {\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (iVar9 + 4U < 4) {\n          return;\n        }\n      }\n      puVar2 = *(uint **)((int)register0x00000010 + -0x60);\n      uVar3 = puVar2[4];\n      uVar4 = *puVar2;\n      uVar5 = puVar2[1];\n      uVar6 = puVar2[2];\n      *(uint *)((int)register0x00000010 + -0x60) = uVar3;\n      uVar7 = puVar2[3];\n      *(uint *)((int)register0x00000010 + -0x24) = uVar3;\n      uVar3 = puVar2[5];\n      *(uint *)((int)register0x00000010 + -0x34) = uVar4;\n      *(uint *)((int)register0x00000010 + -0x5c) = uVar3;\n      *(uint *)((int)register0x00000010 + -0x20) = uVar3;\n      uVar3 = *param_2;\n      *(uint *)((int)register0x00000010 + -0x30) = uVar5;\n      *puVar2 = uVar3;\n      uVar3 = param_2[1];\n      *(uint *)((int)register0x00000010 + -0x2c) = uVar6;\n      puVar2[1] = uVar3;\n      uVar3 = param_2[2];\n      *(uint *)((int)register0x00000010 + -0x28) = uVar7;\n      puVar2[2] = uVar3;\n      puVar2[3] = param_2[3];\n      puVar2[4] = param_2[4];\n      puVar2[5] = param_2[5];\n      *param_2 = uVar4;\n      uVar3 = *(uint *)((int)register0x00000010 + -0x60);\n      param_2[1] = uVar5;\n      param_2[2] = uVar6;\n      param_2[3] = uVar7;\n      param_2[4] = uVar3;\n      param_2[5] = *(uint *)((int)register0x00000010 + -0x5c);\n      return;\n    }\n    if (iVar1 < iVar9) {\n      *(int *)((int)register0x00000010 + -0x5c) = iVar9 / 2;\n      iVar8 = *(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18;\n      *(int *)((int)register0x00000010 + -0x48) = iVar8;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x7c) = iVar8;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae60;\n      FUN_000b50e0();\n      *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x40);\n      param_1 = *(int *)((int)register0x00000010 + -0x40) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x58) = (param_1 >> 3) * -0x55555555;\n    }\n    else {\n      iVar8 = iVar1 / 2;\n      *(int *)((int)register0x00000010 + -0x58) = iVar8;\n      param_1 = iVar8 * 0x18;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6;\n      *(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2;\n      FUN_000b4f60();\n      *(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x5c) =\n           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555;\n    }\n    *(undefined4 *)((int)register0x00000010 + -0x7c) = 0;\n    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x54);\n    *(uint **)((int)register0x00000010 + -0x84) = param_2;\n    *(int *)((int)register0x00000010 + -0x88) = *(int *)((int)register0x00000010 + -0x48);\n    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x48);\n    *(int *)((int)register0x00000010 + -0x8c) = *(int *)((int)register0x00000010 + -0x44);\n    *(undefined4 *)((int)register0x00000010 + -0x90) = 0xcadd8;\n    FUN_00104ec0();\n    bVar10 = *(byte *)((int)register0x00000010 + -0x51);\n    *(uint *)((int)register0x00000010 + -0x78) = (uint)bVar10;\n    *(int *)((int)register0x00000010 + -0x7c) = *(int *)((int)register0x00000010 + -0x5c);\n    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x60);\n    *(undefined4 *)((int)register0x00000010 + -0x84) = 0xcadf6;\n    FUN_000cad20();\n    param_3 = *(int *)((int)register0x00000010 + -0x50);\n    param_2 = *(uint **)((int)register0x00000010 + -0x58);\n    *(byte *)((int)register0x00000010 + 8) = bVar10;\n    *(int *)((int)register0x00000010 + 4) = iVar1 - *(int *)((int)register0x00000010 + -0x5c);\n    *(int *)register0x00000010 = iVar9 - *(int *)((int)register0x00000010 + -0x60);\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) = 0xcad29;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x14) = 0xcad29" (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 "0xcad29")) (; ";")) (expression_statement "iVar9 = *(int *)((int)register0x00000010 + 4);" (assignment_expression "iVar9 = *(int *)((int)register0x00000010 + 4)" (identifier "iVar9") (= "=") (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 "iVar1 = *(int *)((int)register0x00000010 + 8);" (assignment_expression "iVar1 = *(int *)((int)register0x00000010 + 8)" (identifier "iVar1") (= "=") (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 + -0x60) = param_1;" (assignment_expression "*(int *)((int)register0x00000010 + -0x60) = param_1" (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")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(char *)((int)register0x00000010 + -0x4d) = (char)*(int *)((int)register0x00000010 + 0xc);" (assignment_expression "*(char *)((int)register0x00000010 + -0x4d) = (char)*(int *)((int)register0x00000010 + 0xc)" (pointer_expression "*(char *)((int)register0x00000010 + -0x4d)" (* "*") (cast_expression "(char *)((int)register0x00000010 + -0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x4d)" (( "(") (binary_expression "(int)register0x00000010 + -0x4d" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x4d")) () ")")))) (= "=") (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 (iVar9 == 0) {\n      return;\n    }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (iVar1 == 0) break;" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "*(int *)((int)register0x00000010 + -0x4c) = param_3;" (assignment_expression "*(int *)((int)register0x00000010 + -0x4c) = param_3" (pointer_expression "*(int *)((int)register0x00000010 + -0x4c)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x4c)" (( "(") (binary_expression "(int)register0x00000010 + -0x4c" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x4c")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (if_statement "if (iVar9 + iVar1 == 2) {\n      if (*param_2 < 0xfffffffc) {\n        *(uint **)((int)register0x00000010 + -0x7c) = param_2;\n        *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;\n        iVar9 = FUN_002c6110();\n        bVar10 = *(byte *)(iVar9 + 0x14c);\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (3 < iVar9 + 4U) {\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }\n        if (bVar10 == 0) {\n          return;\n        }\n      }\n      else {\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (iVar9 + 4U < 4) {\n          return;\n        }\n      }\n      puVar2 = *(uint **)((int)register0x00000010 + -0x60);\n      uVar3 = puVar2[4];\n      uVar4 = *puVar2;\n      uVar5 = puVar2[1];\n      uVar6 = puVar2[2];\n      *(uint *)((int)register0x00000010 + -0x60) = uVar3;\n      uVar7 = puVar2[3];\n      *(uint *)((int)register0x00000010 + -0x24) = uVar3;\n      uVar3 = puVar2[5];\n      *(uint *)((int)register0x00000010 + -0x34) = uVar4;\n      *(uint *)((int)register0x00000010 + -0x5c) = uVar3;\n      *(uint *)((int)register0x00000010 + -0x20) = uVar3;\n      uVar3 = *param_2;\n      *(uint *)((int)register0x00000010 + -0x30) = uVar5;\n      *puVar2 = uVar3;\n      uVar3 = param_2[1];\n      *(uint *)((int)register0x00000010 + -0x2c) = uVar6;\n      puVar2[1] = uVar3;\n      uVar3 = param_2[2];\n      *(uint *)((int)register0x00000010 + -0x28) = uVar7;\n      puVar2[2] = uVar3;\n      puVar2[3] = param_2[3];\n      puVar2[4] = param_2[4];\n      puVar2[5] = param_2[5];\n      *param_2 = uVar4;\n      uVar3 = *(uint *)((int)register0x00000010 + -0x60);\n      param_2[1] = uVar5;\n      param_2[2] = uVar6;\n      param_2[3] = uVar7;\n      param_2[4] = uVar3;\n      param_2[5] = *(uint *)((int)register0x00000010 + -0x5c);\n      return;\n    }" (if "if") (parenthesized_expression "(iVar9 + iVar1 == 2)" (( "(") (binary_expression "iVar9 + iVar1 == 2" (binary_expression "iVar9 + iVar1" (identifier "iVar9") (+ "+") (identifier "iVar1")) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n      if (*param_2 < 0xfffffffc) {\n        *(uint **)((int)register0x00000010 + -0x7c) = param_2;\n        *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;\n        iVar9 = FUN_002c6110();\n        bVar10 = *(byte *)(iVar9 + 0x14c);\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (3 < iVar9 + 4U) {\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }\n        if (bVar10 == 0) {\n          return;\n        }\n      }\n      else {\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (iVar9 + 4U < 4) {\n          return;\n        }\n      }\n      puVar2 = *(uint **)((int)register0x00000010 + -0x60);\n      uVar3 = puVar2[4];\n      uVar4 = *puVar2;\n      uVar5 = puVar2[1];\n      uVar6 = puVar2[2];\n      *(uint *)((int)register0x00000010 + -0x60) = uVar3;\n      uVar7 = puVar2[3];\n      *(uint *)((int)register0x00000010 + -0x24) = uVar3;\n      uVar3 = puVar2[5];\n      *(uint *)((int)register0x00000010 + -0x34) = uVar4;\n      *(uint *)((int)register0x00000010 + -0x5c) = uVar3;\n      *(uint *)((int)register0x00000010 + -0x20) = uVar3;\n      uVar3 = *param_2;\n      *(uint *)((int)register0x00000010 + -0x30) = uVar5;\n      *puVar2 = uVar3;\n      uVar3 = param_2[1];\n      *(uint *)((int)register0x00000010 + -0x2c) = uVar6;\n      puVar2[1] = uVar3;\n      uVar3 = param_2[2];\n      *(uint *)((int)register0x00000010 + -0x28) = uVar7;\n      puVar2[2] = uVar3;\n      puVar2[3] = param_2[3];\n      puVar2[4] = param_2[4];\n      puVar2[5] = param_2[5];\n      *param_2 = uVar4;\n      uVar3 = *(uint *)((int)register0x00000010 + -0x60);\n      param_2[1] = uVar5;\n      param_2[2] = uVar6;\n      param_2[3] = uVar7;\n      param_2[4] = uVar3;\n      param_2[5] = *(uint *)((int)register0x00000010 + -0x5c);\n      return;\n    }" ({ "{") (if_statement "if (*param_2 < 0xfffffffc) {\n        *(uint **)((int)register0x00000010 + -0x7c) = param_2;\n        *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;\n        iVar9 = FUN_002c6110();\n        bVar10 = *(byte *)(iVar9 + 0x14c);\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (3 < iVar9 + 4U) {\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }\n        if (bVar10 == 0) {\n          return;\n        }\n      }\n      else {\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (iVar9 + 4U < 4) {\n          return;\n        }\n      }" (if "if") (parenthesized_expression "(*param_2 < 0xfffffffc)" (( "(") (binary_expression "*param_2 < 0xfffffffc" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (< "<") (number_literal "0xfffffffc")) () ")")) (compound_statement "{\n        *(uint **)((int)register0x00000010 + -0x7c) = param_2;\n        *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;\n        iVar9 = FUN_002c6110();\n        bVar10 = *(byte *)(iVar9 + 0x14c);\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (3 < iVar9 + 4U) {\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }\n        if (bVar10 == 0) {\n          return;\n        }\n      }" ({ "{") (expression_statement "*(uint **)((int)register0x00000010 + -0x7c) = param_2;" (assignment_expression "*(uint **)((int)register0x00000010 + -0x7c) = param_2" (pointer_expression "*(uint **)((int)register0x00000010 + -0x7c)" (* "*") (cast_expression "(uint **)((int)register0x00000010 + -0x7c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x7c)" (( "(") (binary_expression "(int)register0x00000010 + -0x7c" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x7c")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x80)" (* "*") (cast_expression "(undefined4 *)((int)register0x00000010 + -0x80)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x80)" (( "(") (binary_expression "(int)register0x00000010 + -0x80" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x80")) () ")")))) (= "=") (number_literal "0xcae9a")) (; ";")) (expression_statement "iVar9 = FUN_002c6110();" (assignment_expression "iVar9 = FUN_002c6110()" (identifier "iVar9") (= "=") (call_expression "FUN_002c6110()" (identifier "FUN_002c6110") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "bVar10 = *(byte *)(iVar9 + 0x14c);" (assignment_expression "bVar10 = *(byte *)(iVar9 + 0x14c)" (identifier "bVar10") (= "=") (pointer_expression "*(byte *)(iVar9 + 0x14c)" (* "*") (cast_expression "(byte *)(iVar9 + 0x14c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x14c)" (( "(") (binary_expression "iVar9 + 0x14c" (identifier "iVar9") (+ "+") (number_literal "0x14c")) () ")"))))) (; ";")) (expression_statement "iVar9 = **(int **)((int)register0x00000010 + -0x60);" (assignment_expression "iVar9 = **(int **)((int)register0x00000010 + -0x60)" (identifier "iVar9") (= "=") (pointer_expression "**(int **)((int)register0x00000010 + -0x60)" (* "*") (pointer_expression "*(int **)((int)register0x00000010 + -0x60)" (* "*") (cast_expression "(int **)((int)register0x00000010 + -0x60)" (( "(") (type_descriptor "int **" (primitive_type "int") (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")) () ")")))))) (; ";")) (expression_statement "*(int *)((int)register0x00000010 + -0x5c) = iVar9;" (assignment_expression "*(int *)((int)register0x00000010 + -0x5c) = iVar9" (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 "iVar9")) (; ";")) (if_statement "if (3 < iVar9 + 4U) {\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }" (if "if") (parenthesized_expression "(3 < iVar9 + 4U)" (( "(") (binary_expression "3 < iVar9 + 4U" (number_literal "3") (< "<") (binary_expression "iVar9 + 4U" (identifier "iVar9") (+ "+") (number_literal "4U"))) () ")")) (compound_statement "{\n          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);\n          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;\n          iVar9 = FUN_002c6110();\n          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);\n        }" ({ "{") (expression_statement "*(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);" (assignment_expression "*(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60)" (pointer_expression "*(int **)((int)register0x00000010 + -0x7c)" (* "*") (cast_expression "(int **)((int)register0x00000010 + -0x7c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x7c)" (( "(") (binary_expression "(int)register0x00000010 + -0x7c" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x7c")) () ")")))) (= "=") (pointer_expression "*(int **)((int)register0x00000010 + -0x60)" (* "*") (cast_expression "(int **)((int)register0x00000010 + -0x60)" (( "(") (type_descriptor "int **" (primitive_type "int") (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")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x80)" (* "*") (cast_expression "(undefined4 *)((int)register0x00000010 + -0x80)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x80)" (( "(") (binary_expression "(int)register0x00000010 + -0x80" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x80")) () ")")))) (= "=") (number_literal "0xcaebf")) (; ";")) (expression_statement "iVar9 = FUN_002c6110();" (assignment_expression "iVar9 = FUN_002c6110()" (identifier "iVar9") (= "=") (call_expression "FUN_002c6110()" (identifier "FUN_002c6110") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);" (assignment_expression "bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1)" (identifier "bVar10") (= "=") (binary_expression "bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1)" (identifier "bVar10") (& "&") (parenthesized_expression "(*(byte *)(iVar9 + 0x14c) ^ 1)" (( "(") (binary_expression "*(byte *)(iVar9 + 0x14c) ^ 1" (pointer_expression "*(byte *)(iVar9 + 0x14c)" (* "*") (cast_expression "(byte *)(iVar9 + 0x14c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x14c)" (( "(") (binary_expression "iVar9 + 0x14c" (identifier "iVar9") (+ "+") (number_literal "0x14c")) () ")")))) (^ "^") (number_literal "1")) () ")")))) (; ";")) (} "}"))) (if_statement "if (bVar10 == 0) {\n          return;\n        }" (if "if") (parenthesized_expression "(bVar10 == 0)" (( "(") (binary_expression "bVar10 == 0" (identifier "bVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          return;\n        }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (iVar9 + 4U < 4) {\n          return;\n        }\n      }" (else "else") (compound_statement "{\n        iVar9 = **(int **)((int)register0x00000010 + -0x60);\n        *(int *)((int)register0x00000010 + -0x5c) = iVar9;\n        if (iVar9 + 4U < 4) {\n          return;\n        }\n      }" ({ "{") (expression_statement "iVar9 = **(int **)((int)register0x00000010 + -0x60);" (assignment_expression "iVar9 = **(int **)((int)register0x00000010 + -0x60)" (identifier "iVar9") (= "=") (pointer_expression "**(int **)((int)register0x00000010 + -0x60)" (* "*") (pointer_expression "*(int **)((int)register0x00000010 + -0x60)" (* "*") (cast_expression "(int **)((int)register0x00000010 + -0x60)" (( "(") (type_descriptor "int **" (primitive_type "int") (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")) () ")")))))) (; ";")) (expression_statement "*(int *)((int)register0x00000010 + -0x5c) = iVar9;" (assignment_expression "*(int *)((int)register0x00000010 + -0x5c) = iVar9" (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 "iVar9")) (; ";")) (if_statement "if (iVar9 + 4U < 4) {\n          return;\n        }" (if "if") (parenthesized_expression "(iVar9 + 4U < 4)" (( "(") (binary_expression "iVar9 + 4U < 4" (binary_expression "iVar9 + 4U" (identifier "iVar9") (+ "+") (number_literal "4U")) (< "<") (number_literal "4")) () ")")) (compound_statement "{\n          return;\n        }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")))) (expression_statement "puVar2 = *(uint **)((int)register0x00000010 + -0x60);" (assignment_expression "puVar2 = *(uint **)((int)register0x00000010 + -0x60)" (identifier "puVar2") (= "=") (pointer_expression "*(uint **)((int)register0x00000010 + -0x60)" (* "*") (cast_expression "(uint **)((int)register0x00000010 + -0x60)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (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")) () ")"))))) (; ";")) (expression_statement "uVar3 = puVar2[4];" (assignment_expression "uVar3 = puVar2[4]" (identifier "uVar3") (= "=") (subscript_expression "puVar2[4]" (identifier "puVar2") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "uVar4 = *puVar2;" (assignment_expression "uVar4 = *puVar2" (identifier "uVar4") (= "=") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) (; ";")) (expression_statement "uVar5 = puVar2[1];" (assignment_expression "uVar5 = puVar2[1]" (identifier "uVar5") (= "=") (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar6 = puVar2[2];" (assignment_expression "uVar6 = puVar2[2]" (identifier "uVar6") (= "=") (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "*(uint *)((int)register0x00000010 + -0x60) = uVar3;" (assignment_expression "*(uint *)((int)register0x00000010 + -0x60) = uVar3" (pointer_expression "*(uint *)((int)register0x00000010 + -0x60)" (* "*") (cast_expression "(uint *)((int)register0x00000010 + -0x60)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (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")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "uVar7 = puVar2[3];" (assignment_expression "uVar7 = puVar2[3]" (identifier "uVar7") (= "=") (subscript_expression "puVar2[3]" (identifier "puVar2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "*(uint *)((int)register0x00000010 + -0x24) = uVar3;" (assignment_expression "*(uint *)((int)register0x00000010 + -0x24) = uVar3" (pointer_expression "*(uint *)((int)register0x00000010 + -0x24)" (* "*") (cast_expression "(uint *)((int)register0x00000010 + -0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (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")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "uVar3 = puVar2[5];" (assignment_expression "uVar3 = puVar2[5]" (identifier "uVar3") (= "=") (subscript_expression "puVar2[5]" (identifier "puVar2") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "*(uint *)((int)register0x00000010 + -0x34) = uVar4;" (assignment_expression "*(uint *)((int)register0x00000010 + -0x34) = uVar4" (pointer_expression "*(uint *)((int)register0x00000010 + -0x34)" (* "*") (cast_expression "(uint *)((int)register0x00000010 + -0x34)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (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 "uVar4")) (; ";")) (expression_statement "*(uint *)((int)register0x00000010 + -0x5c) = uVar3;" (assignment_expression "*(uint *)((int)register0x00000010 + -0x5c) = uVar3" (pointer_expression "*(uint *)((int)register0x00000010 + -0x5c)" (* "*") (cast_expression "(uint *)((int)register0x00000010 + -0x5c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (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 "uVar3")) (; ";")) (expression_statement "*(uint *)((int)register0x00000010 + -0x20) = uVar3;" (assignment_expression "*(uint *)((int)register0x00000010 + -0x20) = uVar3" (pointer_expression "*(uint *)((int)register0x00000010 + -0x20)" (* "*") (cast_expression "(uint *)((int)register0x00000010 + -0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (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")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "uVar3 = *param_2;" (assignment_expression "uVar3 = *param_2" (identifier "uVar3") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "*(uint *)((int)register0x00000010 + -0x30) = uVar5;" (assignment_expression "*(uint *)((int)register0x00000010 + -0x30) = uVar5" (pointer_expression "*(uint *)((int)register0x00000010 + -0x30)" (* "*") (cast_expression "(uint *)((int)register0x00000010 + -0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (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")) () ")")))) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "*puVar2 = uVar3;" (assignment_expression "*puVar2 = uVar3" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "uVar3 = param_2[1];" (assignment_expression "uVar3 = param_2[1]" (identifier "uVar3") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*(uint *)((int)register0x00000010 + -0x2c) = uVar6;" (assignment_expression "*(uint *)((int)register0x00000010 + -0x2c) = uVar6" (pointer_expression "*(uint *)((int)register0x00000010 + -0x2c)" (* "*") (cast_expression "(uint *)((int)register0x00000010 + -0x2c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (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 "uVar6")) (; ";")) (expression_statement "puVar2[1] = uVar3;" (assignment_expression "puVar2[1] = uVar3" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "uVar3 = param_2[2];" (assignment_expression "uVar3 = param_2[2]" (identifier "uVar3") (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "*(uint *)((int)register0x00000010 + -0x28) = uVar7;" (assignment_expression "*(uint *)((int)register0x00000010 + -0x28) = uVar7" (pointer_expression "*(uint *)((int)register0x00000010 + -0x28)" (* "*") (cast_expression "(uint *)((int)register0x00000010 + -0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (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 "uVar7")) (; ";")) (expression_statement "puVar2[2] = uVar3;" (assignment_expression "puVar2[2] = uVar3" (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "puVar2[3] = param_2[3];" (assignment_expression "puVar2[3] = param_2[3]" (subscript_expression "puVar2[3]" (identifier "puVar2") ([ "[") (number_literal "3") (] "]")) (= "=") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "puVar2[4] = param_2[4];" (assignment_expression "puVar2[4] = param_2[4]" (subscript_expression "puVar2[4]" (identifier "puVar2") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "puVar2[5] = param_2[5];" (assignment_expression "puVar2[5] = param_2[5]" (subscript_expression "puVar2[5]" (identifier "puVar2") ([ "[") (number_literal "5") (] "]")) (= "=") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "*param_2 = uVar4;" (assignment_expression "*param_2 = uVar4" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "uVar3 = *(uint *)((int)register0x00000010 + -0x60);" (assignment_expression "uVar3 = *(uint *)((int)register0x00000010 + -0x60)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)((int)register0x00000010 + -0x60)" (* "*") (cast_expression "(uint *)((int)register0x00000010 + -0x60)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (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")) () ")"))))) (; ";")) (expression_statement "param_2[1] = uVar5;" (assignment_expression "param_2[1] = uVar5" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "param_2[2] = uVar6;" (assignment_expression "param_2[2] = uVar6" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "param_2[3] = uVar7;" (assignment_expression "param_2[3] = uVar7" (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "param_2[4] = uVar3;" (assignment_expression "param_2[4] = uVar3" (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "param_2[5] = *(uint *)((int)register0x00000010 + -0x5c);" (assignment_expression "param_2[5] = *(uint *)((int)register0x00000010 + -0x5c)" (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]")) (= "=") (pointer_expression "*(uint *)((int)register0x00000010 + -0x5c)" (* "*") (cast_expression "(uint *)((int)register0x00000010 + -0x5c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (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")) () ")"))))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (iVar1 < iVar9) {\n      *(int *)((int)register0x00000010 + -0x5c) = iVar9 / 2;\n      iVar8 = *(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18;\n      *(int *)((int)register0x00000010 + -0x48) = iVar8;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x7c) = iVar8;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae60;\n      FUN_000b50e0();\n      *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x40);\n      param_1 = *(int *)((int)register0x00000010 + -0x40) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x58) = (param_1 >> 3) * -0x55555555;\n    }\n    else {\n      iVar8 = iVar1 / 2;\n      *(int *)((int)register0x00000010 + -0x58) = iVar8;\n      param_1 = iVar8 * 0x18;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6;\n      *(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2;\n      FUN_000b4f60();\n      *(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x5c) =\n           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555;\n    }" (if "if") (parenthesized_expression "(iVar1 < iVar9)" (( "(") (binary_expression "iVar1 < iVar9" (identifier "iVar1") (< "<") (identifier "iVar9")) () ")")) (compound_statement "{\n      *(int *)((int)register0x00000010 + -0x5c) = iVar9 / 2;\n      iVar8 = *(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18;\n      *(int *)((int)register0x00000010 + -0x48) = iVar8;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x7c) = iVar8;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae60;\n      FUN_000b50e0();\n      *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x40);\n      param_1 = *(int *)((int)register0x00000010 + -0x40) - (int)param_2;\n      *(int *)((int)register0x00000010 + -0x58) = (param_1 >> 3) * -0x55555555;\n    }" ({ "{") (expression_statement "*(int *)((int)register0x00000010 + -0x5c) = iVar9 / 2;" (assignment_expression "*(int *)((int)register0x00000010 + -0x5c) = iVar9 / 2" (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 "iVar9 / 2" (identifier "iVar9") (/ "/") (number_literal "2"))) (; ";")) (expression_statement "iVar8 = *(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18;" (assignment_expression "iVar8 = *(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18" (identifier "iVar8") (= "=") (binary_expression "*(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18" (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")) () ")")))) (+ "+") (binary_expression "(iVar9 / 2) * 0x18" (parenthesized_expression "(iVar9 / 2)" (( "(") (binary_expression "iVar9 / 2" (identifier "iVar9") (/ "/") (number_literal "2")) () ")")) (* "*") (number_literal "0x18")))) (; ";")) (expression_statement "*(int *)((int)register0x00000010 + -0x48) = iVar8;" (assignment_expression "*(int *)((int)register0x00000010 + -0x48) = iVar8" (pointer_expression "*(int *)((int)register0x00000010 + -0x48)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x48)" (( "(") (binary_expression "(int)register0x00000010 + -0x48" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x48")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "*(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);" (assignment_expression "*(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40)" (pointer_expression "*(int **)((int)register0x00000010 + -0x44)" (* "*") (cast_expression "(int **)((int)register0x00000010 + -0x44)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x44)" (( "(") (binary_expression "(int)register0x00000010 + -0x44" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x44")) () ")")))) (= "=") (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")) () ")")))) (; ";")) (expression_statement "*(int *)((int)register0x00000010 + -0x7c) = iVar8;" (assignment_expression "*(int *)((int)register0x00000010 + -0x7c) = iVar8" (pointer_expression "*(int *)((int)register0x00000010 + -0x7c)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x7c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x7c)" (( "(") (binary_expression "(int)register0x00000010 + -0x7c" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x7c")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae60;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae60" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x80)" (* "*") (cast_expression "(undefined4 *)((int)register0x00000010 + -0x80)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x80)" (( "(") (binary_expression "(int)register0x00000010 + -0x80" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x80")) () ")")))) (= "=") (number_literal "0xcae60")) (; ";")) (expression_statement "FUN_000b50e0();" (call_expression "FUN_000b50e0()" (identifier "FUN_000b50e0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x40);" (assignment_expression "*(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x40)" (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")) () ")")))) (= "=") (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")) () ")"))))) (; ";")) (expression_statement "param_1 = *(int *)((int)register0x00000010 + -0x40) - (int)param_2;" (assignment_expression "param_1 = *(int *)((int)register0x00000010 + -0x40) - (int)param_2" (identifier "param_1") (= "=") (binary_expression "*(int *)((int)register0x00000010 + -0x40) - (int)param_2" (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")) () ")")))) (- "-") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")))) (; ";")) (expression_statement "*(int *)((int)register0x00000010 + -0x58) = (param_1 >> 3) * -0x55555555;" (assignment_expression "*(int *)((int)register0x00000010 + -0x58) = (param_1 >> 3) * -0x55555555" (pointer_expression "*(int *)((int)register0x00000010 + -0x58)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (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 "(param_1 >> 3) * -0x55555555" (parenthesized_expression "(param_1 >> 3)" (( "(") (binary_expression "param_1 >> 3" (identifier "param_1") (>> ">>") (number_literal "3")) () ")")) (* "*") (number_literal "-0x55555555"))) (; ";")) (} "}")) (else_clause "else {\n      iVar8 = iVar1 / 2;\n      *(int *)((int)register0x00000010 + -0x58) = iVar8;\n      param_1 = iVar8 * 0x18;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6;\n      *(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2;\n      FUN_000b4f60();\n      *(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x5c) =\n           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555;\n    }" (else "else") (compound_statement "{\n      iVar8 = iVar1 / 2;\n      *(int *)((int)register0x00000010 + -0x58) = iVar8;\n      param_1 = iVar8 * 0x18;\n      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);\n      *(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6;\n      *(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6;\n      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2;\n      FUN_000b4f60();\n      *(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40);\n      *(int *)((int)register0x00000010 + -0x5c) =\n           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555;\n    }" ({ "{") (expression_statement "iVar8 = iVar1 / 2;" (assignment_expression "iVar8 = iVar1 / 2" (identifier "iVar8") (= "=") (binary_expression "iVar1 / 2" (identifier "iVar1") (/ "/") (number_literal "2"))) (; ";")) (expression_statement "*(int *)((int)register0x00000010 + -0x58) = iVar8;" (assignment_expression "*(int *)((int)register0x00000010 + -0x58) = iVar8" (pointer_expression "*(int *)((int)register0x00000010 + -0x58)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (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")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "param_1 = iVar8 * 0x18;" (assignment_expression "param_1 = iVar8 * 0x18" (identifier "param_1") (= "=") (binary_expression "iVar8 * 0x18" (identifier "iVar8") (* "*") (number_literal "0x18"))) (; ";")) (expression_statement "*(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);" (assignment_expression "*(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40)" (pointer_expression "*(int **)((int)register0x00000010 + -0x44)" (* "*") (cast_expression "(int **)((int)register0x00000010 + -0x44)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x44)" (( "(") (binary_expression "(int)register0x00000010 + -0x44" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x44")) () ")")))) (= "=") (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")) () ")")))) (; ";")) (expression_statement "*(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6;" (assignment_expression "*(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6" (pointer_expression "*(uint **)((int)register0x00000010 + -0x54)" (* "*") (cast_expression "(uint **)((int)register0x00000010 + -0x54)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (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 "param_2 + iVar8 * 6" (identifier "param_2") (+ "+") (binary_expression "iVar8 * 6" (identifier "iVar8") (* "*") (number_literal "6")))) (; ";")) (expression_statement "*(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6;" (assignment_expression "*(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6" (pointer_expression "*(uint **)((int)register0x00000010 + -0x7c)" (* "*") (cast_expression "(uint **)((int)register0x00000010 + -0x7c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x7c)" (( "(") (binary_expression "(int)register0x00000010 + -0x7c" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x7c")) () ")")))) (= "=") (binary_expression "param_2 + iVar8 * 6" (identifier "param_2") (+ "+") (binary_expression "iVar8 * 6" (identifier "iVar8") (* "*") (number_literal "6")))) (; ";")) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x80)" (* "*") (cast_expression "(undefined4 *)((int)register0x00000010 + -0x80)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x80)" (( "(") (binary_expression "(int)register0x00000010 + -0x80" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x80")) () ")")))) (= "=") (number_literal "0xcada2")) (; ";")) (expression_statement "FUN_000b4f60();" (call_expression "FUN_000b4f60()" (identifier "FUN_000b4f60") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40);" (assignment_expression "*(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40)" (pointer_expression "*(int *)((int)register0x00000010 + -0x48)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x48)" (( "(") (binary_expression "(int)register0x00000010 + -0x48" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x48")) () ")")))) (= "=") (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")) () ")"))))) (; ";")) (expression_statement "*(int *)((int)register0x00000010 + -0x5c) =\n           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555;" (assignment_expression "*(int *)((int)register0x00000010 + -0x5c) =\n           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555" (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 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3) * -0x55555555" (parenthesized_expression "(*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3)" (( "(") (binary_expression "*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>\n           3" (binary_expression "*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60)" (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")) () ")")))) (- "-") (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")) () ")"))))) (>> ">>") (number_literal "3")) () ")")) (* "*") (number_literal "-0x55555555"))) (; ";")) (} "}")))) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x7c) = 0;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x7c) = 0" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x7c)" (* "*") (cast_expression "(undefined4 *)((int)register0x00000010 + -0x7c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x7c)" (( "(") (binary_expression "(int)register0x00000010 + -0x7c" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x7c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x54);" (assignment_expression "*(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x54)" (pointer_expression "*(int *)((int)register0x00000010 + -0x80)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x80)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x80)" (( "(") (binary_expression "(int)register0x00000010 + -0x80" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x80")) () ")")))) (= "=") (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")) () ")"))))) (; ";")) (expression_statement "*(uint **)((int)register0x00000010 + -0x84) = param_2;" (assignment_expression "*(uint **)((int)register0x00000010 + -0x84) = param_2" (pointer_expression "*(uint **)((int)register0x00000010 + -0x84)" (* "*") (cast_expression "(uint **)((int)register0x00000010 + -0x84)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x84)" (( "(") (binary_expression "(int)register0x00000010 + -0x84" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x84")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(int *)((int)register0x00000010 + -0x88) = *(int *)((int)register0x00000010 + -0x48);" (assignment_expression "*(int *)((int)register0x00000010 + -0x88) = *(int *)((int)register0x00000010 + -0x48)" (pointer_expression "*(int *)((int)register0x00000010 + -0x88)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x88)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x88)" (( "(") (binary_expression "(int)register0x00000010 + -0x88" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x88")) () ")")))) (= "=") (pointer_expression "*(int *)((int)register0x00000010 + -0x48)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x48)" (( "(") (binary_expression "(int)register0x00000010 + -0x48" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x48")) () ")"))))) (; ";")) (expression_statement "param_1 = param_1 + *(int *)((int)register0x00000010 + -0x48);" (assignment_expression "param_1 = param_1 + *(int *)((int)register0x00000010 + -0x48)" (identifier "param_1") (= "=") (binary_expression "param_1 + *(int *)((int)register0x00000010 + -0x48)" (identifier "param_1") (+ "+") (pointer_expression "*(int *)((int)register0x00000010 + -0x48)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x48)" (( "(") (binary_expression "(int)register0x00000010 + -0x48" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x48")) () ")")))))) (; ";")) (expression_statement "*(int *)((int)register0x00000010 + -0x8c) = *(int *)((int)register0x00000010 + -0x44);" (assignment_expression "*(int *)((int)register0x00000010 + -0x8c) = *(int *)((int)register0x00000010 + -0x44)" (pointer_expression "*(int *)((int)register0x00000010 + -0x8c)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x8c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x8c)" (( "(") (binary_expression "(int)register0x00000010 + -0x8c" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x8c")) () ")")))) (= "=") (pointer_expression "*(int *)((int)register0x00000010 + -0x44)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x44)" (( "(") (binary_expression "(int)register0x00000010 + -0x44" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x44")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x90) = 0xcadd8;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x90) = 0xcadd8" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x90)" (* "*") (cast_expression "(undefined4 *)((int)register0x00000010 + -0x90)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x90)" (( "(") (binary_expression "(int)register0x00000010 + -0x90" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x90")) () ")")))) (= "=") (number_literal "0xcadd8")) (; ";")) (expression_statement "FUN_00104ec0();" (call_expression "FUN_00104ec0()" (identifier "FUN_00104ec0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "bVar10 = *(byte *)((int)register0x00000010 + -0x51);" (assignment_expression "bVar10 = *(byte *)((int)register0x00000010 + -0x51)" (identifier "bVar10") (= "=") (pointer_expression "*(byte *)((int)register0x00000010 + -0x51)" (* "*") (cast_expression "(byte *)((int)register0x00000010 + -0x51)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x51)" (( "(") (binary_expression "(int)register0x00000010 + -0x51" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x51")) () ")"))))) (; ";")) (expression_statement "*(uint *)((int)register0x00000010 + -0x78) = (uint)bVar10;" (assignment_expression "*(uint *)((int)register0x00000010 + -0x78) = (uint)bVar10" (pointer_expression "*(uint *)((int)register0x00000010 + -0x78)" (* "*") (cast_expression "(uint *)((int)register0x00000010 + -0x78)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x78)" (( "(") (binary_expression "(int)register0x00000010 + -0x78" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x78")) () ")")))) (= "=") (cast_expression "(uint)bVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar10"))) (; ";")) (expression_statement "*(int *)((int)register0x00000010 + -0x7c) = *(int *)((int)register0x00000010 + -0x5c);" (assignment_expression "*(int *)((int)register0x00000010 + -0x7c) = *(int *)((int)register0x00000010 + -0x5c)" (pointer_expression "*(int *)((int)register0x00000010 + -0x7c)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x7c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x7c)" (( "(") (binary_expression "(int)register0x00000010 + -0x7c" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x7c")) () ")")))) (= "=") (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")) () ")"))))) (; ";")) (expression_statement "*(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x60);" (assignment_expression "*(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x60)" (pointer_expression "*(int *)((int)register0x00000010 + -0x80)" (* "*") (cast_expression "(int *)((int)register0x00000010 + -0x80)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x80)" (( "(") (binary_expression "(int)register0x00000010 + -0x80" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x80")) () ")")))) (= "=") (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")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)((int)register0x00000010 + -0x84) = 0xcadf6;" (assignment_expression "*(undefined4 *)((int)register0x00000010 + -0x84) = 0xcadf6" (pointer_expression "*(undefined4 *)((int)register0x00000010 + -0x84)" (* "*") (cast_expression "(undefined4 *)((int)register0x00000010 + -0x84)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000010 + -0x84)" (( "(") (binary_expression "(int)register0x00000010 + -0x84" (cast_expression "(int)register0x00000010" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000010")) (+ "+") (number_literal "-0x84")) () ")")))) (= "=") (number_literal "0xcadf6")) (; ";")) (expression_statement "FUN_000cad20();" (call_expression "FUN_000cad20()" (identifier "FUN_000cad20") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "param_3 = *(int *)((int)register0x00000010 + -0x50);" (assignment_expression "param_3 = *(int *)((int)register0x00000010 + -0x50)" (identifier "param_3") (= "=") (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")) () ")"))))) (; ";")) (expression_statement "param_2 = *(uint **)((int)register0x00000010 + -0x58);" (assignment_expression "param_2 = *(uint **)((int)register0x00000010 + -0x58)" (identifier "param_2") (= "=") (pointer_expression "*(uint **)((int)register0x00000010 + -0x58)" (* "*") (cast_expression "(uint **)((int)register0x00000010 + -0x58)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (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")) () ")"))))) (; ";")) (expression_statement "*(byte *)((int)register0x00000010 + 8) = bVar10;" (assignment_expression "*(byte *)((int)register0x00000010 + 8) = bVar10" (pointer_expression "*(byte *)((int)register0x00000010 + 8)" (* "*") (cast_expression "(byte *)((int)register0x00000010 + 8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (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 "bVar10")) (; ";")) (expression_statement "*(int *)((int)register0x00000010 + 4) = iVar1 - *(int *)((int)register0x00000010 + -0x5c);" (assignment_expression "*(int *)((int)register0x00000010 + 4) = iVar1 - *(int *)((int)register0x00000010 + -0x5c)" (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 "iVar1 - *(int *)((int)register0x00000010 + -0x5c)" (identifier "iVar1") (- "-") (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")) () ")")))))) (; ";")) (expression_statement "*(int *)register0x00000010 = iVar9 - *(int *)((int)register0x00000010 + -0x60);" (assignment_expression "*(int *)register0x00000010 = iVar9 - *(int *)((int)register0x00000010 + -0x60)" (pointer_expression "*(int *)register0x00000010" (* "*") (cast_expression "(int *)register0x00000010" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "register0x00000010"))) (= "=") (binary_expression "iVar9 - *(int *)((int)register0x00000010 + -0x60)" (identifier "iVar9") (- "-") (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")) () ")")))))) (; ";")) (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")) () ")")))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* 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::Input_section*,
   std::vector<gold::Output_section::Input_section> >, int,
   __gnu_cxx::__ops::_Iter_comp_iter<(anonymous namespace)::Sort_toc_sections<false> > > */

void std::
     __merge_without_buffer<__gnu_cxx::__normal_iterator<gold::Output_section::Input_section*,_std::vector<gold::Output_section::Input_section>_>,_int,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Sort_toc_sections<false>_>_>
               (void)

{
  Input_section __tmp;
  
}


(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: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) 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)) (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: (break_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: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (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: (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: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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)))))))) (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: (number_literal) right: (binary_expression left: (identifier) 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 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 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 (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (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)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement)))) alternative: (else_clause (compound_statement (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)))))))) (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: (number_literal)) right: (number_literal))) consequence: (compound_statement (return_statement)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (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: (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: (identifier) right: (pointer_expression argument: (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: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (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: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (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: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (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))))))) (return_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)) 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 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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) 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: (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 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: (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: (binary_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: (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: (binary_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: (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: (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: (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: (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))) 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: (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 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: (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: (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: (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: (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: (cast_expression type: (type_descriptor type: (type_identifier)) 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: (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: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (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: (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: (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: (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)))))))) (return_statement))))

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

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

{
  int iVar1;
  uint *puVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  int iVar8;
  int iVar9;
  undefined4 unaff_EBX;
  undefined4 unaff_EBP;
  byte bVar10;
  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) = 0xcad29;
    iVar9 = *(int *)((int)register0x00000010 + 4);
    iVar1 = *(int *)((int)register0x00000010 + 8);
    *(int *)((int)register0x00000010 + -0x60) = param_1;
    *(char *)((int)register0x00000010 + -0x4d) = (char)*(int *)((int)register0x00000010 + 0xc);
    if (iVar9 == 0) {
      return;
    }
    if (iVar1 == 0) break;
    *(int *)((int)register0x00000010 + -0x4c) = param_3;
    if (iVar9 + iVar1 == 2) {
      if (*param_2 < 0xfffffffc) {
        *(uint **)((int)register0x00000010 + -0x7c) = param_2;
        *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae9a;
        iVar9 = FUN_002c6110();
        bVar10 = *(byte *)(iVar9 + 0x14c);
        iVar9 = **(int **)((int)register0x00000010 + -0x60);
        *(int *)((int)register0x00000010 + -0x5c) = iVar9;
        if (3 < iVar9 + 4U) {
          *(int **)((int)register0x00000010 + -0x7c) = *(int **)((int)register0x00000010 + -0x60);
          *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcaebf;
          iVar9 = FUN_002c6110();
          bVar10 = bVar10 & (*(byte *)(iVar9 + 0x14c) ^ 1);
        }
        if (bVar10 == 0) {
          return;
        }
      }
      else {
        iVar9 = **(int **)((int)register0x00000010 + -0x60);
        *(int *)((int)register0x00000010 + -0x5c) = iVar9;
        if (iVar9 + 4U < 4) {
          return;
        }
      }
      puVar2 = *(uint **)((int)register0x00000010 + -0x60);
      uVar3 = puVar2[4];
      uVar4 = *puVar2;
      uVar5 = puVar2[1];
      uVar6 = puVar2[2];
      *(uint *)((int)register0x00000010 + -0x60) = uVar3;
      uVar7 = puVar2[3];
      *(uint *)((int)register0x00000010 + -0x24) = uVar3;
      uVar3 = puVar2[5];
      *(uint *)((int)register0x00000010 + -0x34) = uVar4;
      *(uint *)((int)register0x00000010 + -0x5c) = uVar3;
      *(uint *)((int)register0x00000010 + -0x20) = uVar3;
      uVar3 = *param_2;
      *(uint *)((int)register0x00000010 + -0x30) = uVar5;
      *puVar2 = uVar3;
      uVar3 = param_2[1];
      *(uint *)((int)register0x00000010 + -0x2c) = uVar6;
      puVar2[1] = uVar3;
      uVar3 = param_2[2];
      *(uint *)((int)register0x00000010 + -0x28) = uVar7;
      puVar2[2] = uVar3;
      puVar2[3] = param_2[3];
      puVar2[4] = param_2[4];
      puVar2[5] = param_2[5];
      *param_2 = uVar4;
      uVar3 = *(uint *)((int)register0x00000010 + -0x60);
      param_2[1] = uVar5;
      param_2[2] = uVar6;
      param_2[3] = uVar7;
      param_2[4] = uVar3;
      param_2[5] = *(uint *)((int)register0x00000010 + -0x5c);
      return;
    }
    if (iVar1 < iVar9) {
      *(int *)((int)register0x00000010 + -0x5c) = iVar9 / 2;
      iVar8 = *(int *)((int)register0x00000010 + -0x60) + (iVar9 / 2) * 0x18;
      *(int *)((int)register0x00000010 + -0x48) = iVar8;
      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);
      *(int *)((int)register0x00000010 + -0x7c) = iVar8;
      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcae60;
      FUN_000b50e0();
      *(int *)((int)register0x00000010 + -0x54) = *(int *)((int)register0x00000010 + -0x40);
      param_1 = *(int *)((int)register0x00000010 + -0x40) - (int)param_2;
      *(int *)((int)register0x00000010 + -0x58) = (param_1 >> 3) * -0x55555555;
    }
    else {
      iVar8 = iVar1 / 2;
      *(int *)((int)register0x00000010 + -0x58) = iVar8;
      param_1 = iVar8 * 0x18;
      *(int **)((int)register0x00000010 + -0x44) = (int *)((int)register0x00000010 + -0x40);
      *(uint **)((int)register0x00000010 + -0x54) = param_2 + iVar8 * 6;
      *(uint **)((int)register0x00000010 + -0x7c) = param_2 + iVar8 * 6;
      *(undefined4 *)((int)register0x00000010 + -0x80) = 0xcada2;
      FUN_000b4f60();
      *(int *)((int)register0x00000010 + -0x48) = *(int *)((int)register0x00000010 + -0x40);
      *(int *)((int)register0x00000010 + -0x5c) =
           (*(int *)((int)register0x00000010 + -0x40) - *(int *)((int)register0x00000010 + -0x60) >>
           3) * -0x55555555;
    }
    *(undefined4 *)((int)register0x00000010 + -0x7c) = 0;
    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x54);
    *(uint **)((int)register0x00000010 + -0x84) = param_2;
    *(int *)((int)register0x00000010 + -0x88) = *(int *)((int)register0x00000010 + -0x48);
    param_1 = param_1 + *(int *)((int)register0x00000010 + -0x48);
    *(int *)((int)register0x00000010 + -0x8c) = *(int *)((int)register0x00000010 + -0x44);
    *(undefined4 *)((int)register0x00000010 + -0x90) = 0xcadd8;
    FUN_00104ec0();
    bVar10 = *(byte *)((int)register0x00000010 + -0x51);
    *(uint *)((int)register0x00000010 + -0x78) = (uint)bVar10;
    *(int *)((int)register0x00000010 + -0x7c) = *(int *)((int)register0x00000010 + -0x5c);
    *(int *)((int)register0x00000010 + -0x80) = *(int *)((int)register0x00000010 + -0x60);
    *(undefined4 *)((int)register0x00000010 + -0x84) = 0xcadf6;
    MASKED();
    param_3 = *(int *)((int)register0x00000010 + -0x50);
    param_2 = *(uint **)((int)register0x00000010 + -0x58);
    *(byte *)((int)register0x00000010 + 8) = bVar10;
    *(int *)((int)register0x00000010 + 4) = iVar1 - *(int *)((int)register0x00000010 + -0x5c);
    *(int *)register0x00000010 = iVar9 - *(int *)((int)register0x00000010 + -0x60);
    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);
  }
  return;
}

