
int ChooseLeaf(Rtree *pRtree,RtreeCell *pCell,int iHeight,RtreeNode **ppLeaf)

{
  int iVar1;
  byte bVar2;
  byte bVar3;
  double dVar4;
  Rtree *pRtree_00;
  int iVar5;
  uint uVar6;
  int extraout_ECX;
  uint iCell;
  int in_GS_OFFSET;
  undefined8 uVar7;
  RtreeDValue RVar8;
  RtreeDValue RVar9;
  RtreeNode **in_stack_ffffff1c;
  double local_c4;
  double local_bc;
  RtreeNode *local_ac;
  int local_a0;
  RtreeNode *pNode;
  RtreeNode *pChild;
  RtreeCell cell;
  RtreeCell cell_1;
  
  uVar7 = __x86_get_pc_thunk_di();
  pRtree_00 = (Rtree *)uVar7;
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  pNode = (RtreeNode *)0x0;
  iVar5 = nodeAcquire(pRtree_00,ZEXT48(&pNode) << 0x20,(RtreeNode *)0x1,in_stack_ffffff1c);
  if (iVar5 == 0) {
    if (pRtree_00->iDepth == extraout_ECX || pRtree_00->iDepth - extraout_ECX < 0) {
      iVar5 = 0;
    }
    else {
      local_a0 = 0;
      do {
        uVar6 = (uint)CONCAT11(pNode->zData[2],pNode->zData[3]);
        if (uVar6 == 0) {
          local_ac = (RtreeNode *)0x0;
        }
        else {
          iCell = 0;
          local_ac = (RtreeNode *)0x0;
          local_bc = 0.0;
          local_c4 = 0.0;
          do {
            nodeGetCell(pRtree_00,pNode,iCell,&cell);
            bVar2 = pRtree_00->eCoordType;
            cell_1.iRowid._0_4_ = (RtreeNode *)cell.iRowid;
            cell_1.iRowid._4_4_ = cell.iRowid._4_4_;
            cell_1.aCoord[0] = cell.aCoord[0];
            cell_1.aCoord[1] = cell.aCoord[1];
            cell_1.aCoord[2] = cell.aCoord[2];
            cell_1.aCoord[3] = cell.aCoord[3];
            cell_1.aCoord[4] = cell.aCoord[4];
            cell_1.aCoord[5] = cell.aCoord[5];
            cell_1.aCoord[6] = cell.aCoord[6];
            cell_1.aCoord[7] = cell.aCoord[7];
            cell_1.aCoord[8] = cell.aCoord[8];
            cell_1.aCoord[9] = cell.aCoord[9];
            RVar8 = cellArea((Rtree *)(uint)pRtree_00->nDim,(RtreeCell *)(uint)bVar2,
                             (Rtree *)&cell_1);
            cellUnion((Rtree *)&pRtree_00->nDim2,(RtreeCell *)(uint)bVar2,&cell_1,
                      (Rtree *)((ulonglong)uVar7 >> 0x20));
            bVar2 = pRtree_00->nDim;
            bVar3 = pRtree_00->eCoordType;
            RVar9 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell_1);
            dVar4 = RVar9 - RVar8;
            RVar8 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell);
            if (((iCell == 0) || (dVar4 < local_c4)) || ((dVar4 == local_c4 && (RVar8 < local_bc))))
            {
              local_ac = (RtreeNode *)cell.iRowid;
              local_c4 = dVar4;
              local_bc = RVar8;
            }
            iCell = iCell + 1;
          } while (iCell != uVar6);
        }
        sqlite3_free((void *)0x0);
        iVar5 = nodeAcquire(pRtree_00,CONCAT44(&pChild,pNode),local_ac,in_stack_ffffff1c);
        nodeRelease(pRtree_00,pNode);
        pNode = pChild;
        local_a0 = local_a0 + 1;
      } while ((iVar5 == 0) && (local_a0 < pRtree_00->iDepth - extraout_ECX));
    }
  }
  (pRtree->base).pModule = (sqlite3_module *)pNode;
  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {
    return iVar5;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
}



int FUN_000ed4e0(int *param_1)

{
  double dVar1;
  int iVar2;
  uint uVar3;
  int extraout_ECX;
  uint uVar4;
  int in_GS_OFFSET;
  longdouble lVar5;
  longdouble lVar6;
  undefined8 uVar7;
  double local_c4;
  double local_bc;
  int local_a0;
  int local_88;
  int local_84;
  undefined4 local_80;
  undefined4 local_7c;
  undefined4 local_78;
  undefined4 local_74;
  undefined4 local_70;
  undefined4 local_6c;
  undefined4 local_68;
  undefined4 local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 local_58;
  undefined4 local_54;
  undefined4 local_50;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  int local_20;
  
  uVar7 = FUN_0001af1a();
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_88 = 0;
  iVar2 = FUN_000ecd60(0,&local_88);
  if (iVar2 == 0) {
    iVar2 = *(int *)((int)uVar7 + 0x1c);
    if (iVar2 == extraout_ECX || iVar2 - extraout_ECX < 0) {
      iVar2 = 0;
    }
    else {
      local_a0 = 0;
      do {
        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),
                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));
        if (uVar3 != 0) {
          uVar4 = 0;
          local_bc = 0.0;
          local_c4 = 0.0;
          do {
            FUN_00025480(&local_80);
            local_50 = local_80;
            local_4c = local_7c;
            local_48 = local_78;
            local_44 = local_74;
            local_40 = local_70;
            local_3c = local_6c;
            local_38 = local_68;
            local_34 = local_64;
            local_30 = local_60;
            local_2c = local_5c;
            local_28 = local_58;
            local_24 = local_54;
            lVar5 = (longdouble)FUN_00033590();
            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));
            lVar6 = (longdouble)FUN_00033590();
            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);
            lVar5 = (longdouble)FUN_00033590();
            if (((uVar4 == 0) || (dVar1 < local_c4)) ||
               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {
              local_bc = (double)lVar5;
              local_c4 = dVar1;
            }
            uVar4 = uVar4 + 1;
          } while (uVar4 != uVar3);
        }
        FUN_000264d0(0);
        iVar2 = FUN_000ecd60(local_88,&local_84);
        FUN_000d2b30();
        local_88 = local_84;
        local_a0 = local_a0 + 1;
      } while ((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX));
    }
  }
  *param_1 = local_88;
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return iVar2;
  }
                    /* WARNING: Subroutine does not return */
  FUN_000f6410();
}


PUSH EBP
PUSH EDI
CALL 0x0001af1a
ADD EDI,0x5d9ed
PUSH ESI
MOV ESI,EAX
PUSH EBX
SUB ESP,0xd4
MOV EAX,dword ptr [ESP + 0xe8]
MOV dword ptr [ESP + 0x34],EDX
MOV EDX,0x1
MOV dword ptr [ESP + 0x48],EDI
MOV EDI,ECX
MOV dword ptr [ESP + 0x50],ECX
XOR ECX,ECX
MOV dword ptr [ESP + 0x54],EAX
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0xc4],EAX
XOR EAX,EAX
LEA EAX,[ESP + 0x5c]
MOV dword ptr [ESP + 0x5c],0x0
PUSH EAX
MOV EAX,ESI
PUSH 0x0
CALL 0x000ecd60
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x54]
TEST EAX,EAX
JNZ 0x000ed7dd
MOV EAX,dword ptr [ESI + 0x1c]
SUB EAX,EDI
TEST EAX,EAX
JLE 0x000ed7e1
LEA EAX,[ESP + 0x58]
MOV dword ptr [ESP + 0x3c],0x0
MOV dword ptr [ESP + 0x44],EAX
LEA EAX,[ESI + 0x15]
MOV dword ptr [ESP + 0x38],EAX
NOP
MOV ECX,dword ptr [EDX + 0x14]
MOVZX EAX,byte ptr [ECX + 0x2]
MOVZX ECX,byte ptr [ECX + 0x3]
SHL EAX,0x8
ADD EAX,ECX
MOV dword ptr [ESP + 0x28],EAX
JZ 0x000ed7c8
FLDZ
LEA EAX,[ESP + 0x5c]
XOR EDI,EDI
MOV dword ptr [ESP + 0x30],0x0
FST qword ptr [ESP + 0x20]
MOV dword ptr [ESP + 0xc],EAX
LEA EAX,[ESP + 0x8c]
FSTP qword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x34],0x0
MOV dword ptr [ESP + 0x8],EAX
JMP 0x000ed5c4
MOV EDX,dword ptr [ESP + 0x54]
SUB ESP,0xc
MOV ECX,EDI
MOV EAX,ESI
PUSH dword ptr [ESP + 0x18]
CALL 0x00025480
MOV EAX,dword ptr [ESP + 0x6c]
MOV EBP,dword ptr [ESP + 0x18]
MOVZX EBX,byte ptr [ESI + 0x16]
MOV dword ptr [ESP + 0x9c],EAX
MOV EAX,dword ptr [ESP + 0x70]
MOV ECX,EBP
MOV EDX,EBX
MOV dword ptr [ESP + 0xa0],EAX
MOV EAX,dword ptr [ESP + 0x74]
MOV dword ptr [ESP + 0xa4],EAX
MOV EAX,dword ptr [ESP + 0x78]
MOV dword ptr [ESP + 0xa8],EAX
MOV EAX,dword ptr [ESP + 0x7c]
MOV dword ptr [ESP + 0xac],EAX
MOV EAX,dword ptr [ESP + 0x80]
MOV dword ptr [ESP + 0xb0],EAX
MOV EAX,dword ptr [ESP + 0x84]
MOV dword ptr [ESP + 0xb4],EAX
MOV EAX,dword ptr [ESP + 0x88]
MOV dword ptr [ESP + 0xb8],EAX
MOV EAX,dword ptr [ESP + 0x8c]
MOV dword ptr [ESP + 0xbc],EAX
MOV EAX,dword ptr [ESP + 0x90]
MOV dword ptr [ESP + 0xc0],EAX
MOV EAX,dword ptr [ESP + 0x94]
MOV dword ptr [ESP + 0xc4],EAX
MOV EAX,dword ptr [ESP + 0x98]
MOV dword ptr [ESP + 0xc8],EAX
MOVZX EAX,byte ptr [ESI + 0x14]
CALL 0x00033590
MOV EDX,EBX
FSTP qword ptr [ESP + 0x20]
POP ECX
MOV ECX,EBP
PUSH dword ptr [ESP + 0x38]
MOV EAX,dword ptr [ESP + 0x48]
MOV dword ptr [ESP + 0x18],EBP
CALL 0x00033700
MOVZX EBX,byte ptr [ESI + 0x14]
MOVZX EBP,byte ptr [ESI + 0x16]
MOV ECX,dword ptr [ESP + 0x18]
MOV EDX,EBP
MOV EAX,EBX
CALL 0x00033590
FLD qword ptr [ESP + 0x20]
MOV ECX,dword ptr [ESP + 0x1c]
MOV EDX,EBP
MOV EAX,EBX
FSUBP
FSTP qword ptr [ESP + 0x20]
CALL 0x00033590
ADD ESP,0x10
TEST EDI,EDI
FLD qword ptr [ESP + 0x10]
JZ 0x000ed6f8
FLD qword ptr [ESP + 0x18]
FCOMI ST0,ST1
JA 0x000ed700
FXCH
FUCOMI ST0,ST1
FSTP ST1
JP 0x000ed720
JNZ 0x000ed726
FLD qword ptr [ESP + 0x20]
FCOMIP ST0,ST2
JBE 0x000ed730
FXCH
JMP 0x000ed704
FXCH
JMP 0x000ed704
FSTP ST0
FXCH
MOV EAX,dword ptr [ESP + 0x5c]
MOV EDX,dword ptr [ESP + 0x60]
FSTP qword ptr [ESP + 0x20]
FSTP qword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x30],EAX
MOV dword ptr [ESP + 0x34],EDX
JMP 0x000ed738
FSTP ST0
FSTP ST0
JMP 0x000ed738
FSTP ST0
FSTP ST0
JMP 0x000ed738
FSTP ST0
FSTP ST0
LEA ESI,[ESI]
ADD EDI,0x1
CMP EDI,dword ptr [ESP + 0x28]
JNZ 0x000ed5c0
SUB ESP,0xc
PUSH 0x0
MOV EBX,dword ptr [ESP + 0x50]
CALL 0x000264d0
POP EAX
POP EDX
PUSH dword ptr [ESP + 0x4c]
PUSH dword ptr [ESP + 0x60]
MOV EAX,ESI
MOV EDX,dword ptr [ESP + 0x40]
MOV ECX,dword ptr [ESP + 0x44]
CALL 0x000ecd60
MOV EDX,dword ptr [ESP + 0x64]
MOV EBX,EAX
MOV EAX,ESI
CALL 0x000d2b30
MOV EDX,dword ptr [ESP + 0x68]
ADD dword ptr [ESP + 0x4c],0x1
MOV EDI,dword ptr [ESP + 0x4c]
MOV dword ptr [ESP + 0x64],EDX
ADD ESP,0x10
TEST EBX,EBX
JNZ 0x000ed7a0
MOV EAX,dword ptr [ESI + 0x1c]
SUB EAX,dword ptr [ESP + 0x48]
CMP EAX,EDI
JG 0x000ed570
MOV EAX,dword ptr [ESP + 0x4c]
MOV dword ptr [EAX],EDX
MOV EAX,EBX
MOV EDI,dword ptr [ESP + 0xbc]
XOR EDI,dword ptr GS:[0x14]
JNZ 0x000ed7e5
ADD ESP,0xcc
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESP + 0x30],0x0
MOV dword ptr [ESP + 0x34],0x0
JMP 0x000ed745
MOV EBX,EAX
JMP 0x000ed7a0
XOR EBX,EBX
JMP 0x000ed7a0
CALL 0x000f6410
(translation_unit "int FUN_000ed4e0(int *param_1)\n\n{\n  double dVar1;\n  int iVar2;\n  uint uVar3;\n  int extraout_ECX;\n  uint uVar4;\n  int in_GS_OFFSET;\n  longdouble lVar5;\n  longdouble lVar6;\n  undefined8 uVar7;\n  double local_c4;\n  double local_bc;\n  int local_a0;\n  int local_88;\n  int local_84;\n  undefined4 local_80;\n  undefined4 local_7c;\n  undefined4 local_78;\n  undefined4 local_74;\n  undefined4 local_70;\n  undefined4 local_6c;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  undefined4 local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  \n  uVar7 = FUN_0001af1a();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_88 = 0;\n  iVar2 = FUN_000ecd60(0,&local_88);\n  if (iVar2 == 0) {\n    iVar2 = *(int *)((int)uVar7 + 0x1c);\n    if (iVar2 == extraout_ECX || iVar2 - extraout_ECX < 0) {\n      iVar2 = 0;\n    }\n    else {\n      local_a0 = 0;\n      do {\n        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));\n        if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }\n        FUN_000264d0(0);\n        iVar2 = FUN_000ecd60(local_88,&local_84);\n        FUN_000d2b30();\n        local_88 = local_84;\n        local_a0 = local_a0 + 1;\n      } while ((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX));\n    }\n  }\n  *param_1 = local_88;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000f6410();\n}\n\n" (function_definition "int FUN_000ed4e0(int *param_1)\n\n{\n  double dVar1;\n  int iVar2;\n  uint uVar3;\n  int extraout_ECX;\n  uint uVar4;\n  int in_GS_OFFSET;\n  longdouble lVar5;\n  longdouble lVar6;\n  undefined8 uVar7;\n  double local_c4;\n  double local_bc;\n  int local_a0;\n  int local_88;\n  int local_84;\n  undefined4 local_80;\n  undefined4 local_7c;\n  undefined4 local_78;\n  undefined4 local_74;\n  undefined4 local_70;\n  undefined4 local_6c;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  undefined4 local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  \n  uVar7 = FUN_0001af1a();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_88 = 0;\n  iVar2 = FUN_000ecd60(0,&local_88);\n  if (iVar2 == 0) {\n    iVar2 = *(int *)((int)uVar7 + 0x1c);\n    if (iVar2 == extraout_ECX || iVar2 - extraout_ECX < 0) {\n      iVar2 = 0;\n    }\n    else {\n      local_a0 = 0;\n      do {\n        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));\n        if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }\n        FUN_000264d0(0);\n        iVar2 = FUN_000ecd60(local_88,&local_84);\n        FUN_000d2b30();\n        local_88 = local_84;\n        local_a0 = local_a0 + 1;\n      } while ((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX));\n    }\n  }\n  *param_1 = local_88;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000f6410();\n}" primitive_type (function_declarator "FUN_000ed4e0(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  double dVar1;\n  int iVar2;\n  uint uVar3;\n  int extraout_ECX;\n  uint uVar4;\n  int in_GS_OFFSET;\n  longdouble lVar5;\n  longdouble lVar6;\n  undefined8 uVar7;\n  double local_c4;\n  double local_bc;\n  int local_a0;\n  int local_88;\n  int local_84;\n  undefined4 local_80;\n  undefined4 local_7c;\n  undefined4 local_78;\n  undefined4 local_74;\n  undefined4 local_70;\n  undefined4 local_6c;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  undefined4 local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  \n  uVar7 = FUN_0001af1a();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_88 = 0;\n  iVar2 = FUN_000ecd60(0,&local_88);\n  if (iVar2 == 0) {\n    iVar2 = *(int *)((int)uVar7 + 0x1c);\n    if (iVar2 == extraout_ECX || iVar2 - extraout_ECX < 0) {\n      iVar2 = 0;\n    }\n    else {\n      local_a0 = 0;\n      do {\n        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));\n        if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }\n        FUN_000264d0(0);\n        iVar2 = FUN_000ecd60(local_88,&local_84);\n        FUN_000d2b30();\n        local_88 = local_84;\n        local_a0 = local_a0 + 1;\n      } while ((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX));\n    }\n  }\n  *param_1 = local_88;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000f6410();\n}" { (declaration "double dVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "longdouble lVar5;" type_identifier identifier ;) (declaration "longdouble lVar6;" type_identifier identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "double local_c4;" primitive_type identifier ;) (declaration "double local_bc;" primitive_type identifier ;) (declaration "int local_a0;" primitive_type identifier ;) (declaration "int local_88;" primitive_type identifier ;) (declaration "int local_84;" primitive_type identifier ;) (declaration "undefined4 local_80;" type_identifier identifier ;) (declaration "undefined4 local_7c;" type_identifier identifier ;) (declaration "undefined4 local_78;" type_identifier identifier ;) (declaration "undefined4 local_74;" type_identifier identifier ;) (declaration "undefined4 local_70;" type_identifier identifier ;) (declaration "undefined4 local_6c;" type_identifier identifier ;) (declaration "undefined4 local_68;" type_identifier identifier ;) (declaration "undefined4 local_64;" type_identifier identifier ;) (declaration "undefined4 local_60;" type_identifier identifier ;) (declaration "undefined4 local_5c;" type_identifier identifier ;) (declaration "undefined4 local_58;" type_identifier identifier ;) (declaration "undefined4 local_54;" type_identifier identifier ;) (declaration "undefined4 local_50;" type_identifier identifier ;) (declaration "undefined4 local_4c;" type_identifier identifier ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "undefined4 local_40;" type_identifier identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "undefined4 local_38;" type_identifier identifier ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "uVar7 = FUN_0001af1a();" (assignment_expression "uVar7 = FUN_0001af1a()" identifier = (call_expression "FUN_0001af1a()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" identifier = number_literal) ;) (expression_statement "iVar2 = FUN_000ecd60(0,&local_88);" (assignment_expression "iVar2 = FUN_000ecd60(0,&local_88)" identifier = (call_expression "FUN_000ecd60(0,&local_88)" identifier (argument_list "(0,&local_88)" ( number_literal , (pointer_expression "&local_88" & identifier) )))) ;) (if_statement "if (iVar2 == 0) {\n    iVar2 = *(int *)((int)uVar7 + 0x1c);\n    if (iVar2 == extraout_ECX || iVar2 - extraout_ECX < 0) {\n      iVar2 = 0;\n    }\n    else {\n      local_a0 = 0;\n      do {\n        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));\n        if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }\n        FUN_000264d0(0);\n        iVar2 = FUN_000ecd60(local_88,&local_84);\n        FUN_000d2b30();\n        local_88 = local_84;\n        local_a0 = local_a0 + 1;\n      } while ((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX));\n    }\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar2 = *(int *)((int)uVar7 + 0x1c);\n    if (iVar2 == extraout_ECX || iVar2 - extraout_ECX < 0) {\n      iVar2 = 0;\n    }\n    else {\n      local_a0 = 0;\n      do {\n        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));\n        if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }\n        FUN_000264d0(0);\n        iVar2 = FUN_000ecd60(local_88,&local_84);\n        FUN_000d2b30();\n        local_88 = local_84;\n        local_a0 = local_a0 + 1;\n      } while ((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX));\n    }\n  }" { (expression_statement "iVar2 = *(int *)((int)uVar7 + 0x1c);" (assignment_expression "iVar2 = *(int *)((int)uVar7 + 0x1c)" identifier = (pointer_expression "*(int *)((int)uVar7 + 0x1c)" * (cast_expression "(int *)((int)uVar7 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)uVar7 + 0x1c)" ( (binary_expression "(int)uVar7 + 0x1c" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (iVar2 == extraout_ECX || iVar2 - extraout_ECX < 0) {\n      iVar2 = 0;\n    }\n    else {\n      local_a0 = 0;\n      do {\n        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));\n        if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }\n        FUN_000264d0(0);\n        iVar2 = FUN_000ecd60(local_88,&local_84);\n        FUN_000d2b30();\n        local_88 = local_84;\n        local_a0 = local_a0 + 1;\n      } while ((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX));\n    }" if (parenthesized_expression "(iVar2 == extraout_ECX || iVar2 - extraout_ECX < 0)" ( (binary_expression "iVar2 == extraout_ECX || iVar2 - extraout_ECX < 0" (binary_expression "iVar2 == extraout_ECX" identifier == identifier) || (binary_expression "iVar2 - extraout_ECX < 0" (binary_expression "iVar2 - extraout_ECX" identifier - identifier) < number_literal)) )) (compound_statement "{\n      iVar2 = 0;\n    }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      local_a0 = 0;\n      do {\n        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));\n        if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }\n        FUN_000264d0(0);\n        iVar2 = FUN_000ecd60(local_88,&local_84);\n        FUN_000d2b30();\n        local_88 = local_84;\n        local_a0 = local_a0 + 1;\n      } while ((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX));\n    }" else (compound_statement "{\n      local_a0 = 0;\n      do {\n        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));\n        if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }\n        FUN_000264d0(0);\n        iVar2 = FUN_000ecd60(local_88,&local_84);\n        FUN_000d2b30();\n        local_88 = local_84;\n        local_a0 = local_a0 + 1;\n      } while ((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX));\n    }" { (expression_statement "local_a0 = 0;" (assignment_expression "local_a0 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));\n        if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }\n        FUN_000264d0(0);\n        iVar2 = FUN_000ecd60(local_88,&local_84);\n        FUN_000d2b30();\n        local_88 = local_84;\n        local_a0 = local_a0 + 1;\n      } while ((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX));" do (compound_statement "{\n        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));\n        if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }\n        FUN_000264d0(0);\n        iVar2 = FUN_000ecd60(local_88,&local_84);\n        FUN_000d2b30();\n        local_88 = local_84;\n        local_a0 = local_a0 + 1;\n      }" { (expression_statement "uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));" (assignment_expression "uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3))" identifier = (cast_expression "(uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3))" identifier (argument_list "(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3))" ( (pointer_expression "*(undefined1 *)(*(int *)(local_88 + 0x14) + 2)" * (cast_expression "(undefined1 *)(*(int *)(local_88 + 0x14) + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_88 + 0x14) + 2)" ( (binary_expression "*(int *)(local_88 + 0x14) + 2" (pointer_expression "*(int *)(local_88 + 0x14)" * (cast_expression "(int *)(local_88 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_88 + 0x14)" ( (binary_expression "local_88 + 0x14" identifier + number_literal) )))) + number_literal) )))) , (pointer_expression "*(undefined1 *)(*(int *)(local_88 + 0x14) + 3)" * (cast_expression "(undefined1 *)(*(int *)(local_88 + 0x14) + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_88 + 0x14) + 3)" ( (binary_expression "*(int *)(local_88 + 0x14) + 3" (pointer_expression "*(int *)(local_88 + 0x14)" * (cast_expression "(int *)(local_88 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_88 + 0x14)" ( (binary_expression "local_88 + 0x14" identifier + number_literal) )))) + number_literal) )))) ))))) ;) (if_statement "if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (compound_statement "{\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "local_bc = 0.0;" (assignment_expression "local_bc = 0.0" identifier = number_literal) ;) (expression_statement "local_c4 = 0.0;" (assignment_expression "local_c4 = 0.0" identifier = number_literal) ;) (do_statement "do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);" do (compound_statement "{\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          }" { (expression_statement "FUN_00025480(&local_80);" (call_expression "FUN_00025480(&local_80)" identifier (argument_list "(&local_80)" ( (pointer_expression "&local_80" & identifier) ))) ;) (expression_statement "local_50 = local_80;" (assignment_expression "local_50 = local_80" identifier = identifier) ;) (expression_statement "local_4c = local_7c;" (assignment_expression "local_4c = local_7c" identifier = identifier) ;) (expression_statement "local_48 = local_78;" (assignment_expression "local_48 = local_78" identifier = identifier) ;) (expression_statement "local_44 = local_74;" (assignment_expression "local_44 = local_74" identifier = identifier) ;) (expression_statement "local_40 = local_70;" (assignment_expression "local_40 = local_70" identifier = identifier) ;) (expression_statement "local_3c = local_6c;" (assignment_expression "local_3c = local_6c" identifier = identifier) ;) (expression_statement "local_38 = local_68;" (assignment_expression "local_38 = local_68" identifier = identifier) ;) (expression_statement "local_34 = local_64;" (assignment_expression "local_34 = local_64" identifier = identifier) ;) (expression_statement "local_30 = local_60;" (assignment_expression "local_30 = local_60" identifier = identifier) ;) (expression_statement "local_2c = local_5c;" (assignment_expression "local_2c = local_5c" identifier = identifier) ;) (expression_statement "local_28 = local_58;" (assignment_expression "local_28 = local_58" identifier = identifier) ;) (expression_statement "local_24 = local_54;" (assignment_expression "local_24 = local_54" identifier = identifier) ;) (expression_statement "lVar5 = (longdouble)FUN_00033590();" (assignment_expression "lVar5 = (longdouble)FUN_00033590()" identifier = (cast_expression "(longdouble)FUN_00033590()" ( (type_descriptor "longdouble" type_identifier) ) (call_expression "FUN_00033590()" identifier (argument_list "()" ( ))))) ;) (expression_statement "FUN_00033700((int)((ulonglong)uVar7 >> 0x20));" (call_expression "FUN_00033700((int)((ulonglong)uVar7 >> 0x20))" identifier (argument_list "((int)((ulonglong)uVar7 >> 0x20))" ( (cast_expression "(int)((ulonglong)uVar7 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar7 >> 0x20)" ( (binary_expression "(ulonglong)uVar7 >> 0x20" (cast_expression "(ulonglong)uVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) ))) ;) (expression_statement "lVar6 = (longdouble)FUN_00033590();" (assignment_expression "lVar6 = (longdouble)FUN_00033590()" identifier = (cast_expression "(longdouble)FUN_00033590()" ( (type_descriptor "longdouble" type_identifier) ) (call_expression "FUN_00033590()" identifier (argument_list "()" ( ))))) ;) (expression_statement "dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);" (assignment_expression "dVar1 = (double)(lVar6 - (longdouble)(double)lVar5)" identifier = (cast_expression "(double)(lVar6 - (longdouble)(double)lVar5)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(lVar6 - (longdouble)(double)lVar5)" ( (binary_expression "lVar6 - (longdouble)(double)lVar5" identifier - (cast_expression "(longdouble)(double)lVar5" ( (type_descriptor "longdouble" type_identifier) ) (cast_expression "(double)lVar5" ( (type_descriptor "double" primitive_type) ) identifier))) )))) ;) (expression_statement "lVar5 = (longdouble)FUN_00033590();" (assignment_expression "lVar5 = (longdouble)FUN_00033590()" identifier = (cast_expression "(longdouble)FUN_00033590()" ( (type_descriptor "longdouble" type_identifier) ) (call_expression "FUN_00033590()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }" if (parenthesized_expression "(((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc))))" ( (binary_expression "((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))" (parenthesized_expression "((uVar4 == 0) || (dVar1 < local_c4))" ( (binary_expression "(uVar4 == 0) || (dVar1 < local_c4)" (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) || (parenthesized_expression "(dVar1 < local_c4)" ( (binary_expression "dVar1 < local_c4" identifier < identifier) ))) )) || (parenthesized_expression "((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))" ( (parenthesized_expression "(dVar1 == local_c4 && (lVar5 < (longdouble)local_bc))" ( (binary_expression "dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)" (binary_expression "dVar1 == local_c4" identifier == identifier) && (parenthesized_expression "(lVar5 < (longdouble)local_bc)" ( (binary_expression "lVar5 < (longdouble)local_bc" identifier < (cast_expression "(longdouble)local_bc" ( (type_descriptor "longdouble" type_identifier) ) identifier)) ))) )) ))) )) (compound_statement "{\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }" { (expression_statement "local_bc = (double)lVar5;" (assignment_expression "local_bc = (double)lVar5" identifier = (cast_expression "(double)lVar5" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "local_c4 = dVar1;" (assignment_expression "local_c4 = dVar1" identifier = identifier) ;) })) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar4 != uVar3)" ( (binary_expression "uVar4 != uVar3" identifier != identifier) )) ;) })) (expression_statement "FUN_000264d0(0);" (call_expression "FUN_000264d0(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar2 = FUN_000ecd60(local_88,&local_84);" (assignment_expression "iVar2 = FUN_000ecd60(local_88,&local_84)" identifier = (call_expression "FUN_000ecd60(local_88,&local_84)" identifier (argument_list "(local_88,&local_84)" ( identifier , (pointer_expression "&local_84" & identifier) )))) ;) (expression_statement "FUN_000d2b30();" (call_expression "FUN_000d2b30()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_88 = local_84;" (assignment_expression "local_88 = local_84" identifier = identifier) ;) (expression_statement "local_a0 = local_a0 + 1;" (assignment_expression "local_a0 = local_a0 + 1" identifier = (binary_expression "local_a0 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX))" ( (binary_expression "(iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX)" (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) && (parenthesized_expression "(local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX)" ( (binary_expression "local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX" identifier < (binary_expression "*(int *)((int)uVar7 + 0x1c) - extraout_ECX" (pointer_expression "*(int *)((int)uVar7 + 0x1c)" * (cast_expression "(int *)((int)uVar7 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)uVar7 + 0x1c)" ( (binary_expression "(int)uVar7 + 0x1c" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) - identifier)) ))) )) ;) }))) })) (expression_statement "*param_1 = local_88;" (assignment_expression "*param_1 = local_88" (pointer_expression "*param_1" * identifier) = identifier) ;) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar2;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return iVar2;\n  }" { (return_statement "return iVar2;" return identifier ;) })) comment (expression_statement "FUN_000f6410();" (call_expression "FUN_000f6410()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "int ChooseLeaf(Rtree *pRtree,RtreeCell *pCell,int iHeight,RtreeNode **ppLeaf)\n\n{\n  int iVar1;\n  byte bVar2;\n  byte bVar3;\n  double dVar4;\n  Rtree *pRtree_00;\n  int iVar5;\n  uint uVar6;\n  int extraout_ECX;\n  uint iCell;\n  int in_GS_OFFSET;\n  undefined8 uVar7;\n  RtreeDValue RVar8;\n  RtreeDValue RVar9;\n  RtreeNode **in_stack_ffffff1c;\n  double local_c4;\n  double local_bc;\n  RtreeNode *local_ac;\n  int local_a0;\n  RtreeNode *pNode;\n  RtreeNode *pChild;\n  RtreeCell cell;\n  RtreeCell cell_1;\n  \n  uVar7 = __x86_get_pc_thunk_di();\n  pRtree_00 = (Rtree *)uVar7;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  pNode = (RtreeNode *)0x0;\n  iVar5 = nodeAcquire(pRtree_00,ZEXT48(&pNode) << 0x20,(RtreeNode *)0x1,in_stack_ffffff1c);\n  if (iVar5 == 0) {\n    if (pRtree_00->iDepth == extraout_ECX || pRtree_00->iDepth - extraout_ECX < 0) {\n      iVar5 = 0;\n    }\n    else {\n      local_a0 = 0;\n      do {\n        uVar6 = (uint)CONCAT11(pNode->zData[2],pNode->zData[3]);\n        if (uVar6 == 0) {\n          local_ac = (RtreeNode *)0x0;\n        }\n        else {\n          iCell = 0;\n          local_ac = (RtreeNode *)0x0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            nodeGetCell(pRtree_00,pNode,iCell,&cell);\n            bVar2 = pRtree_00->eCoordType;\n            cell_1.iRowid._0_4_ = (RtreeNode *)cell.iRowid;\n            cell_1.iRowid._4_4_ = cell.iRowid._4_4_;\n            cell_1.aCoord[0] = cell.aCoord[0];\n            cell_1.aCoord[1] = cell.aCoord[1];\n            cell_1.aCoord[2] = cell.aCoord[2];\n            cell_1.aCoord[3] = cell.aCoord[3];\n            cell_1.aCoord[4] = cell.aCoord[4];\n            cell_1.aCoord[5] = cell.aCoord[5];\n            cell_1.aCoord[6] = cell.aCoord[6];\n            cell_1.aCoord[7] = cell.aCoord[7];\n            cell_1.aCoord[8] = cell.aCoord[8];\n            cell_1.aCoord[9] = cell.aCoord[9];\n            RVar8 = cellArea((Rtree *)(uint)pRtree_00->nDim,(RtreeCell *)(uint)bVar2,\n                             (Rtree *)&cell_1);\n            cellUnion((Rtree *)&pRtree_00->nDim2,(RtreeCell *)(uint)bVar2,&cell_1,\n                      (Rtree *)((ulonglong)uVar7 >> 0x20));\n            bVar2 = pRtree_00->nDim;\n            bVar3 = pRtree_00->eCoordType;\n            RVar9 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell_1);\n            dVar4 = RVar9 - RVar8;\n            RVar8 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell);\n            if (((iCell == 0) || (dVar4 < local_c4)) || ((dVar4 == local_c4 && (RVar8 < local_bc))))\n            {\n              local_ac = (RtreeNode *)cell.iRowid;\n              local_c4 = dVar4;\n              local_bc = RVar8;\n            }\n            iCell = iCell + 1;\n          } while (iCell != uVar6);\n        }\n        sqlite3_free((void *)0x0);\n        iVar5 = nodeAcquire(pRtree_00,CONCAT44(&pChild,pNode),local_ac,in_stack_ffffff1c);\n        nodeRelease(pRtree_00,pNode);\n        pNode = pChild;\n        local_a0 = local_a0 + 1;\n      } while ((iVar5 == 0) && (local_a0 < pRtree_00->iDepth - extraout_ECX));\n    }\n  }\n  (pRtree->base).pModule = (sqlite3_module *)pNode;\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar5;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}\n\n" (function_definition "int ChooseLeaf(Rtree *pRtree,RtreeCell *pCell,int iHeight,RtreeNode **ppLeaf)\n\n{\n  int iVar1;\n  byte bVar2;\n  byte bVar3;\n  double dVar4;\n  Rtree *pRtree_00;\n  int iVar5;\n  uint uVar6;\n  int extraout_ECX;\n  uint iCell;\n  int in_GS_OFFSET;\n  undefined8 uVar7;\n  RtreeDValue RVar8;\n  RtreeDValue RVar9;\n  RtreeNode **in_stack_ffffff1c;\n  double local_c4;\n  double local_bc;\n  RtreeNode *local_ac;\n  int local_a0;\n  RtreeNode *pNode;\n  RtreeNode *pChild;\n  RtreeCell cell;\n  RtreeCell cell_1;\n  \n  uVar7 = __x86_get_pc_thunk_di();\n  pRtree_00 = (Rtree *)uVar7;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  pNode = (RtreeNode *)0x0;\n  iVar5 = nodeAcquire(pRtree_00,ZEXT48(&pNode) << 0x20,(RtreeNode *)0x1,in_stack_ffffff1c);\n  if (iVar5 == 0) {\n    if (pRtree_00->iDepth == extraout_ECX || pRtree_00->iDepth - extraout_ECX < 0) {\n      iVar5 = 0;\n    }\n    else {\n      local_a0 = 0;\n      do {\n        uVar6 = (uint)CONCAT11(pNode->zData[2],pNode->zData[3]);\n        if (uVar6 == 0) {\n          local_ac = (RtreeNode *)0x0;\n        }\n        else {\n          iCell = 0;\n          local_ac = (RtreeNode *)0x0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            nodeGetCell(pRtree_00,pNode,iCell,&cell);\n            bVar2 = pRtree_00->eCoordType;\n            cell_1.iRowid._0_4_ = (RtreeNode *)cell.iRowid;\n            cell_1.iRowid._4_4_ = cell.iRowid._4_4_;\n            cell_1.aCoord[0] = cell.aCoord[0];\n            cell_1.aCoord[1] = cell.aCoord[1];\n            cell_1.aCoord[2] = cell.aCoord[2];\n            cell_1.aCoord[3] = cell.aCoord[3];\n            cell_1.aCoord[4] = cell.aCoord[4];\n            cell_1.aCoord[5] = cell.aCoord[5];\n            cell_1.aCoord[6] = cell.aCoord[6];\n            cell_1.aCoord[7] = cell.aCoord[7];\n            cell_1.aCoord[8] = cell.aCoord[8];\n            cell_1.aCoord[9] = cell.aCoord[9];\n            RVar8 = cellArea((Rtree *)(uint)pRtree_00->nDim,(RtreeCell *)(uint)bVar2,\n                             (Rtree *)&cell_1);\n            cellUnion((Rtree *)&pRtree_00->nDim2,(RtreeCell *)(uint)bVar2,&cell_1,\n                      (Rtree *)((ulonglong)uVar7 >> 0x20));\n            bVar2 = pRtree_00->nDim;\n            bVar3 = pRtree_00->eCoordType;\n            RVar9 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell_1);\n            dVar4 = RVar9 - RVar8;\n            RVar8 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell);\n            if (((iCell == 0) || (dVar4 < local_c4)) || ((dVar4 == local_c4 && (RVar8 < local_bc))))\n            {\n              local_ac = (RtreeNode *)cell.iRowid;\n              local_c4 = dVar4;\n              local_bc = RVar8;\n            }\n            iCell = iCell + 1;\n          } while (iCell != uVar6);\n        }\n        sqlite3_free((void *)0x0);\n        iVar5 = nodeAcquire(pRtree_00,CONCAT44(&pChild,pNode),local_ac,in_stack_ffffff1c);\n        nodeRelease(pRtree_00,pNode);\n        pNode = pChild;\n        local_a0 = local_a0 + 1;\n      } while ((iVar5 == 0) && (local_a0 < pRtree_00->iDepth - extraout_ECX));\n    }\n  }\n  (pRtree->base).pModule = (sqlite3_module *)pNode;\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar5;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" primitive_type (function_declarator "ChooseLeaf(Rtree *pRtree,RtreeCell *pCell,int iHeight,RtreeNode **ppLeaf)" identifier (parameter_list "(Rtree *pRtree,RtreeCell *pCell,int iHeight,RtreeNode **ppLeaf)" ( (parameter_declaration "Rtree *pRtree" type_identifier (pointer_declarator "*pRtree" * identifier)) , (parameter_declaration "RtreeCell *pCell" type_identifier (pointer_declarator "*pCell" * identifier)) , (parameter_declaration "int iHeight" primitive_type identifier) , (parameter_declaration "RtreeNode **ppLeaf" type_identifier (pointer_declarator "**ppLeaf" * (pointer_declarator "*ppLeaf" * identifier))) ))) (compound_statement "{\n  int iVar1;\n  byte bVar2;\n  byte bVar3;\n  double dVar4;\n  Rtree *pRtree_00;\n  int iVar5;\n  uint uVar6;\n  int extraout_ECX;\n  uint iCell;\n  int in_GS_OFFSET;\n  undefined8 uVar7;\n  RtreeDValue RVar8;\n  RtreeDValue RVar9;\n  RtreeNode **in_stack_ffffff1c;\n  double local_c4;\n  double local_bc;\n  RtreeNode *local_ac;\n  int local_a0;\n  RtreeNode *pNode;\n  RtreeNode *pChild;\n  RtreeCell cell;\n  RtreeCell cell_1;\n  \n  uVar7 = __x86_get_pc_thunk_di();\n  pRtree_00 = (Rtree *)uVar7;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  pNode = (RtreeNode *)0x0;\n  iVar5 = nodeAcquire(pRtree_00,ZEXT48(&pNode) << 0x20,(RtreeNode *)0x1,in_stack_ffffff1c);\n  if (iVar5 == 0) {\n    if (pRtree_00->iDepth == extraout_ECX || pRtree_00->iDepth - extraout_ECX < 0) {\n      iVar5 = 0;\n    }\n    else {\n      local_a0 = 0;\n      do {\n        uVar6 = (uint)CONCAT11(pNode->zData[2],pNode->zData[3]);\n        if (uVar6 == 0) {\n          local_ac = (RtreeNode *)0x0;\n        }\n        else {\n          iCell = 0;\n          local_ac = (RtreeNode *)0x0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            nodeGetCell(pRtree_00,pNode,iCell,&cell);\n            bVar2 = pRtree_00->eCoordType;\n            cell_1.iRowid._0_4_ = (RtreeNode *)cell.iRowid;\n            cell_1.iRowid._4_4_ = cell.iRowid._4_4_;\n            cell_1.aCoord[0] = cell.aCoord[0];\n            cell_1.aCoord[1] = cell.aCoord[1];\n            cell_1.aCoord[2] = cell.aCoord[2];\n            cell_1.aCoord[3] = cell.aCoord[3];\n            cell_1.aCoord[4] = cell.aCoord[4];\n            cell_1.aCoord[5] = cell.aCoord[5];\n            cell_1.aCoord[6] = cell.aCoord[6];\n            cell_1.aCoord[7] = cell.aCoord[7];\n            cell_1.aCoord[8] = cell.aCoord[8];\n            cell_1.aCoord[9] = cell.aCoord[9];\n            RVar8 = cellArea((Rtree *)(uint)pRtree_00->nDim,(RtreeCell *)(uint)bVar2,\n                             (Rtree *)&cell_1);\n            cellUnion((Rtree *)&pRtree_00->nDim2,(RtreeCell *)(uint)bVar2,&cell_1,\n                      (Rtree *)((ulonglong)uVar7 >> 0x20));\n            bVar2 = pRtree_00->nDim;\n            bVar3 = pRtree_00->eCoordType;\n            RVar9 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell_1);\n            dVar4 = RVar9 - RVar8;\n            RVar8 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell);\n            if (((iCell == 0) || (dVar4 < local_c4)) || ((dVar4 == local_c4 && (RVar8 < local_bc))))\n            {\n              local_ac = (RtreeNode *)cell.iRowid;\n              local_c4 = dVar4;\n              local_bc = RVar8;\n            }\n            iCell = iCell + 1;\n          } while (iCell != uVar6);\n        }\n        sqlite3_free((void *)0x0);\n        iVar5 = nodeAcquire(pRtree_00,CONCAT44(&pChild,pNode),local_ac,in_stack_ffffff1c);\n        nodeRelease(pRtree_00,pNode);\n        pNode = pChild;\n        local_a0 = local_a0 + 1;\n      } while ((iVar5 == 0) && (local_a0 < pRtree_00->iDepth - extraout_ECX));\n    }\n  }\n  (pRtree->base).pModule = (sqlite3_module *)pNode;\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar5;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "double dVar4;" primitive_type identifier ;) (declaration "Rtree *pRtree_00;" type_identifier (pointer_declarator "*pRtree_00" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "uint iCell;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "RtreeDValue RVar8;" type_identifier identifier ;) (declaration "RtreeDValue RVar9;" type_identifier identifier ;) (declaration "RtreeNode **in_stack_ffffff1c;" type_identifier (pointer_declarator "**in_stack_ffffff1c" * (pointer_declarator "*in_stack_ffffff1c" * identifier)) ;) (declaration "double local_c4;" primitive_type identifier ;) (declaration "double local_bc;" primitive_type identifier ;) (declaration "RtreeNode *local_ac;" type_identifier (pointer_declarator "*local_ac" * identifier) ;) (declaration "int local_a0;" primitive_type identifier ;) (declaration "RtreeNode *pNode;" type_identifier (pointer_declarator "*pNode" * identifier) ;) (declaration "RtreeNode *pChild;" type_identifier (pointer_declarator "*pChild" * identifier) ;) (declaration "RtreeCell cell;" type_identifier identifier ;) (declaration "RtreeCell cell_1;" type_identifier identifier ;) (expression_statement "uVar7 = __x86_get_pc_thunk_di();" (assignment_expression "uVar7 = __x86_get_pc_thunk_di()" identifier = (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( )))) ;) (expression_statement "pRtree_00 = (Rtree *)uVar7;" (assignment_expression "pRtree_00 = (Rtree *)uVar7" identifier = (cast_expression "(Rtree *)uVar7" ( (type_descriptor "Rtree *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "pNode = (RtreeNode *)0x0;" (assignment_expression "pNode = (RtreeNode *)0x0" identifier = (cast_expression "(RtreeNode *)0x0" ( (type_descriptor "RtreeNode *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar5 = nodeAcquire(pRtree_00,ZEXT48(&pNode) << 0x20,(RtreeNode *)0x1,in_stack_ffffff1c);" (assignment_expression "iVar5 = nodeAcquire(pRtree_00,ZEXT48(&pNode) << 0x20,(RtreeNode *)0x1,in_stack_ffffff1c)" identifier = (call_expression "nodeAcquire(pRtree_00,ZEXT48(&pNode) << 0x20,(RtreeNode *)0x1,in_stack_ffffff1c)" identifier (argument_list "(pRtree_00,ZEXT48(&pNode) << 0x20,(RtreeNode *)0x1,in_stack_ffffff1c)" ( identifier , (binary_expression "ZEXT48(&pNode) << 0x20" (call_expression "ZEXT48(&pNode)" identifier (argument_list "(&pNode)" ( (pointer_expression "&pNode" & identifier) ))) << number_literal) , (cast_expression "(RtreeNode *)0x1" ( (type_descriptor "RtreeNode *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , identifier )))) ;) (if_statement "if (iVar5 == 0) {\n    if (pRtree_00->iDepth == extraout_ECX || pRtree_00->iDepth - extraout_ECX < 0) {\n      iVar5 = 0;\n    }\n    else {\n      local_a0 = 0;\n      do {\n        uVar6 = (uint)CONCAT11(pNode->zData[2],pNode->zData[3]);\n        if (uVar6 == 0) {\n          local_ac = (RtreeNode *)0x0;\n        }\n        else {\n          iCell = 0;\n          local_ac = (RtreeNode *)0x0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            nodeGetCell(pRtree_00,pNode,iCell,&cell);\n            bVar2 = pRtree_00->eCoordType;\n            cell_1.iRowid._0_4_ = (RtreeNode *)cell.iRowid;\n            cell_1.iRowid._4_4_ = cell.iRowid._4_4_;\n            cell_1.aCoord[0] = cell.aCoord[0];\n            cell_1.aCoord[1] = cell.aCoord[1];\n            cell_1.aCoord[2] = cell.aCoord[2];\n            cell_1.aCoord[3] = cell.aCoord[3];\n            cell_1.aCoord[4] = cell.aCoord[4];\n            cell_1.aCoord[5] = cell.aCoord[5];\n            cell_1.aCoord[6] = cell.aCoord[6];\n            cell_1.aCoord[7] = cell.aCoord[7];\n            cell_1.aCoord[8] = cell.aCoord[8];\n            cell_1.aCoord[9] = cell.aCoord[9];\n            RVar8 = cellArea((Rtree *)(uint)pRtree_00->nDim,(RtreeCell *)(uint)bVar2,\n                             (Rtree *)&cell_1);\n            cellUnion((Rtree *)&pRtree_00->nDim2,(RtreeCell *)(uint)bVar2,&cell_1,\n                      (Rtree *)((ulonglong)uVar7 >> 0x20));\n            bVar2 = pRtree_00->nDim;\n            bVar3 = pRtree_00->eCoordType;\n            RVar9 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell_1);\n            dVar4 = RVar9 - RVar8;\n            RVar8 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell);\n            if (((iCell == 0) || (dVar4 < local_c4)) || ((dVar4 == local_c4 && (RVar8 < local_bc))))\n            {\n              local_ac = (RtreeNode *)cell.iRowid;\n              local_c4 = dVar4;\n              local_bc = RVar8;\n            }\n            iCell = iCell + 1;\n          } while (iCell != uVar6);\n        }\n        sqlite3_free((void *)0x0);\n        iVar5 = nodeAcquire(pRtree_00,CONCAT44(&pChild,pNode),local_ac,in_stack_ffffff1c);\n        nodeRelease(pRtree_00,pNode);\n        pNode = pChild;\n        local_a0 = local_a0 + 1;\n      } while ((iVar5 == 0) && (local_a0 < pRtree_00->iDepth - extraout_ECX));\n    }\n  }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    if (pRtree_00->iDepth == extraout_ECX || pRtree_00->iDepth - extraout_ECX < 0) {\n      iVar5 = 0;\n    }\n    else {\n      local_a0 = 0;\n      do {\n        uVar6 = (uint)CONCAT11(pNode->zData[2],pNode->zData[3]);\n        if (uVar6 == 0) {\n          local_ac = (RtreeNode *)0x0;\n        }\n        else {\n          iCell = 0;\n          local_ac = (RtreeNode *)0x0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            nodeGetCell(pRtree_00,pNode,iCell,&cell);\n            bVar2 = pRtree_00->eCoordType;\n            cell_1.iRowid._0_4_ = (RtreeNode *)cell.iRowid;\n            cell_1.iRowid._4_4_ = cell.iRowid._4_4_;\n            cell_1.aCoord[0] = cell.aCoord[0];\n            cell_1.aCoord[1] = cell.aCoord[1];\n            cell_1.aCoord[2] = cell.aCoord[2];\n            cell_1.aCoord[3] = cell.aCoord[3];\n            cell_1.aCoord[4] = cell.aCoord[4];\n            cell_1.aCoord[5] = cell.aCoord[5];\n            cell_1.aCoord[6] = cell.aCoord[6];\n            cell_1.aCoord[7] = cell.aCoord[7];\n            cell_1.aCoord[8] = cell.aCoord[8];\n            cell_1.aCoord[9] = cell.aCoord[9];\n            RVar8 = cellArea((Rtree *)(uint)pRtree_00->nDim,(RtreeCell *)(uint)bVar2,\n                             (Rtree *)&cell_1);\n            cellUnion((Rtree *)&pRtree_00->nDim2,(RtreeCell *)(uint)bVar2,&cell_1,\n                      (Rtree *)((ulonglong)uVar7 >> 0x20));\n            bVar2 = pRtree_00->nDim;\n            bVar3 = pRtree_00->eCoordType;\n            RVar9 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell_1);\n            dVar4 = RVar9 - RVar8;\n            RVar8 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell);\n            if (((iCell == 0) || (dVar4 < local_c4)) || ((dVar4 == local_c4 && (RVar8 < local_bc))))\n            {\n              local_ac = (RtreeNode *)cell.iRowid;\n              local_c4 = dVar4;\n              local_bc = RVar8;\n            }\n            iCell = iCell + 1;\n          } while (iCell != uVar6);\n        }\n        sqlite3_free((void *)0x0);\n        iVar5 = nodeAcquire(pRtree_00,CONCAT44(&pChild,pNode),local_ac,in_stack_ffffff1c);\n        nodeRelease(pRtree_00,pNode);\n        pNode = pChild;\n        local_a0 = local_a0 + 1;\n      } while ((iVar5 == 0) && (local_a0 < pRtree_00->iDepth - extraout_ECX));\n    }\n  }" { (if_statement "if (pRtree_00->iDepth == extraout_ECX || pRtree_00->iDepth - extraout_ECX < 0) {\n      iVar5 = 0;\n    }\n    else {\n      local_a0 = 0;\n      do {\n        uVar6 = (uint)CONCAT11(pNode->zData[2],pNode->zData[3]);\n        if (uVar6 == 0) {\n          local_ac = (RtreeNode *)0x0;\n        }\n        else {\n          iCell = 0;\n          local_ac = (RtreeNode *)0x0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            nodeGetCell(pRtree_00,pNode,iCell,&cell);\n            bVar2 = pRtree_00->eCoordType;\n            cell_1.iRowid._0_4_ = (RtreeNode *)cell.iRowid;\n            cell_1.iRowid._4_4_ = cell.iRowid._4_4_;\n            cell_1.aCoord[0] = cell.aCoord[0];\n            cell_1.aCoord[1] = cell.aCoord[1];\n            cell_1.aCoord[2] = cell.aCoord[2];\n            cell_1.aCoord[3] = cell.aCoord[3];\n            cell_1.aCoord[4] = cell.aCoord[4];\n            cell_1.aCoord[5] = cell.aCoord[5];\n            cell_1.aCoord[6] = cell.aCoord[6];\n            cell_1.aCoord[7] = cell.aCoord[7];\n            cell_1.aCoord[8] = cell.aCoord[8];\n            cell_1.aCoord[9] = cell.aCoord[9];\n            RVar8 = cellArea((Rtree *)(uint)pRtree_00->nDim,(RtreeCell *)(uint)bVar2,\n                             (Rtree *)&cell_1);\n            cellUnion((Rtree *)&pRtree_00->nDim2,(RtreeCell *)(uint)bVar2,&cell_1,\n                      (Rtree *)((ulonglong)uVar7 >> 0x20));\n            bVar2 = pRtree_00->nDim;\n            bVar3 = pRtree_00->eCoordType;\n            RVar9 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell_1);\n            dVar4 = RVar9 - RVar8;\n            RVar8 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell);\n            if (((iCell == 0) || (dVar4 < local_c4)) || ((dVar4 == local_c4 && (RVar8 < local_bc))))\n            {\n              local_ac = (RtreeNode *)cell.iRowid;\n              local_c4 = dVar4;\n              local_bc = RVar8;\n            }\n            iCell = iCell + 1;\n          } while (iCell != uVar6);\n        }\n        sqlite3_free((void *)0x0);\n        iVar5 = nodeAcquire(pRtree_00,CONCAT44(&pChild,pNode),local_ac,in_stack_ffffff1c);\n        nodeRelease(pRtree_00,pNode);\n        pNode = pChild;\n        local_a0 = local_a0 + 1;\n      } while ((iVar5 == 0) && (local_a0 < pRtree_00->iDepth - extraout_ECX));\n    }" if (parenthesized_expression "(pRtree_00->iDepth == extraout_ECX || pRtree_00->iDepth - extraout_ECX < 0)" ( (binary_expression "pRtree_00->iDepth == extraout_ECX || pRtree_00->iDepth - extraout_ECX < 0" (binary_expression "pRtree_00->iDepth == extraout_ECX" (field_expression "pRtree_00->iDepth" identifier -> field_identifier) == identifier) || (binary_expression "pRtree_00->iDepth - extraout_ECX < 0" (binary_expression "pRtree_00->iDepth - extraout_ECX" (field_expression "pRtree_00->iDepth" identifier -> field_identifier) - identifier) < number_literal)) )) (compound_statement "{\n      iVar5 = 0;\n    }" { (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      local_a0 = 0;\n      do {\n        uVar6 = (uint)CONCAT11(pNode->zData[2],pNode->zData[3]);\n        if (uVar6 == 0) {\n          local_ac = (RtreeNode *)0x0;\n        }\n        else {\n          iCell = 0;\n          local_ac = (RtreeNode *)0x0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            nodeGetCell(pRtree_00,pNode,iCell,&cell);\n            bVar2 = pRtree_00->eCoordType;\n            cell_1.iRowid._0_4_ = (RtreeNode *)cell.iRowid;\n            cell_1.iRowid._4_4_ = cell.iRowid._4_4_;\n            cell_1.aCoord[0] = cell.aCoord[0];\n            cell_1.aCoord[1] = cell.aCoord[1];\n            cell_1.aCoord[2] = cell.aCoord[2];\n            cell_1.aCoord[3] = cell.aCoord[3];\n            cell_1.aCoord[4] = cell.aCoord[4];\n            cell_1.aCoord[5] = cell.aCoord[5];\n            cell_1.aCoord[6] = cell.aCoord[6];\n            cell_1.aCoord[7] = cell.aCoord[7];\n            cell_1.aCoord[8] = cell.aCoord[8];\n            cell_1.aCoord[9] = cell.aCoord[9];\n            RVar8 = cellArea((Rtree *)(uint)pRtree_00->nDim,(RtreeCell *)(uint)bVar2,\n                             (Rtree *)&cell_1);\n            cellUnion((Rtree *)&pRtree_00->nDim2,(RtreeCell *)(uint)bVar2,&cell_1,\n                      (Rtree *)((ulonglong)uVar7 >> 0x20));\n            bVar2 = pRtree_00->nDim;\n            bVar3 = pRtree_00->eCoordType;\n            RVar9 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell_1);\n            dVar4 = RVar9 - RVar8;\n            RVar8 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell);\n            if (((iCell == 0) || (dVar4 < local_c4)) || ((dVar4 == local_c4 && (RVar8 < local_bc))))\n            {\n              local_ac = (RtreeNode *)cell.iRowid;\n              local_c4 = dVar4;\n              local_bc = RVar8;\n            }\n            iCell = iCell + 1;\n          } while (iCell != uVar6);\n        }\n        sqlite3_free((void *)0x0);\n        iVar5 = nodeAcquire(pRtree_00,CONCAT44(&pChild,pNode),local_ac,in_stack_ffffff1c);\n        nodeRelease(pRtree_00,pNode);\n        pNode = pChild;\n        local_a0 = local_a0 + 1;\n      } while ((iVar5 == 0) && (local_a0 < pRtree_00->iDepth - extraout_ECX));\n    }" else (compound_statement "{\n      local_a0 = 0;\n      do {\n        uVar6 = (uint)CONCAT11(pNode->zData[2],pNode->zData[3]);\n        if (uVar6 == 0) {\n          local_ac = (RtreeNode *)0x0;\n        }\n        else {\n          iCell = 0;\n          local_ac = (RtreeNode *)0x0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            nodeGetCell(pRtree_00,pNode,iCell,&cell);\n            bVar2 = pRtree_00->eCoordType;\n            cell_1.iRowid._0_4_ = (RtreeNode *)cell.iRowid;\n            cell_1.iRowid._4_4_ = cell.iRowid._4_4_;\n            cell_1.aCoord[0] = cell.aCoord[0];\n            cell_1.aCoord[1] = cell.aCoord[1];\n            cell_1.aCoord[2] = cell.aCoord[2];\n            cell_1.aCoord[3] = cell.aCoord[3];\n            cell_1.aCoord[4] = cell.aCoord[4];\n            cell_1.aCoord[5] = cell.aCoord[5];\n            cell_1.aCoord[6] = cell.aCoord[6];\n            cell_1.aCoord[7] = cell.aCoord[7];\n            cell_1.aCoord[8] = cell.aCoord[8];\n            cell_1.aCoord[9] = cell.aCoord[9];\n            RVar8 = cellArea((Rtree *)(uint)pRtree_00->nDim,(RtreeCell *)(uint)bVar2,\n                             (Rtree *)&cell_1);\n            cellUnion((Rtree *)&pRtree_00->nDim2,(RtreeCell *)(uint)bVar2,&cell_1,\n                      (Rtree *)((ulonglong)uVar7 >> 0x20));\n            bVar2 = pRtree_00->nDim;\n            bVar3 = pRtree_00->eCoordType;\n            RVar9 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell_1);\n            dVar4 = RVar9 - RVar8;\n            RVar8 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell);\n            if (((iCell == 0) || (dVar4 < local_c4)) || ((dVar4 == local_c4 && (RVar8 < local_bc))))\n            {\n              local_ac = (RtreeNode *)cell.iRowid;\n              local_c4 = dVar4;\n              local_bc = RVar8;\n            }\n            iCell = iCell + 1;\n          } while (iCell != uVar6);\n        }\n        sqlite3_free((void *)0x0);\n        iVar5 = nodeAcquire(pRtree_00,CONCAT44(&pChild,pNode),local_ac,in_stack_ffffff1c);\n        nodeRelease(pRtree_00,pNode);\n        pNode = pChild;\n        local_a0 = local_a0 + 1;\n      } while ((iVar5 == 0) && (local_a0 < pRtree_00->iDepth - extraout_ECX));\n    }" { (expression_statement "local_a0 = 0;" (assignment_expression "local_a0 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar6 = (uint)CONCAT11(pNode->zData[2],pNode->zData[3]);\n        if (uVar6 == 0) {\n          local_ac = (RtreeNode *)0x0;\n        }\n        else {\n          iCell = 0;\n          local_ac = (RtreeNode *)0x0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            nodeGetCell(pRtree_00,pNode,iCell,&cell);\n            bVar2 = pRtree_00->eCoordType;\n            cell_1.iRowid._0_4_ = (RtreeNode *)cell.iRowid;\n            cell_1.iRowid._4_4_ = cell.iRowid._4_4_;\n            cell_1.aCoord[0] = cell.aCoord[0];\n            cell_1.aCoord[1] = cell.aCoord[1];\n            cell_1.aCoord[2] = cell.aCoord[2];\n            cell_1.aCoord[3] = cell.aCoord[3];\n            cell_1.aCoord[4] = cell.aCoord[4];\n            cell_1.aCoord[5] = cell.aCoord[5];\n            cell_1.aCoord[6] = cell.aCoord[6];\n            cell_1.aCoord[7] = cell.aCoord[7];\n            cell_1.aCoord[8] = cell.aCoord[8];\n            cell_1.aCoord[9] = cell.aCoord[9];\n            RVar8 = cellArea((Rtree *)(uint)pRtree_00->nDim,(RtreeCell *)(uint)bVar2,\n                             (Rtree *)&cell_1);\n            cellUnion((Rtree *)&pRtree_00->nDim2,(RtreeCell *)(uint)bVar2,&cell_1,\n                      (Rtree *)((ulonglong)uVar7 >> 0x20));\n            bVar2 = pRtree_00->nDim;\n            bVar3 = pRtree_00->eCoordType;\n            RVar9 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell_1);\n            dVar4 = RVar9 - RVar8;\n            RVar8 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell);\n            if (((iCell == 0) || (dVar4 < local_c4)) || ((dVar4 == local_c4 && (RVar8 < local_bc))))\n            {\n              local_ac = (RtreeNode *)cell.iRowid;\n              local_c4 = dVar4;\n              local_bc = RVar8;\n            }\n            iCell = iCell + 1;\n          } while (iCell != uVar6);\n        }\n        sqlite3_free((void *)0x0);\n        iVar5 = nodeAcquire(pRtree_00,CONCAT44(&pChild,pNode),local_ac,in_stack_ffffff1c);\n        nodeRelease(pRtree_00,pNode);\n        pNode = pChild;\n        local_a0 = local_a0 + 1;\n      } while ((iVar5 == 0) && (local_a0 < pRtree_00->iDepth - extraout_ECX));" do (compound_statement "{\n        uVar6 = (uint)CONCAT11(pNode->zData[2],pNode->zData[3]);\n        if (uVar6 == 0) {\n          local_ac = (RtreeNode *)0x0;\n        }\n        else {\n          iCell = 0;\n          local_ac = (RtreeNode *)0x0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            nodeGetCell(pRtree_00,pNode,iCell,&cell);\n            bVar2 = pRtree_00->eCoordType;\n            cell_1.iRowid._0_4_ = (RtreeNode *)cell.iRowid;\n            cell_1.iRowid._4_4_ = cell.iRowid._4_4_;\n            cell_1.aCoord[0] = cell.aCoord[0];\n            cell_1.aCoord[1] = cell.aCoord[1];\n            cell_1.aCoord[2] = cell.aCoord[2];\n            cell_1.aCoord[3] = cell.aCoord[3];\n            cell_1.aCoord[4] = cell.aCoord[4];\n            cell_1.aCoord[5] = cell.aCoord[5];\n            cell_1.aCoord[6] = cell.aCoord[6];\n            cell_1.aCoord[7] = cell.aCoord[7];\n            cell_1.aCoord[8] = cell.aCoord[8];\n            cell_1.aCoord[9] = cell.aCoord[9];\n            RVar8 = cellArea((Rtree *)(uint)pRtree_00->nDim,(RtreeCell *)(uint)bVar2,\n                             (Rtree *)&cell_1);\n            cellUnion((Rtree *)&pRtree_00->nDim2,(RtreeCell *)(uint)bVar2,&cell_1,\n                      (Rtree *)((ulonglong)uVar7 >> 0x20));\n            bVar2 = pRtree_00->nDim;\n            bVar3 = pRtree_00->eCoordType;\n            RVar9 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell_1);\n            dVar4 = RVar9 - RVar8;\n            RVar8 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell);\n            if (((iCell == 0) || (dVar4 < local_c4)) || ((dVar4 == local_c4 && (RVar8 < local_bc))))\n            {\n              local_ac = (RtreeNode *)cell.iRowid;\n              local_c4 = dVar4;\n              local_bc = RVar8;\n            }\n            iCell = iCell + 1;\n          } while (iCell != uVar6);\n        }\n        sqlite3_free((void *)0x0);\n        iVar5 = nodeAcquire(pRtree_00,CONCAT44(&pChild,pNode),local_ac,in_stack_ffffff1c);\n        nodeRelease(pRtree_00,pNode);\n        pNode = pChild;\n        local_a0 = local_a0 + 1;\n      }" { (expression_statement "uVar6 = (uint)CONCAT11(pNode->zData[2],pNode->zData[3]);" (assignment_expression "uVar6 = (uint)CONCAT11(pNode->zData[2],pNode->zData[3])" identifier = (cast_expression "(uint)CONCAT11(pNode->zData[2],pNode->zData[3])" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11(pNode->zData[2],pNode->zData[3])" identifier (argument_list "(pNode->zData[2],pNode->zData[3])" ( (subscript_expression "pNode->zData[2]" (field_expression "pNode->zData" identifier -> field_identifier) [ number_literal ]) , (subscript_expression "pNode->zData[3]" (field_expression "pNode->zData" identifier -> field_identifier) [ number_literal ]) ))))) ;) (if_statement "if (uVar6 == 0) {\n          local_ac = (RtreeNode *)0x0;\n        }\n        else {\n          iCell = 0;\n          local_ac = (RtreeNode *)0x0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            nodeGetCell(pRtree_00,pNode,iCell,&cell);\n            bVar2 = pRtree_00->eCoordType;\n            cell_1.iRowid._0_4_ = (RtreeNode *)cell.iRowid;\n            cell_1.iRowid._4_4_ = cell.iRowid._4_4_;\n            cell_1.aCoord[0] = cell.aCoord[0];\n            cell_1.aCoord[1] = cell.aCoord[1];\n            cell_1.aCoord[2] = cell.aCoord[2];\n            cell_1.aCoord[3] = cell.aCoord[3];\n            cell_1.aCoord[4] = cell.aCoord[4];\n            cell_1.aCoord[5] = cell.aCoord[5];\n            cell_1.aCoord[6] = cell.aCoord[6];\n            cell_1.aCoord[7] = cell.aCoord[7];\n            cell_1.aCoord[8] = cell.aCoord[8];\n            cell_1.aCoord[9] = cell.aCoord[9];\n            RVar8 = cellArea((Rtree *)(uint)pRtree_00->nDim,(RtreeCell *)(uint)bVar2,\n                             (Rtree *)&cell_1);\n            cellUnion((Rtree *)&pRtree_00->nDim2,(RtreeCell *)(uint)bVar2,&cell_1,\n                      (Rtree *)((ulonglong)uVar7 >> 0x20));\n            bVar2 = pRtree_00->nDim;\n            bVar3 = pRtree_00->eCoordType;\n            RVar9 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell_1);\n            dVar4 = RVar9 - RVar8;\n            RVar8 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell);\n            if (((iCell == 0) || (dVar4 < local_c4)) || ((dVar4 == local_c4 && (RVar8 < local_bc))))\n            {\n              local_ac = (RtreeNode *)cell.iRowid;\n              local_c4 = dVar4;\n              local_bc = RVar8;\n            }\n            iCell = iCell + 1;\n          } while (iCell != uVar6);\n        }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n          local_ac = (RtreeNode *)0x0;\n        }" { (expression_statement "local_ac = (RtreeNode *)0x0;" (assignment_expression "local_ac = (RtreeNode *)0x0" identifier = (cast_expression "(RtreeNode *)0x0" ( (type_descriptor "RtreeNode *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n          iCell = 0;\n          local_ac = (RtreeNode *)0x0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            nodeGetCell(pRtree_00,pNode,iCell,&cell);\n            bVar2 = pRtree_00->eCoordType;\n            cell_1.iRowid._0_4_ = (RtreeNode *)cell.iRowid;\n            cell_1.iRowid._4_4_ = cell.iRowid._4_4_;\n            cell_1.aCoord[0] = cell.aCoord[0];\n            cell_1.aCoord[1] = cell.aCoord[1];\n            cell_1.aCoord[2] = cell.aCoord[2];\n            cell_1.aCoord[3] = cell.aCoord[3];\n            cell_1.aCoord[4] = cell.aCoord[4];\n            cell_1.aCoord[5] = cell.aCoord[5];\n            cell_1.aCoord[6] = cell.aCoord[6];\n            cell_1.aCoord[7] = cell.aCoord[7];\n            cell_1.aCoord[8] = cell.aCoord[8];\n            cell_1.aCoord[9] = cell.aCoord[9];\n            RVar8 = cellArea((Rtree *)(uint)pRtree_00->nDim,(RtreeCell *)(uint)bVar2,\n                             (Rtree *)&cell_1);\n            cellUnion((Rtree *)&pRtree_00->nDim2,(RtreeCell *)(uint)bVar2,&cell_1,\n                      (Rtree *)((ulonglong)uVar7 >> 0x20));\n            bVar2 = pRtree_00->nDim;\n            bVar3 = pRtree_00->eCoordType;\n            RVar9 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell_1);\n            dVar4 = RVar9 - RVar8;\n            RVar8 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell);\n            if (((iCell == 0) || (dVar4 < local_c4)) || ((dVar4 == local_c4 && (RVar8 < local_bc))))\n            {\n              local_ac = (RtreeNode *)cell.iRowid;\n              local_c4 = dVar4;\n              local_bc = RVar8;\n            }\n            iCell = iCell + 1;\n          } while (iCell != uVar6);\n        }" else (compound_statement "{\n          iCell = 0;\n          local_ac = (RtreeNode *)0x0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            nodeGetCell(pRtree_00,pNode,iCell,&cell);\n            bVar2 = pRtree_00->eCoordType;\n            cell_1.iRowid._0_4_ = (RtreeNode *)cell.iRowid;\n            cell_1.iRowid._4_4_ = cell.iRowid._4_4_;\n            cell_1.aCoord[0] = cell.aCoord[0];\n            cell_1.aCoord[1] = cell.aCoord[1];\n            cell_1.aCoord[2] = cell.aCoord[2];\n            cell_1.aCoord[3] = cell.aCoord[3];\n            cell_1.aCoord[4] = cell.aCoord[4];\n            cell_1.aCoord[5] = cell.aCoord[5];\n            cell_1.aCoord[6] = cell.aCoord[6];\n            cell_1.aCoord[7] = cell.aCoord[7];\n            cell_1.aCoord[8] = cell.aCoord[8];\n            cell_1.aCoord[9] = cell.aCoord[9];\n            RVar8 = cellArea((Rtree *)(uint)pRtree_00->nDim,(RtreeCell *)(uint)bVar2,\n                             (Rtree *)&cell_1);\n            cellUnion((Rtree *)&pRtree_00->nDim2,(RtreeCell *)(uint)bVar2,&cell_1,\n                      (Rtree *)((ulonglong)uVar7 >> 0x20));\n            bVar2 = pRtree_00->nDim;\n            bVar3 = pRtree_00->eCoordType;\n            RVar9 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell_1);\n            dVar4 = RVar9 - RVar8;\n            RVar8 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell);\n            if (((iCell == 0) || (dVar4 < local_c4)) || ((dVar4 == local_c4 && (RVar8 < local_bc))))\n            {\n              local_ac = (RtreeNode *)cell.iRowid;\n              local_c4 = dVar4;\n              local_bc = RVar8;\n            }\n            iCell = iCell + 1;\n          } while (iCell != uVar6);\n        }" { (expression_statement "iCell = 0;" (assignment_expression "iCell = 0" identifier = number_literal) ;) (expression_statement "local_ac = (RtreeNode *)0x0;" (assignment_expression "local_ac = (RtreeNode *)0x0" identifier = (cast_expression "(RtreeNode *)0x0" ( (type_descriptor "RtreeNode *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_bc = 0.0;" (assignment_expression "local_bc = 0.0" identifier = number_literal) ;) (expression_statement "local_c4 = 0.0;" (assignment_expression "local_c4 = 0.0" identifier = number_literal) ;) (do_statement "do {\n            nodeGetCell(pRtree_00,pNode,iCell,&cell);\n            bVar2 = pRtree_00->eCoordType;\n            cell_1.iRowid._0_4_ = (RtreeNode *)cell.iRowid;\n            cell_1.iRowid._4_4_ = cell.iRowid._4_4_;\n            cell_1.aCoord[0] = cell.aCoord[0];\n            cell_1.aCoord[1] = cell.aCoord[1];\n            cell_1.aCoord[2] = cell.aCoord[2];\n            cell_1.aCoord[3] = cell.aCoord[3];\n            cell_1.aCoord[4] = cell.aCoord[4];\n            cell_1.aCoord[5] = cell.aCoord[5];\n            cell_1.aCoord[6] = cell.aCoord[6];\n            cell_1.aCoord[7] = cell.aCoord[7];\n            cell_1.aCoord[8] = cell.aCoord[8];\n            cell_1.aCoord[9] = cell.aCoord[9];\n            RVar8 = cellArea((Rtree *)(uint)pRtree_00->nDim,(RtreeCell *)(uint)bVar2,\n                             (Rtree *)&cell_1);\n            cellUnion((Rtree *)&pRtree_00->nDim2,(RtreeCell *)(uint)bVar2,&cell_1,\n                      (Rtree *)((ulonglong)uVar7 >> 0x20));\n            bVar2 = pRtree_00->nDim;\n            bVar3 = pRtree_00->eCoordType;\n            RVar9 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell_1);\n            dVar4 = RVar9 - RVar8;\n            RVar8 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell);\n            if (((iCell == 0) || (dVar4 < local_c4)) || ((dVar4 == local_c4 && (RVar8 < local_bc))))\n            {\n              local_ac = (RtreeNode *)cell.iRowid;\n              local_c4 = dVar4;\n              local_bc = RVar8;\n            }\n            iCell = iCell + 1;\n          } while (iCell != uVar6);" do (compound_statement "{\n            nodeGetCell(pRtree_00,pNode,iCell,&cell);\n            bVar2 = pRtree_00->eCoordType;\n            cell_1.iRowid._0_4_ = (RtreeNode *)cell.iRowid;\n            cell_1.iRowid._4_4_ = cell.iRowid._4_4_;\n            cell_1.aCoord[0] = cell.aCoord[0];\n            cell_1.aCoord[1] = cell.aCoord[1];\n            cell_1.aCoord[2] = cell.aCoord[2];\n            cell_1.aCoord[3] = cell.aCoord[3];\n            cell_1.aCoord[4] = cell.aCoord[4];\n            cell_1.aCoord[5] = cell.aCoord[5];\n            cell_1.aCoord[6] = cell.aCoord[6];\n            cell_1.aCoord[7] = cell.aCoord[7];\n            cell_1.aCoord[8] = cell.aCoord[8];\n            cell_1.aCoord[9] = cell.aCoord[9];\n            RVar8 = cellArea((Rtree *)(uint)pRtree_00->nDim,(RtreeCell *)(uint)bVar2,\n                             (Rtree *)&cell_1);\n            cellUnion((Rtree *)&pRtree_00->nDim2,(RtreeCell *)(uint)bVar2,&cell_1,\n                      (Rtree *)((ulonglong)uVar7 >> 0x20));\n            bVar2 = pRtree_00->nDim;\n            bVar3 = pRtree_00->eCoordType;\n            RVar9 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell_1);\n            dVar4 = RVar9 - RVar8;\n            RVar8 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell);\n            if (((iCell == 0) || (dVar4 < local_c4)) || ((dVar4 == local_c4 && (RVar8 < local_bc))))\n            {\n              local_ac = (RtreeNode *)cell.iRowid;\n              local_c4 = dVar4;\n              local_bc = RVar8;\n            }\n            iCell = iCell + 1;\n          }" { (expression_statement "nodeGetCell(pRtree_00,pNode,iCell,&cell);" (call_expression "nodeGetCell(pRtree_00,pNode,iCell,&cell)" identifier (argument_list "(pRtree_00,pNode,iCell,&cell)" ( identifier , identifier , identifier , (pointer_expression "&cell" & identifier) ))) ;) (expression_statement "bVar2 = pRtree_00->eCoordType;" (assignment_expression "bVar2 = pRtree_00->eCoordType" identifier = (field_expression "pRtree_00->eCoordType" identifier -> field_identifier)) ;) (expression_statement "cell_1.iRowid._0_4_ = (RtreeNode *)cell.iRowid;" (assignment_expression "cell_1.iRowid._0_4_ = (RtreeNode *)cell.iRowid" (field_expression "cell_1.iRowid._0_4_" (field_expression "cell_1.iRowid" identifier . field_identifier) . field_identifier) = (cast_expression "(RtreeNode *)cell.iRowid" ( (type_descriptor "RtreeNode *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "cell.iRowid" identifier . field_identifier))) ;) (expression_statement "cell_1.iRowid._4_4_ = cell.iRowid._4_4_;" (assignment_expression "cell_1.iRowid._4_4_ = cell.iRowid._4_4_" (field_expression "cell_1.iRowid._4_4_" (field_expression "cell_1.iRowid" identifier . field_identifier) . field_identifier) = (field_expression "cell.iRowid._4_4_" (field_expression "cell.iRowid" identifier . field_identifier) . field_identifier)) ;) (expression_statement "cell_1.aCoord[0] = cell.aCoord[0];" (assignment_expression "cell_1.aCoord[0] = cell.aCoord[0]" (subscript_expression "cell_1.aCoord[0]" (field_expression "cell_1.aCoord" identifier . field_identifier) [ number_literal ]) = (subscript_expression "cell.aCoord[0]" (field_expression "cell.aCoord" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "cell_1.aCoord[1] = cell.aCoord[1];" (assignment_expression "cell_1.aCoord[1] = cell.aCoord[1]" (subscript_expression "cell_1.aCoord[1]" (field_expression "cell_1.aCoord" identifier . field_identifier) [ number_literal ]) = (subscript_expression "cell.aCoord[1]" (field_expression "cell.aCoord" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "cell_1.aCoord[2] = cell.aCoord[2];" (assignment_expression "cell_1.aCoord[2] = cell.aCoord[2]" (subscript_expression "cell_1.aCoord[2]" (field_expression "cell_1.aCoord" identifier . field_identifier) [ number_literal ]) = (subscript_expression "cell.aCoord[2]" (field_expression "cell.aCoord" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "cell_1.aCoord[3] = cell.aCoord[3];" (assignment_expression "cell_1.aCoord[3] = cell.aCoord[3]" (subscript_expression "cell_1.aCoord[3]" (field_expression "cell_1.aCoord" identifier . field_identifier) [ number_literal ]) = (subscript_expression "cell.aCoord[3]" (field_expression "cell.aCoord" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "cell_1.aCoord[4] = cell.aCoord[4];" (assignment_expression "cell_1.aCoord[4] = cell.aCoord[4]" (subscript_expression "cell_1.aCoord[4]" (field_expression "cell_1.aCoord" identifier . field_identifier) [ number_literal ]) = (subscript_expression "cell.aCoord[4]" (field_expression "cell.aCoord" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "cell_1.aCoord[5] = cell.aCoord[5];" (assignment_expression "cell_1.aCoord[5] = cell.aCoord[5]" (subscript_expression "cell_1.aCoord[5]" (field_expression "cell_1.aCoord" identifier . field_identifier) [ number_literal ]) = (subscript_expression "cell.aCoord[5]" (field_expression "cell.aCoord" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "cell_1.aCoord[6] = cell.aCoord[6];" (assignment_expression "cell_1.aCoord[6] = cell.aCoord[6]" (subscript_expression "cell_1.aCoord[6]" (field_expression "cell_1.aCoord" identifier . field_identifier) [ number_literal ]) = (subscript_expression "cell.aCoord[6]" (field_expression "cell.aCoord" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "cell_1.aCoord[7] = cell.aCoord[7];" (assignment_expression "cell_1.aCoord[7] = cell.aCoord[7]" (subscript_expression "cell_1.aCoord[7]" (field_expression "cell_1.aCoord" identifier . field_identifier) [ number_literal ]) = (subscript_expression "cell.aCoord[7]" (field_expression "cell.aCoord" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "cell_1.aCoord[8] = cell.aCoord[8];" (assignment_expression "cell_1.aCoord[8] = cell.aCoord[8]" (subscript_expression "cell_1.aCoord[8]" (field_expression "cell_1.aCoord" identifier . field_identifier) [ number_literal ]) = (subscript_expression "cell.aCoord[8]" (field_expression "cell.aCoord" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "cell_1.aCoord[9] = cell.aCoord[9];" (assignment_expression "cell_1.aCoord[9] = cell.aCoord[9]" (subscript_expression "cell_1.aCoord[9]" (field_expression "cell_1.aCoord" identifier . field_identifier) [ number_literal ]) = (subscript_expression "cell.aCoord[9]" (field_expression "cell.aCoord" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "RVar8 = cellArea((Rtree *)(uint)pRtree_00->nDim,(RtreeCell *)(uint)bVar2,\n                             (Rtree *)&cell_1);" (assignment_expression "RVar8 = cellArea((Rtree *)(uint)pRtree_00->nDim,(RtreeCell *)(uint)bVar2,\n                             (Rtree *)&cell_1)" identifier = (call_expression "cellArea((Rtree *)(uint)pRtree_00->nDim,(RtreeCell *)(uint)bVar2,\n                             (Rtree *)&cell_1)" identifier (argument_list "((Rtree *)(uint)pRtree_00->nDim,(RtreeCell *)(uint)bVar2,\n                             (Rtree *)&cell_1)" ( (cast_expression "(Rtree *)(uint)pRtree_00->nDim" ( (type_descriptor "Rtree *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)pRtree_00->nDim" ( (type_descriptor "uint" type_identifier) ) (field_expression "pRtree_00->nDim" identifier -> field_identifier))) , (cast_expression "(RtreeCell *)(uint)bVar2" ( (type_descriptor "RtreeCell *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) , (cast_expression "(Rtree *)&cell_1" ( (type_descriptor "Rtree *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&cell_1" & identifier)) )))) ;) (expression_statement "cellUnion((Rtree *)&pRtree_00->nDim2,(RtreeCell *)(uint)bVar2,&cell_1,\n                      (Rtree *)((ulonglong)uVar7 >> 0x20));" (call_expression "cellUnion((Rtree *)&pRtree_00->nDim2,(RtreeCell *)(uint)bVar2,&cell_1,\n                      (Rtree *)((ulonglong)uVar7 >> 0x20))" identifier (argument_list "((Rtree *)&pRtree_00->nDim2,(RtreeCell *)(uint)bVar2,&cell_1,\n                      (Rtree *)((ulonglong)uVar7 >> 0x20))" ( (cast_expression "(Rtree *)&pRtree_00->nDim2" ( (type_descriptor "Rtree *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pRtree_00->nDim2" & (field_expression "pRtree_00->nDim2" identifier -> field_identifier))) , (cast_expression "(RtreeCell *)(uint)bVar2" ( (type_descriptor "RtreeCell *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) , (pointer_expression "&cell_1" & identifier) , (cast_expression "(Rtree *)((ulonglong)uVar7 >> 0x20)" ( (type_descriptor "Rtree *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar7 >> 0x20)" ( (binary_expression "(ulonglong)uVar7 >> 0x20" (cast_expression "(ulonglong)uVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) ))) ;) (expression_statement "bVar2 = pRtree_00->nDim;" (assignment_expression "bVar2 = pRtree_00->nDim" identifier = (field_expression "pRtree_00->nDim" identifier -> field_identifier)) ;) (expression_statement "bVar3 = pRtree_00->eCoordType;" (assignment_expression "bVar3 = pRtree_00->eCoordType" identifier = (field_expression "pRtree_00->eCoordType" identifier -> field_identifier)) ;) (expression_statement "RVar9 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell_1);" (assignment_expression "RVar9 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell_1)" identifier = (call_expression "cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell_1)" identifier (argument_list "((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell_1)" ( (cast_expression "(Rtree *)(uint)bVar2" ( (type_descriptor "Rtree *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) , (cast_expression "(RtreeCell *)(uint)bVar3" ( (type_descriptor "RtreeCell *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) , (cast_expression "(Rtree *)&cell_1" ( (type_descriptor "Rtree *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&cell_1" & identifier)) )))) ;) (expression_statement "dVar4 = RVar9 - RVar8;" (assignment_expression "dVar4 = RVar9 - RVar8" identifier = (binary_expression "RVar9 - RVar8" identifier - identifier)) ;) (expression_statement "RVar8 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell);" (assignment_expression "RVar8 = cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell)" identifier = (call_expression "cellArea((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell)" identifier (argument_list "((Rtree *)(uint)bVar2,(RtreeCell *)(uint)bVar3,(Rtree *)&cell)" ( (cast_expression "(Rtree *)(uint)bVar2" ( (type_descriptor "Rtree *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) , (cast_expression "(RtreeCell *)(uint)bVar3" ( (type_descriptor "RtreeCell *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) , (cast_expression "(Rtree *)&cell" ( (type_descriptor "Rtree *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&cell" & identifier)) )))) ;) (if_statement "if (((iCell == 0) || (dVar4 < local_c4)) || ((dVar4 == local_c4 && (RVar8 < local_bc))))\n            {\n              local_ac = (RtreeNode *)cell.iRowid;\n              local_c4 = dVar4;\n              local_bc = RVar8;\n            }" if (parenthesized_expression "(((iCell == 0) || (dVar4 < local_c4)) || ((dVar4 == local_c4 && (RVar8 < local_bc))))" ( (binary_expression "((iCell == 0) || (dVar4 < local_c4)) || ((dVar4 == local_c4 && (RVar8 < local_bc)))" (parenthesized_expression "((iCell == 0) || (dVar4 < local_c4))" ( (binary_expression "(iCell == 0) || (dVar4 < local_c4)" (parenthesized_expression "(iCell == 0)" ( (binary_expression "iCell == 0" identifier == number_literal) )) || (parenthesized_expression "(dVar4 < local_c4)" ( (binary_expression "dVar4 < local_c4" identifier < identifier) ))) )) || (parenthesized_expression "((dVar4 == local_c4 && (RVar8 < local_bc)))" ( (parenthesized_expression "(dVar4 == local_c4 && (RVar8 < local_bc))" ( (binary_expression "dVar4 == local_c4 && (RVar8 < local_bc)" (binary_expression "dVar4 == local_c4" identifier == identifier) && (parenthesized_expression "(RVar8 < local_bc)" ( (binary_expression "RVar8 < local_bc" identifier < identifier) ))) )) ))) )) (compound_statement "{\n              local_ac = (RtreeNode *)cell.iRowid;\n              local_c4 = dVar4;\n              local_bc = RVar8;\n            }" { (expression_statement "local_ac = (RtreeNode *)cell.iRowid;" (assignment_expression "local_ac = (RtreeNode *)cell.iRowid" identifier = (cast_expression "(RtreeNode *)cell.iRowid" ( (type_descriptor "RtreeNode *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "cell.iRowid" identifier . field_identifier))) ;) (expression_statement "local_c4 = dVar4;" (assignment_expression "local_c4 = dVar4" identifier = identifier) ;) (expression_statement "local_bc = RVar8;" (assignment_expression "local_bc = RVar8" identifier = identifier) ;) })) (expression_statement "iCell = iCell + 1;" (assignment_expression "iCell = iCell + 1" identifier = (binary_expression "iCell + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iCell != uVar6)" ( (binary_expression "iCell != uVar6" identifier != identifier) )) ;) }))) (expression_statement "sqlite3_free((void *)0x0);" (call_expression "sqlite3_free((void *)0x0)" identifier (argument_list "((void *)0x0)" ( (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) (expression_statement "iVar5 = nodeAcquire(pRtree_00,CONCAT44(&pChild,pNode),local_ac,in_stack_ffffff1c);" (assignment_expression "iVar5 = nodeAcquire(pRtree_00,CONCAT44(&pChild,pNode),local_ac,in_stack_ffffff1c)" identifier = (call_expression "nodeAcquire(pRtree_00,CONCAT44(&pChild,pNode),local_ac,in_stack_ffffff1c)" identifier (argument_list "(pRtree_00,CONCAT44(&pChild,pNode),local_ac,in_stack_ffffff1c)" ( identifier , (call_expression "CONCAT44(&pChild,pNode)" identifier (argument_list "(&pChild,pNode)" ( (pointer_expression "&pChild" & identifier) , identifier ))) , identifier , identifier )))) ;) (expression_statement "nodeRelease(pRtree_00,pNode);" (call_expression "nodeRelease(pRtree_00,pNode)" identifier (argument_list "(pRtree_00,pNode)" ( identifier , identifier ))) ;) (expression_statement "pNode = pChild;" (assignment_expression "pNode = pChild" identifier = identifier) ;) (expression_statement "local_a0 = local_a0 + 1;" (assignment_expression "local_a0 = local_a0 + 1" identifier = (binary_expression "local_a0 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((iVar5 == 0) && (local_a0 < pRtree_00->iDepth - extraout_ECX))" ( (binary_expression "(iVar5 == 0) && (local_a0 < pRtree_00->iDepth - extraout_ECX)" (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) && (parenthesized_expression "(local_a0 < pRtree_00->iDepth - extraout_ECX)" ( (binary_expression "local_a0 < pRtree_00->iDepth - extraout_ECX" identifier < (binary_expression "pRtree_00->iDepth - extraout_ECX" (field_expression "pRtree_00->iDepth" identifier -> field_identifier) - identifier)) ))) )) ;) }))) })) (expression_statement "(pRtree->base).pModule = (sqlite3_module *)pNode;" (assignment_expression "(pRtree->base).pModule = (sqlite3_module *)pNode" (field_expression "(pRtree->base).pModule" (parenthesized_expression "(pRtree->base)" ( (field_expression "pRtree->base" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(sqlite3_module *)pNode" ( (type_descriptor "sqlite3_module *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar5;\n  }" if (parenthesized_expression "(iVar1 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return iVar5;\n  }" { (return_statement "return iVar5;" return identifier ;) })) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "int FUN_000ed4e0(int *param_1)\n\n{\n  double dVar1;\n  int iVar2;\n  uint uVar3;\n  int extraout_ECX;\n  uint uVar4;\n  int in_GS_OFFSET;\n  longdouble lVar5;\n  longdouble lVar6;\n  undefined8 uVar7;\n  double local_c4;\n  double local_bc;\n  int local_a0;\n  int local_88;\n  int local_84;\n  undefined4 local_80;\n  undefined4 local_7c;\n  undefined4 local_78;\n  undefined4 local_74;\n  undefined4 local_70;\n  undefined4 local_6c;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  undefined4 local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  \n  uVar7 = FUN_0001af1a();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_88 = 0;\n  iVar2 = FUN_000ecd60(0,&local_88);\n  if (iVar2 == 0) {\n    iVar2 = *(int *)((int)uVar7 + 0x1c);\n    if (iVar2 == extraout_ECX || iVar2 - extraout_ECX < 0) {\n      iVar2 = 0;\n    }\n    else {\n      local_a0 = 0;\n      do {\n        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));\n        if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }\n        FUN_000264d0(0);\n        iVar2 = FUN_000ecd60(local_88,&local_84);\n        FUN_000d2b30();\n        local_88 = local_84;\n        local_a0 = local_a0 + 1;\n      } while ((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX));\n    }\n  }\n  *param_1 = local_88;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar2;\n  }\n                    \n  FUN_000f6410();\n}\n\n" (function_definition "int FUN_000ed4e0(int *param_1)\n\n{\n  double dVar1;\n  int iVar2;\n  uint uVar3;\n  int extraout_ECX;\n  uint uVar4;\n  int in_GS_OFFSET;\n  longdouble lVar5;\n  longdouble lVar6;\n  undefined8 uVar7;\n  double local_c4;\n  double local_bc;\n  int local_a0;\n  int local_88;\n  int local_84;\n  undefined4 local_80;\n  undefined4 local_7c;\n  undefined4 local_78;\n  undefined4 local_74;\n  undefined4 local_70;\n  undefined4 local_6c;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  undefined4 local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  \n  uVar7 = FUN_0001af1a();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_88 = 0;\n  iVar2 = FUN_000ecd60(0,&local_88);\n  if (iVar2 == 0) {\n    iVar2 = *(int *)((int)uVar7 + 0x1c);\n    if (iVar2 == extraout_ECX || iVar2 - extraout_ECX < 0) {\n      iVar2 = 0;\n    }\n    else {\n      local_a0 = 0;\n      do {\n        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));\n        if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }\n        FUN_000264d0(0);\n        iVar2 = FUN_000ecd60(local_88,&local_84);\n        FUN_000d2b30();\n        local_88 = local_84;\n        local_a0 = local_a0 + 1;\n      } while ((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX));\n    }\n  }\n  *param_1 = local_88;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar2;\n  }\n                    \n  FUN_000f6410();\n}" primitive_type (function_declarator "FUN_000ed4e0(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  double dVar1;\n  int iVar2;\n  uint uVar3;\n  int extraout_ECX;\n  uint uVar4;\n  int in_GS_OFFSET;\n  longdouble lVar5;\n  longdouble lVar6;\n  undefined8 uVar7;\n  double local_c4;\n  double local_bc;\n  int local_a0;\n  int local_88;\n  int local_84;\n  undefined4 local_80;\n  undefined4 local_7c;\n  undefined4 local_78;\n  undefined4 local_74;\n  undefined4 local_70;\n  undefined4 local_6c;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  undefined4 local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  \n  uVar7 = FUN_0001af1a();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_88 = 0;\n  iVar2 = FUN_000ecd60(0,&local_88);\n  if (iVar2 == 0) {\n    iVar2 = *(int *)((int)uVar7 + 0x1c);\n    if (iVar2 == extraout_ECX || iVar2 - extraout_ECX < 0) {\n      iVar2 = 0;\n    }\n    else {\n      local_a0 = 0;\n      do {\n        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));\n        if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }\n        FUN_000264d0(0);\n        iVar2 = FUN_000ecd60(local_88,&local_84);\n        FUN_000d2b30();\n        local_88 = local_84;\n        local_a0 = local_a0 + 1;\n      } while ((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX));\n    }\n  }\n  *param_1 = local_88;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar2;\n  }\n                    \n  FUN_000f6410();\n}" { (declaration "double dVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "longdouble lVar5;" type_identifier identifier ;) (declaration "longdouble lVar6;" type_identifier identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "double local_c4;" primitive_type identifier ;) (declaration "double local_bc;" primitive_type identifier ;) (declaration "int local_a0;" primitive_type identifier ;) (declaration "int local_88;" primitive_type identifier ;) (declaration "int local_84;" primitive_type identifier ;) (declaration "undefined4 local_80;" type_identifier identifier ;) (declaration "undefined4 local_7c;" type_identifier identifier ;) (declaration "undefined4 local_78;" type_identifier identifier ;) (declaration "undefined4 local_74;" type_identifier identifier ;) (declaration "undefined4 local_70;" type_identifier identifier ;) (declaration "undefined4 local_6c;" type_identifier identifier ;) (declaration "undefined4 local_68;" type_identifier identifier ;) (declaration "undefined4 local_64;" type_identifier identifier ;) (declaration "undefined4 local_60;" type_identifier identifier ;) (declaration "undefined4 local_5c;" type_identifier identifier ;) (declaration "undefined4 local_58;" type_identifier identifier ;) (declaration "undefined4 local_54;" type_identifier identifier ;) (declaration "undefined4 local_50;" type_identifier identifier ;) (declaration "undefined4 local_4c;" type_identifier identifier ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "undefined4 local_40;" type_identifier identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "undefined4 local_38;" type_identifier identifier ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "uVar7 = FUN_0001af1a();" (assignment_expression "uVar7 = FUN_0001af1a()" identifier = (call_expression "FUN_0001af1a()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" identifier = number_literal) ;) (expression_statement "iVar2 = FUN_000ecd60(0,&local_88);" (assignment_expression "iVar2 = FUN_000ecd60(0,&local_88)" identifier = (call_expression "FUN_000ecd60(0,&local_88)" identifier (argument_list "(0,&local_88)" ( number_literal , (pointer_expression "&local_88" & identifier) )))) ;) (if_statement "if (iVar2 == 0) {\n    iVar2 = *(int *)((int)uVar7 + 0x1c);\n    if (iVar2 == extraout_ECX || iVar2 - extraout_ECX < 0) {\n      iVar2 = 0;\n    }\n    else {\n      local_a0 = 0;\n      do {\n        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));\n        if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }\n        FUN_000264d0(0);\n        iVar2 = FUN_000ecd60(local_88,&local_84);\n        FUN_000d2b30();\n        local_88 = local_84;\n        local_a0 = local_a0 + 1;\n      } while ((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX));\n    }\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar2 = *(int *)((int)uVar7 + 0x1c);\n    if (iVar2 == extraout_ECX || iVar2 - extraout_ECX < 0) {\n      iVar2 = 0;\n    }\n    else {\n      local_a0 = 0;\n      do {\n        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));\n        if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }\n        FUN_000264d0(0);\n        iVar2 = FUN_000ecd60(local_88,&local_84);\n        FUN_000d2b30();\n        local_88 = local_84;\n        local_a0 = local_a0 + 1;\n      } while ((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX));\n    }\n  }" { (expression_statement "iVar2 = *(int *)((int)uVar7 + 0x1c);" (assignment_expression "iVar2 = *(int *)((int)uVar7 + 0x1c)" identifier = (pointer_expression "*(int *)((int)uVar7 + 0x1c)" * (cast_expression "(int *)((int)uVar7 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)uVar7 + 0x1c)" ( (binary_expression "(int)uVar7 + 0x1c" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (iVar2 == extraout_ECX || iVar2 - extraout_ECX < 0) {\n      iVar2 = 0;\n    }\n    else {\n      local_a0 = 0;\n      do {\n        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));\n        if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }\n        FUN_000264d0(0);\n        iVar2 = FUN_000ecd60(local_88,&local_84);\n        FUN_000d2b30();\n        local_88 = local_84;\n        local_a0 = local_a0 + 1;\n      } while ((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX));\n    }" if (parenthesized_expression "(iVar2 == extraout_ECX || iVar2 - extraout_ECX < 0)" ( (binary_expression "iVar2 == extraout_ECX || iVar2 - extraout_ECX < 0" (binary_expression "iVar2 == extraout_ECX" identifier == identifier) || (binary_expression "iVar2 - extraout_ECX < 0" (binary_expression "iVar2 - extraout_ECX" identifier - identifier) < number_literal)) )) (compound_statement "{\n      iVar2 = 0;\n    }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      local_a0 = 0;\n      do {\n        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));\n        if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }\n        FUN_000264d0(0);\n        iVar2 = FUN_000ecd60(local_88,&local_84);\n        FUN_000d2b30();\n        local_88 = local_84;\n        local_a0 = local_a0 + 1;\n      } while ((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX));\n    }" else (compound_statement "{\n      local_a0 = 0;\n      do {\n        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));\n        if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }\n        FUN_000264d0(0);\n        iVar2 = FUN_000ecd60(local_88,&local_84);\n        FUN_000d2b30();\n        local_88 = local_84;\n        local_a0 = local_a0 + 1;\n      } while ((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX));\n    }" { (expression_statement "local_a0 = 0;" (assignment_expression "local_a0 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));\n        if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }\n        FUN_000264d0(0);\n        iVar2 = FUN_000ecd60(local_88,&local_84);\n        FUN_000d2b30();\n        local_88 = local_84;\n        local_a0 = local_a0 + 1;\n      } while ((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX));" do (compound_statement "{\n        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));\n        if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }\n        FUN_000264d0(0);\n        iVar2 = FUN_000ecd60(local_88,&local_84);\n        FUN_000d2b30();\n        local_88 = local_84;\n        local_a0 = local_a0 + 1;\n      }" { (expression_statement "uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));" (assignment_expression "uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3))" identifier = (cast_expression "(uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3))" identifier (argument_list "(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3))" ( (pointer_expression "*(undefined1 *)(*(int *)(local_88 + 0x14) + 2)" * (cast_expression "(undefined1 *)(*(int *)(local_88 + 0x14) + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_88 + 0x14) + 2)" ( (binary_expression "*(int *)(local_88 + 0x14) + 2" (pointer_expression "*(int *)(local_88 + 0x14)" * (cast_expression "(int *)(local_88 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_88 + 0x14)" ( (binary_expression "local_88 + 0x14" identifier + number_literal) )))) + number_literal) )))) , (pointer_expression "*(undefined1 *)(*(int *)(local_88 + 0x14) + 3)" * (cast_expression "(undefined1 *)(*(int *)(local_88 + 0x14) + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_88 + 0x14) + 3)" ( (binary_expression "*(int *)(local_88 + 0x14) + 3" (pointer_expression "*(int *)(local_88 + 0x14)" * (cast_expression "(int *)(local_88 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_88 + 0x14)" ( (binary_expression "local_88 + 0x14" identifier + number_literal) )))) + number_literal) )))) ))))) ;) (if_statement "if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (compound_statement "{\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "local_bc = 0.0;" (assignment_expression "local_bc = 0.0" identifier = number_literal) ;) (expression_statement "local_c4 = 0.0;" (assignment_expression "local_c4 = 0.0" identifier = number_literal) ;) (do_statement "do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);" do (compound_statement "{\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          }" { (expression_statement "FUN_00025480(&local_80);" (call_expression "FUN_00025480(&local_80)" identifier (argument_list "(&local_80)" ( (pointer_expression "&local_80" & identifier) ))) ;) (expression_statement "local_50 = local_80;" (assignment_expression "local_50 = local_80" identifier = identifier) ;) (expression_statement "local_4c = local_7c;" (assignment_expression "local_4c = local_7c" identifier = identifier) ;) (expression_statement "local_48 = local_78;" (assignment_expression "local_48 = local_78" identifier = identifier) ;) (expression_statement "local_44 = local_74;" (assignment_expression "local_44 = local_74" identifier = identifier) ;) (expression_statement "local_40 = local_70;" (assignment_expression "local_40 = local_70" identifier = identifier) ;) (expression_statement "local_3c = local_6c;" (assignment_expression "local_3c = local_6c" identifier = identifier) ;) (expression_statement "local_38 = local_68;" (assignment_expression "local_38 = local_68" identifier = identifier) ;) (expression_statement "local_34 = local_64;" (assignment_expression "local_34 = local_64" identifier = identifier) ;) (expression_statement "local_30 = local_60;" (assignment_expression "local_30 = local_60" identifier = identifier) ;) (expression_statement "local_2c = local_5c;" (assignment_expression "local_2c = local_5c" identifier = identifier) ;) (expression_statement "local_28 = local_58;" (assignment_expression "local_28 = local_58" identifier = identifier) ;) (expression_statement "local_24 = local_54;" (assignment_expression "local_24 = local_54" identifier = identifier) ;) (expression_statement "lVar5 = (longdouble)FUN_00033590();" (assignment_expression "lVar5 = (longdouble)FUN_00033590()" identifier = (cast_expression "(longdouble)FUN_00033590()" ( (type_descriptor "longdouble" type_identifier) ) (call_expression "FUN_00033590()" identifier (argument_list "()" ( ))))) ;) (expression_statement "FUN_00033700((int)((ulonglong)uVar7 >> 0x20));" (call_expression "FUN_00033700((int)((ulonglong)uVar7 >> 0x20))" identifier (argument_list "((int)((ulonglong)uVar7 >> 0x20))" ( (cast_expression "(int)((ulonglong)uVar7 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar7 >> 0x20)" ( (binary_expression "(ulonglong)uVar7 >> 0x20" (cast_expression "(ulonglong)uVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) ))) ;) (expression_statement "lVar6 = (longdouble)FUN_00033590();" (assignment_expression "lVar6 = (longdouble)FUN_00033590()" identifier = (cast_expression "(longdouble)FUN_00033590()" ( (type_descriptor "longdouble" type_identifier) ) (call_expression "FUN_00033590()" identifier (argument_list "()" ( ))))) ;) (expression_statement "dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);" (assignment_expression "dVar1 = (double)(lVar6 - (longdouble)(double)lVar5)" identifier = (cast_expression "(double)(lVar6 - (longdouble)(double)lVar5)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(lVar6 - (longdouble)(double)lVar5)" ( (binary_expression "lVar6 - (longdouble)(double)lVar5" identifier - (cast_expression "(longdouble)(double)lVar5" ( (type_descriptor "longdouble" type_identifier) ) (cast_expression "(double)lVar5" ( (type_descriptor "double" primitive_type) ) identifier))) )))) ;) (expression_statement "lVar5 = (longdouble)FUN_00033590();" (assignment_expression "lVar5 = (longdouble)FUN_00033590()" identifier = (cast_expression "(longdouble)FUN_00033590()" ( (type_descriptor "longdouble" type_identifier) ) (call_expression "FUN_00033590()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }" if (parenthesized_expression "(((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc))))" ( (binary_expression "((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))" (parenthesized_expression "((uVar4 == 0) || (dVar1 < local_c4))" ( (binary_expression "(uVar4 == 0) || (dVar1 < local_c4)" (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) || (parenthesized_expression "(dVar1 < local_c4)" ( (binary_expression "dVar1 < local_c4" identifier < identifier) ))) )) || (parenthesized_expression "((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))" ( (parenthesized_expression "(dVar1 == local_c4 && (lVar5 < (longdouble)local_bc))" ( (binary_expression "dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)" (binary_expression "dVar1 == local_c4" identifier == identifier) && (parenthesized_expression "(lVar5 < (longdouble)local_bc)" ( (binary_expression "lVar5 < (longdouble)local_bc" identifier < (cast_expression "(longdouble)local_bc" ( (type_descriptor "longdouble" type_identifier) ) identifier)) ))) )) ))) )) (compound_statement "{\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }" { (expression_statement "local_bc = (double)lVar5;" (assignment_expression "local_bc = (double)lVar5" identifier = (cast_expression "(double)lVar5" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "local_c4 = dVar1;" (assignment_expression "local_c4 = dVar1" identifier = identifier) ;) })) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar4 != uVar3)" ( (binary_expression "uVar4 != uVar3" identifier != identifier) )) ;) })) (expression_statement "FUN_000264d0(0);" (call_expression "FUN_000264d0(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar2 = FUN_000ecd60(local_88,&local_84);" (assignment_expression "iVar2 = FUN_000ecd60(local_88,&local_84)" identifier = (call_expression "FUN_000ecd60(local_88,&local_84)" identifier (argument_list "(local_88,&local_84)" ( identifier , (pointer_expression "&local_84" & identifier) )))) ;) (expression_statement "FUN_000d2b30();" (call_expression "FUN_000d2b30()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_88 = local_84;" (assignment_expression "local_88 = local_84" identifier = identifier) ;) (expression_statement "local_a0 = local_a0 + 1;" (assignment_expression "local_a0 = local_a0 + 1" identifier = (binary_expression "local_a0 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX))" ( (binary_expression "(iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX)" (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) && (parenthesized_expression "(local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX)" ( (binary_expression "local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX" identifier < (binary_expression "*(int *)((int)uVar7 + 0x1c) - extraout_ECX" (pointer_expression "*(int *)((int)uVar7 + 0x1c)" * (cast_expression "(int *)((int)uVar7 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)uVar7 + 0x1c)" ( (binary_expression "(int)uVar7 + 0x1c" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) - identifier)) ))) )) ;) }))) })) (expression_statement "*param_1 = local_88;" (assignment_expression "*param_1 = local_88" (pointer_expression "*param_1" * identifier) = identifier) ;) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar2;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return iVar2;\n  }" { (return_statement "return iVar2;" return identifier ;) })) (expression_statement "FUN_000f6410();" (call_expression "FUN_000f6410()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (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 ;) (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 ;) (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 ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (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 = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == IDENT) || (binary_expression (binary_expression IDENT - IDENT) < LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == IDENT) && (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_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) )))) - IDENT)) ))) )) ;) }))) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "int FUN_000ed4e0(int *param_1)\n\n{\n  double dVar1;\n  int iVar2;\n  uint uVar3;\n  int extraout_ECX;\n  uint uVar4;\n  int in_GS_OFFSET;\n  longdouble lVar5;\n  longdouble lVar6;\n  undefined8 uVar7;\n  double local_c4;\n  double local_bc;\n  int local_a0;\n  int local_88;\n  int local_84;\n  undefined4 local_80;\n  undefined4 local_7c;\n  undefined4 local_78;\n  undefined4 local_74;\n  undefined4 local_70;\n  undefined4 local_6c;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  undefined4 local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  \n  uVar7 = FUN_0001af1a();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_88 = 0;\n  iVar2 = FUN_000ecd60(0,&local_88);\n  if (iVar2 == 0) {\n    iVar2 = *(int *)((int)uVar7 + 0x1c);\n    if (iVar2 == extraout_ECX || iVar2 - extraout_ECX < 0) {\n      iVar2 = 0;\n    }\n    else {\n      local_a0 = 0;\n      do {\n        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));\n        if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }\n        FUN_000264d0(0);\n        iVar2 = FUN_000ecd60(local_88,&local_84);\n        FUN_000d2b30();\n        local_88 = local_84;\n        local_a0 = local_a0 + 1;\n      } while ((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX));\n    }\n  }\n  *param_1 = local_88;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar2;\n  }\n                    \n  FUN_000f6410();\n}" (primitive_type "int") (function_declarator "FUN_000ed4e0(int *param_1)" (identifier "FUN_000ed4e0") (parameter_list "(int *param_1)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  double dVar1;\n  int iVar2;\n  uint uVar3;\n  int extraout_ECX;\n  uint uVar4;\n  int in_GS_OFFSET;\n  longdouble lVar5;\n  longdouble lVar6;\n  undefined8 uVar7;\n  double local_c4;\n  double local_bc;\n  int local_a0;\n  int local_88;\n  int local_84;\n  undefined4 local_80;\n  undefined4 local_7c;\n  undefined4 local_78;\n  undefined4 local_74;\n  undefined4 local_70;\n  undefined4 local_6c;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  undefined4 local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  \n  uVar7 = FUN_0001af1a();\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_88 = 0;\n  iVar2 = FUN_000ecd60(0,&local_88);\n  if (iVar2 == 0) {\n    iVar2 = *(int *)((int)uVar7 + 0x1c);\n    if (iVar2 == extraout_ECX || iVar2 - extraout_ECX < 0) {\n      iVar2 = 0;\n    }\n    else {\n      local_a0 = 0;\n      do {\n        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));\n        if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }\n        FUN_000264d0(0);\n        iVar2 = FUN_000ecd60(local_88,&local_84);\n        FUN_000d2b30();\n        local_88 = local_84;\n        local_a0 = local_a0 + 1;\n      } while ((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX));\n    }\n  }\n  *param_1 = local_88;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar2;\n  }\n                    \n  FUN_000f6410();\n}" ({ "{") (declaration "double dVar1;" (primitive_type "double") (identifier "dVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int extraout_ECX;" (primitive_type "int") (identifier "extraout_ECX") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "longdouble lVar5;" (type_identifier "longdouble") (identifier "lVar5") (; ";")) (declaration "longdouble lVar6;" (type_identifier "longdouble") (identifier "lVar6") (; ";")) (declaration "undefined8 uVar7;" (type_identifier "undefined8") (identifier "uVar7") (; ";")) (declaration "double local_c4;" (primitive_type "double") (identifier "local_c4") (; ";")) (declaration "double local_bc;" (primitive_type "double") (identifier "local_bc") (; ";")) (declaration "int local_a0;" (primitive_type "int") (identifier "local_a0") (; ";")) (declaration "int local_88;" (primitive_type "int") (identifier "local_88") (; ";")) (declaration "int local_84;" (primitive_type "int") (identifier "local_84") (; ";")) (declaration "undefined4 local_80;" (type_identifier "undefined4") (identifier "local_80") (; ";")) (declaration "undefined4 local_7c;" (type_identifier "undefined4") (identifier "local_7c") (; ";")) (declaration "undefined4 local_78;" (type_identifier "undefined4") (identifier "local_78") (; ";")) (declaration "undefined4 local_74;" (type_identifier "undefined4") (identifier "local_74") (; ";")) (declaration "undefined4 local_70;" (type_identifier "undefined4") (identifier "local_70") (; ";")) (declaration "undefined4 local_6c;" (type_identifier "undefined4") (identifier "local_6c") (; ";")) (declaration "undefined4 local_68;" (type_identifier "undefined4") (identifier "local_68") (; ";")) (declaration "undefined4 local_64;" (type_identifier "undefined4") (identifier "local_64") (; ";")) (declaration "undefined4 local_60;" (type_identifier "undefined4") (identifier "local_60") (; ";")) (declaration "undefined4 local_5c;" (type_identifier "undefined4") (identifier "local_5c") (; ";")) (declaration "undefined4 local_58;" (type_identifier "undefined4") (identifier "local_58") (; ";")) (declaration "undefined4 local_54;" (type_identifier "undefined4") (identifier "local_54") (; ";")) (declaration "undefined4 local_50;" (type_identifier "undefined4") (identifier "local_50") (; ";")) (declaration "undefined4 local_4c;" (type_identifier "undefined4") (identifier "local_4c") (; ";")) (declaration "undefined4 local_48;" (type_identifier "undefined4") (identifier "local_48") (; ";")) (declaration "undefined4 local_44;" (type_identifier "undefined4") (identifier "local_44") (; ";")) (declaration "undefined4 local_40;" (type_identifier "undefined4") (identifier "local_40") (; ";")) (declaration "undefined4 local_3c;" (type_identifier "undefined4") (identifier "local_3c") (; ";")) (declaration "undefined4 local_38;" (type_identifier "undefined4") (identifier "local_38") (; ";")) (declaration "undefined4 local_34;" (type_identifier "undefined4") (identifier "local_34") (; ";")) (declaration "undefined4 local_30;" (type_identifier "undefined4") (identifier "local_30") (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (declaration "undefined4 local_24;" (type_identifier "undefined4") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "uVar7 = FUN_0001af1a();" (assignment_expression "uVar7 = FUN_0001af1a()" (identifier "uVar7") (= "=") (call_expression "FUN_0001af1a()" (identifier "FUN_0001af1a") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" (identifier "local_88") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar2 = FUN_000ecd60(0,&local_88);" (assignment_expression "iVar2 = FUN_000ecd60(0,&local_88)" (identifier "iVar2") (= "=") (call_expression "FUN_000ecd60(0,&local_88)" (identifier "FUN_000ecd60") (argument_list "(0,&local_88)" (( "(") (number_literal "0") (, ",") (pointer_expression "&local_88" (& "&") (identifier "local_88")) () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n    iVar2 = *(int *)((int)uVar7 + 0x1c);\n    if (iVar2 == extraout_ECX || iVar2 - extraout_ECX < 0) {\n      iVar2 = 0;\n    }\n    else {\n      local_a0 = 0;\n      do {\n        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));\n        if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }\n        FUN_000264d0(0);\n        iVar2 = FUN_000ecd60(local_88,&local_84);\n        FUN_000d2b30();\n        local_88 = local_84;\n        local_a0 = local_a0 + 1;\n      } while ((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX));\n    }\n  }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar2 = *(int *)((int)uVar7 + 0x1c);\n    if (iVar2 == extraout_ECX || iVar2 - extraout_ECX < 0) {\n      iVar2 = 0;\n    }\n    else {\n      local_a0 = 0;\n      do {\n        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));\n        if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }\n        FUN_000264d0(0);\n        iVar2 = FUN_000ecd60(local_88,&local_84);\n        FUN_000d2b30();\n        local_88 = local_84;\n        local_a0 = local_a0 + 1;\n      } while ((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX));\n    }\n  }" ({ "{") (expression_statement "iVar2 = *(int *)((int)uVar7 + 0x1c);" (assignment_expression "iVar2 = *(int *)((int)uVar7 + 0x1c)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)((int)uVar7 + 0x1c)" (* "*") (cast_expression "(int *)((int)uVar7 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)uVar7 + 0x1c)" (( "(") (binary_expression "(int)uVar7 + 0x1c" (cast_expression "(int)uVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar7")) (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (if_statement "if (iVar2 == extraout_ECX || iVar2 - extraout_ECX < 0) {\n      iVar2 = 0;\n    }\n    else {\n      local_a0 = 0;\n      do {\n        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));\n        if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }\n        FUN_000264d0(0);\n        iVar2 = FUN_000ecd60(local_88,&local_84);\n        FUN_000d2b30();\n        local_88 = local_84;\n        local_a0 = local_a0 + 1;\n      } while ((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX));\n    }" (if "if") (parenthesized_expression "(iVar2 == extraout_ECX || iVar2 - extraout_ECX < 0)" (( "(") (binary_expression "iVar2 == extraout_ECX || iVar2 - extraout_ECX < 0" (binary_expression "iVar2 == extraout_ECX" (identifier "iVar2") (== "==") (identifier "extraout_ECX")) (|| "||") (binary_expression "iVar2 - extraout_ECX < 0" (binary_expression "iVar2 - extraout_ECX" (identifier "iVar2") (- "-") (identifier "extraout_ECX")) (< "<") (number_literal "0"))) () ")")) (compound_statement "{\n      iVar2 = 0;\n    }" ({ "{") (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      local_a0 = 0;\n      do {\n        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));\n        if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }\n        FUN_000264d0(0);\n        iVar2 = FUN_000ecd60(local_88,&local_84);\n        FUN_000d2b30();\n        local_88 = local_84;\n        local_a0 = local_a0 + 1;\n      } while ((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX));\n    }" (else "else") (compound_statement "{\n      local_a0 = 0;\n      do {\n        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));\n        if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }\n        FUN_000264d0(0);\n        iVar2 = FUN_000ecd60(local_88,&local_84);\n        FUN_000d2b30();\n        local_88 = local_84;\n        local_a0 = local_a0 + 1;\n      } while ((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX));\n    }" ({ "{") (expression_statement "local_a0 = 0;" (assignment_expression "local_a0 = 0" (identifier "local_a0") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));\n        if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }\n        FUN_000264d0(0);\n        iVar2 = FUN_000ecd60(local_88,&local_84);\n        FUN_000d2b30();\n        local_88 = local_84;\n        local_a0 = local_a0 + 1;\n      } while ((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX));" (do "do") (compound_statement "{\n        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));\n        if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }\n        FUN_000264d0(0);\n        iVar2 = FUN_000ecd60(local_88,&local_84);\n        FUN_000d2b30();\n        local_88 = local_84;\n        local_a0 = local_a0 + 1;\n      }" ({ "{") (expression_statement "uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));" (assignment_expression "uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3))" (identifier "uVar3") (= "=") (cast_expression "(uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3))" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3))" (identifier "CONCAT11") (argument_list "(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),\n                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3))" (( "(") (pointer_expression "*(undefined1 *)(*(int *)(local_88 + 0x14) + 2)" (* "*") (cast_expression "(undefined1 *)(*(int *)(local_88 + 0x14) + 2)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(local_88 + 0x14) + 2)" (( "(") (binary_expression "*(int *)(local_88 + 0x14) + 2" (pointer_expression "*(int *)(local_88 + 0x14)" (* "*") (cast_expression "(int *)(local_88 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_88 + 0x14)" (( "(") (binary_expression "local_88 + 0x14" (identifier "local_88") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (number_literal "2")) () ")")))) (, ",") (pointer_expression "*(undefined1 *)(*(int *)(local_88 + 0x14) + 3)" (* "*") (cast_expression "(undefined1 *)(*(int *)(local_88 + 0x14) + 3)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(local_88 + 0x14) + 3)" (( "(") (binary_expression "*(int *)(local_88 + 0x14) + 3" (pointer_expression "*(int *)(local_88 + 0x14)" (* "*") (cast_expression "(int *)(local_88 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_88 + 0x14)" (( "(") (binary_expression "local_88 + 0x14" (identifier "local_88") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (number_literal "3")) () ")")))) () ")"))))) (; ";")) (if_statement "if (uVar3 != 0) {\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }" (if "if") (parenthesized_expression "(uVar3 != 0)" (( "(") (binary_expression "uVar3 != 0" (identifier "uVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          uVar4 = 0;\n          local_bc = 0.0;\n          local_c4 = 0.0;\n          do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);\n        }" ({ "{") (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_bc = 0.0;" (assignment_expression "local_bc = 0.0" (identifier "local_bc") (= "=") (number_literal "0.0")) (; ";")) (expression_statement "local_c4 = 0.0;" (assignment_expression "local_c4 = 0.0" (identifier "local_c4") (= "=") (number_literal "0.0")) (; ";")) (do_statement "do {\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          } while (uVar4 != uVar3);" (do "do") (compound_statement "{\n            FUN_00025480(&local_80);\n            local_50 = local_80;\n            local_4c = local_7c;\n            local_48 = local_78;\n            local_44 = local_74;\n            local_40 = local_70;\n            local_3c = local_6c;\n            local_38 = local_68;\n            local_34 = local_64;\n            local_30 = local_60;\n            local_2c = local_5c;\n            local_28 = local_58;\n            local_24 = local_54;\n            lVar5 = (longdouble)FUN_00033590();\n            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));\n            lVar6 = (longdouble)FUN_00033590();\n            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);\n            lVar5 = (longdouble)FUN_00033590();\n            if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }\n            uVar4 = uVar4 + 1;\n          }" ({ "{") (expression_statement "FUN_00025480(&local_80);" (call_expression "FUN_00025480(&local_80)" (identifier "FUN_00025480") (argument_list "(&local_80)" (( "(") (pointer_expression "&local_80" (& "&") (identifier "local_80")) () ")"))) (; ";")) (expression_statement "local_50 = local_80;" (assignment_expression "local_50 = local_80" (identifier "local_50") (= "=") (identifier "local_80")) (; ";")) (expression_statement "local_4c = local_7c;" (assignment_expression "local_4c = local_7c" (identifier "local_4c") (= "=") (identifier "local_7c")) (; ";")) (expression_statement "local_48 = local_78;" (assignment_expression "local_48 = local_78" (identifier "local_48") (= "=") (identifier "local_78")) (; ";")) (expression_statement "local_44 = local_74;" (assignment_expression "local_44 = local_74" (identifier "local_44") (= "=") (identifier "local_74")) (; ";")) (expression_statement "local_40 = local_70;" (assignment_expression "local_40 = local_70" (identifier "local_40") (= "=") (identifier "local_70")) (; ";")) (expression_statement "local_3c = local_6c;" (assignment_expression "local_3c = local_6c" (identifier "local_3c") (= "=") (identifier "local_6c")) (; ";")) (expression_statement "local_38 = local_68;" (assignment_expression "local_38 = local_68" (identifier "local_38") (= "=") (identifier "local_68")) (; ";")) (expression_statement "local_34 = local_64;" (assignment_expression "local_34 = local_64" (identifier "local_34") (= "=") (identifier "local_64")) (; ";")) (expression_statement "local_30 = local_60;" (assignment_expression "local_30 = local_60" (identifier "local_30") (= "=") (identifier "local_60")) (; ";")) (expression_statement "local_2c = local_5c;" (assignment_expression "local_2c = local_5c" (identifier "local_2c") (= "=") (identifier "local_5c")) (; ";")) (expression_statement "local_28 = local_58;" (assignment_expression "local_28 = local_58" (identifier "local_28") (= "=") (identifier "local_58")) (; ";")) (expression_statement "local_24 = local_54;" (assignment_expression "local_24 = local_54" (identifier "local_24") (= "=") (identifier "local_54")) (; ";")) (expression_statement "lVar5 = (longdouble)FUN_00033590();" (assignment_expression "lVar5 = (longdouble)FUN_00033590()" (identifier "lVar5") (= "=") (cast_expression "(longdouble)FUN_00033590()" (( "(") (type_descriptor "longdouble" (type_identifier "longdouble")) () ")") (call_expression "FUN_00033590()" (identifier "FUN_00033590") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "FUN_00033700((int)((ulonglong)uVar7 >> 0x20));" (call_expression "FUN_00033700((int)((ulonglong)uVar7 >> 0x20))" (identifier "FUN_00033700") (argument_list "((int)((ulonglong)uVar7 >> 0x20))" (( "(") (cast_expression "(int)((ulonglong)uVar7 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar7 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar7 >> 0x20" (cast_expression "(ulonglong)uVar7" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar7")) (>> ">>") (number_literal "0x20")) () ")"))) () ")"))) (; ";")) (expression_statement "lVar6 = (longdouble)FUN_00033590();" (assignment_expression "lVar6 = (longdouble)FUN_00033590()" (identifier "lVar6") (= "=") (cast_expression "(longdouble)FUN_00033590()" (( "(") (type_descriptor "longdouble" (type_identifier "longdouble")) () ")") (call_expression "FUN_00033590()" (identifier "FUN_00033590") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);" (assignment_expression "dVar1 = (double)(lVar6 - (longdouble)(double)lVar5)" (identifier "dVar1") (= "=") (cast_expression "(double)(lVar6 - (longdouble)(double)lVar5)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "(lVar6 - (longdouble)(double)lVar5)" (( "(") (binary_expression "lVar6 - (longdouble)(double)lVar5" (identifier "lVar6") (- "-") (cast_expression "(longdouble)(double)lVar5" (( "(") (type_descriptor "longdouble" (type_identifier "longdouble")) () ")") (cast_expression "(double)lVar5" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "lVar5")))) () ")")))) (; ";")) (expression_statement "lVar5 = (longdouble)FUN_00033590();" (assignment_expression "lVar5 = (longdouble)FUN_00033590()" (identifier "lVar5") (= "=") (cast_expression "(longdouble)FUN_00033590()" (( "(") (type_descriptor "longdouble" (type_identifier "longdouble")) () ")") (call_expression "FUN_00033590()" (identifier "FUN_00033590") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }" (if "if") (parenthesized_expression "(((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc))))" (( "(") (binary_expression "((uVar4 == 0) || (dVar1 < local_c4)) ||\n               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))" (parenthesized_expression "((uVar4 == 0) || (dVar1 < local_c4))" (( "(") (binary_expression "(uVar4 == 0) || (dVar1 < local_c4)" (parenthesized_expression "(uVar4 == 0)" (( "(") (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(dVar1 < local_c4)" (( "(") (binary_expression "dVar1 < local_c4" (identifier "dVar1") (< "<") (identifier "local_c4")) () ")"))) () ")")) (|| "||") (parenthesized_expression "((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))" (( "(") (parenthesized_expression "(dVar1 == local_c4 && (lVar5 < (longdouble)local_bc))" (( "(") (binary_expression "dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)" (binary_expression "dVar1 == local_c4" (identifier "dVar1") (== "==") (identifier "local_c4")) (&& "&&") (parenthesized_expression "(lVar5 < (longdouble)local_bc)" (( "(") (binary_expression "lVar5 < (longdouble)local_bc" (identifier "lVar5") (< "<") (cast_expression "(longdouble)local_bc" (( "(") (type_descriptor "longdouble" (type_identifier "longdouble")) () ")") (identifier "local_bc"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n              local_bc = (double)lVar5;\n              local_c4 = dVar1;\n            }" ({ "{") (expression_statement "local_bc = (double)lVar5;" (assignment_expression "local_bc = (double)lVar5" (identifier "local_bc") (= "=") (cast_expression "(double)lVar5" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "lVar5"))) (; ";")) (expression_statement "local_c4 = dVar1;" (assignment_expression "local_c4 = dVar1" (identifier "local_c4") (= "=") (identifier "dVar1")) (; ";")) (} "}"))) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar4 != uVar3)" (( "(") (binary_expression "uVar4 != uVar3" (identifier "uVar4") (!= "!=") (identifier "uVar3")) () ")")) (; ";")) (} "}"))) (expression_statement "FUN_000264d0(0);" (call_expression "FUN_000264d0(0)" (identifier "FUN_000264d0") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (expression_statement "iVar2 = FUN_000ecd60(local_88,&local_84);" (assignment_expression "iVar2 = FUN_000ecd60(local_88,&local_84)" (identifier "iVar2") (= "=") (call_expression "FUN_000ecd60(local_88,&local_84)" (identifier "FUN_000ecd60") (argument_list "(local_88,&local_84)" (( "(") (identifier "local_88") (, ",") (pointer_expression "&local_84" (& "&") (identifier "local_84")) () ")")))) (; ";")) (expression_statement "FUN_000d2b30();" (call_expression "FUN_000d2b30()" (identifier "FUN_000d2b30") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_88 = local_84;" (assignment_expression "local_88 = local_84" (identifier "local_88") (= "=") (identifier "local_84")) (; ";")) (expression_statement "local_a0 = local_a0 + 1;" (assignment_expression "local_a0 = local_a0 + 1" (identifier "local_a0") (= "=") (binary_expression "local_a0 + 1" (identifier "local_a0") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX))" (( "(") (binary_expression "(iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX)" (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX)" (( "(") (binary_expression "local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX" (identifier "local_a0") (< "<") (binary_expression "*(int *)((int)uVar7 + 0x1c) - extraout_ECX" (pointer_expression "*(int *)((int)uVar7 + 0x1c)" (* "*") (cast_expression "(int *)((int)uVar7 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)uVar7 + 0x1c)" (( "(") (binary_expression "(int)uVar7 + 0x1c" (cast_expression "(int)uVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar7")) (+ "+") (number_literal "0x1c")) () ")")))) (- "-") (identifier "extraout_ECX"))) () ")"))) () ")")) (; ";")) (} "}")))) (} "}"))) (expression_statement "*param_1 = local_88;" (assignment_expression "*param_1 = local_88" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "local_88")) (; ";")) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar2;\n  }" (if "if") (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    return iVar2;\n  }" ({ "{") (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}"))) (expression_statement "FUN_000f6410();" (call_expression "FUN_000f6410()" (identifier "FUN_000f6410") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

int function_1(type_1 *pRtree,type_2 *pCell,int iHeight,type_3 **ppLeaf)

{
  int var_22;
  type_4 bVar2;
  type_4 bVar3;
  double var_15;
  type_1 *pRtree_00;
  int var_5;
  type_5 var_8;
  int var_6;
  type_5 var_14;
  int var_2;
  type_6 uVar7;
  type_7 var_13;
  type_7 var_12;
  type_3 **in_stack_ffffff1c;
  double var_16;
  double var_17;
  type_3 *local_ac;
  int var_21;
  type_3 *pNode;
  type_3 *pChild;
  type_2 cell;
  type_2 cell_1;
  
  uVar7 = var_1();
  pRtree_00 = (type_1 *)uVar7;
  var_22 = *(int *)(var_2 + 0x14);
  pNode = (type_3 *)0x0;
  var_5 = var_3(pRtree_00,var_4(&pNode) << 0x20,(type_3 *)0x1,in_stack_ffffff1c);
  if (var_5 == 0) {
    if (pRtree_00->iDepth == var_6 || pRtree_00->iDepth - var_6 < 0) {
      var_5 = 0;
    }
    else {
      var_21 = 0;
      do {
        var_8 = (type_5)var_7(pNode->zData[2],pNode->zData[3]);
        if (var_8 == 0) {
          local_ac = (type_3 *)0x0;
        }
        else {
          var_14 = 0;
          local_ac = (type_3 *)0x0;
          var_17 = 0.0;
          var_16 = 0.0;
          do {
            var_9(pRtree_00,pNode,var_14,&cell);
            bVar2 = pRtree_00->eCoordType;
            cell_1.iRowid._0_4_ = (type_3 *)cell.iRowid;
            cell_1.iRowid._4_4_ = cell.iRowid._4_4_;
            cell_1.aCoord[0] = cell.aCoord[0];
            cell_1.aCoord[1] = cell.aCoord[1];
            cell_1.aCoord[2] = cell.aCoord[2];
            cell_1.aCoord[3] = cell.aCoord[3];
            cell_1.aCoord[4] = cell.aCoord[4];
            cell_1.aCoord[5] = cell.aCoord[5];
            cell_1.aCoord[6] = cell.aCoord[6];
            cell_1.aCoord[7] = cell.aCoord[7];
            cell_1.aCoord[8] = cell.aCoord[8];
            cell_1.aCoord[9] = cell.aCoord[9];
            var_13 = var_10((type_1 *)(type_5)pRtree_00->nDim,(type_2 *)(type_5)bVar2,
                             (type_1 *)&cell_1);
            var_11((type_1 *)&pRtree_00->nDim2,(type_2 *)(type_5)bVar2,&cell_1,
                      (type_1 *)((type_8)uVar7 >> 0x20));
            bVar2 = pRtree_00->nDim;
            bVar3 = pRtree_00->eCoordType;
            var_12 = var_10((type_1 *)(type_5)bVar2,(type_2 *)(type_5)bVar3,(type_1 *)&cell_1);
            var_15 = var_12 - var_13;
            var_13 = var_10((type_1 *)(type_5)bVar2,(type_2 *)(type_5)bVar3,(type_1 *)&cell);
            if (((var_14 == 0) || (var_15 < var_16)) || ((var_15 == var_16 && (var_13 < var_17))))
            {
              local_ac = (type_3 *)cell.iRowid;
              var_16 = var_15;
              var_17 = var_13;
            }
            var_14 = var_14 + 1;
          } while (var_14 != var_8);
        }
        var_18((void *)0x0);
        var_5 = var_3(pRtree_00,var_19(&pChild,pNode),local_ac,in_stack_ffffff1c);
        var_20(pRtree_00,pNode);
        pNode = pChild;
        var_21 = var_21 + 1;
      } while ((var_5 == 0) && (var_21 < pRtree_00->iDepth - var_6));
    }
  }
  (pRtree->base).pModule = (type_9 *)pNode;
  if (var_22 == *(int *)(var_2 + 0x14)) {
    return var_5;
  }
                    /* WARNING: Subroutine does not return */
  var_23();
}


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

int MASKED(int *param_1)

{
  double dVar1;
  int iVar2;
  uint uVar3;
  int extraout_ECX;
  uint uVar4;
  int in_GS_OFFSET;
  longdouble lVar5;
  longdouble lVar6;
  undefined8 uVar7;
  double local_c4;
  double local_bc;
  int local_a0;
  int local_88;
  int local_84;
  undefined4 local_80;
  undefined4 local_7c;
  undefined4 local_78;
  undefined4 local_74;
  undefined4 local_70;
  undefined4 local_6c;
  undefined4 local_68;
  undefined4 local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 local_58;
  undefined4 local_54;
  undefined4 local_50;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  int local_20;
  
  uVar7 = FUN_0001af1a();
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_88 = 0;
  iVar2 = FUN_000ecd60(0,&local_88);
  if (iVar2 == 0) {
    iVar2 = *(int *)((int)uVar7 + 0x1c);
    if (iVar2 == extraout_ECX || iVar2 - extraout_ECX < 0) {
      iVar2 = 0;
    }
    else {
      local_a0 = 0;
      do {
        uVar3 = (uint)CONCAT11(*(undefined1 *)(*(int *)(local_88 + 0x14) + 2),
                               *(undefined1 *)(*(int *)(local_88 + 0x14) + 3));
        if (uVar3 != 0) {
          uVar4 = 0;
          local_bc = 0.0;
          local_c4 = 0.0;
          do {
            FUN_00025480(&local_80);
            local_50 = local_80;
            local_4c = local_7c;
            local_48 = local_78;
            local_44 = local_74;
            local_40 = local_70;
            local_3c = local_6c;
            local_38 = local_68;
            local_34 = local_64;
            local_30 = local_60;
            local_2c = local_5c;
            local_28 = local_58;
            local_24 = local_54;
            lVar5 = (longdouble)FUN_00033590();
            FUN_00033700((int)((ulonglong)uVar7 >> 0x20));
            lVar6 = (longdouble)FUN_00033590();
            dVar1 = (double)(lVar6 - (longdouble)(double)lVar5);
            lVar5 = (longdouble)FUN_00033590();
            if (((uVar4 == 0) || (dVar1 < local_c4)) ||
               ((dVar1 == local_c4 && (lVar5 < (longdouble)local_bc)))) {
              local_bc = (double)lVar5;
              local_c4 = dVar1;
            }
            uVar4 = uVar4 + 1;
          } while (uVar4 != uVar3);
        }
        FUN_000264d0(0);
        iVar2 = FUN_000ecd60(local_88,&local_84);
        FUN_000d2b30();
        local_88 = local_84;
        local_a0 = local_a0 + 1;
      } while ((iVar2 == 0) && (local_a0 < *(int *)((int)uVar7 + 0x1c) - extraout_ECX));
    }
  }
  *param_1 = local_88;
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return iVar2;
  }
                    /* WARNING: Subroutine does not return */
  FUN_000f6410();
}

