
void rtreeCheckNode(RtreeCheck *pCheck,int iDepth,u8 *aParent,i64 iNode)

{
  int iVar1;
  uint *puVar2;
  uint uVar3;
  uint uVar4;
  RtreeCheck *pCheck_00;
  int iVar5;
  int iVar6;
  float fVar7;
  void *__src;
  sqlite3_stmt *pStmt;
  int extraout_ECX;
  uint uVar8;
  float fVar9;
  RtreeCheck *pCheck_01;
  float fVar10;
  size_t __n;
  float fVar11;
  int unaff_EDI;
  undefined8 uVar12;
  RtreeCheck *aParent_00;
  undefined4 in_stack_ffffffa4;
  int local_4c;
  undefined1 *local_3c;
  uint local_38;
  
  uVar12 = __x86_get_pc_thunk_di();
  local_38 = (uint)((ulonglong)uVar12 >> 0x20);
  pCheck_00 = (RtreeCheck *)uVar12;
  if (pCheck_00->rc == 0) {
    pStmt = pCheck_00->pGetNode;
    if (pStmt == (sqlite3_stmt *)0x0) {
      pStmt = rtreeCheckPrepare(pCheck_00,(char *)(unaff_EDI + 0x327bd),pCheck_00->zDb,
                                pCheck_00->zTab);
      pCheck_00->pGetNode = pStmt;
      if (pCheck_00->rc != 0) {
        return;
      }
    }
    __n = 0;
    sqlite3_bind_int64(pStmt,1,CONCAT44(iDepth,pCheck));
    iVar5 = sqlite3_step(pCheck_00->pGetNode);
    local_3c = (undefined1 *)0x0;
    if (iVar5 == 100) {
      __n = sqlite3_column_bytes(pCheck_00->pGetNode,0);
      __src = sqlite3_column_blob(pCheck_00->pGetNode,0);
      local_3c = (undefined1 *)sqlite3_malloc64((longlong)(int)__n);
      if (local_3c == (undefined1 *)0x0) {
        pCheck_00->rc = 7;
        __n = 0;
      }
      else {
        memcpy(local_3c,__src,__n);
      }
    }
    iVar5 = sqlite3_reset(pCheck_00->pGetNode);
    if ((pCheck_00->rc == 0) && (pCheck_00->rc = iVar5, iVar5 == 0)) {
      if (local_3c == (undefined1 *)0x0) {
        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x327ed),pCheck,iDepth);
        return;
      }
    }
    else if (local_3c == (undefined1 *)0x0) {
      return;
    }
    if ((int)__n < 4) {
      rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x3280d),pCheck,iDepth,__n);
    }
    else {
      if ((extraout_ECX == 0) &&
         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))
      {
        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x23c8c),local_38);
        sqlite3_free(local_3c);
        return;
      }
      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];
      iVar6 = pCheck_00->nDim;
      iVar5 = iVar6 + 1;
      if (iVar1 * iVar5 * 8 + 3 < (int)__n) {
        if (iVar1 != 0) {
          local_4c = 0;
          do {
            puVar2 = (uint *)(local_3c + iVar5 * local_4c * 8 + 4);
            uVar8 = *puVar2;
            uVar3 = puVar2[1];
            pCheck_01 = (RtreeCheck *)
                        (uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |
                        uVar3 << 0x18);
            uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;
            iVar5 = 0;
            if (0 < iVar6) {
LAB_000d69c9:
              do {
                uVar3 = puVar2[iVar5 * 2 + 2];
                uVar4 = puVar2[iVar5 * 2 + 3];
                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |
                                uVar3 << 0x18);
                fVar11 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |
                                uVar4 << 0x18);
                if (pCheck_00->bInt == 0) {
                  if (fVar11 < fVar10) {
LAB_000d69ff:
                    rtreeCheckAppendMsg(pCheck_00,&UNK_00032869 + unaff_EDI,iVar5,local_4c,pCheck,
                                        iDepth);
                  }
                }
                else if ((int)fVar11 < (int)fVar10) goto LAB_000d69ff;
                if (extraout_ECX == 0) {
LAB_000d69bd:
                  iVar5 = iVar5 + 1;
                  if (pCheck_00->nDim <= iVar5) break;
                  goto LAB_000d69c9;
                }
                uVar3 = *(uint *)(extraout_ECX + iVar5 * 8);
                uVar4 = *(uint *)(extraout_ECX + 4 + iVar5 * 8);
                fVar9 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |
                               uVar3 << 0x18);
                fVar7 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |
                               uVar4 << 0x18);
                if (pCheck_00->bInt == 0) {
                  if ((fVar10 < fVar9) || (fVar7 < fVar11)) goto LAB_000d6998;
                  goto LAB_000d69bd;
                }
                if (((int)fVar7 < (int)fVar11) || ((int)fVar10 < (int)fVar9)) {
LAB_000d6998:
                  rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32899),iVar5,local_4c,pCheck,
                                      iDepth);
                  goto LAB_000d69bd;
                }
                iVar5 = iVar5 + 1;
              } while (iVar5 < pCheck_00->nDim);
            }
            if (local_38 == 0) {
              rtreeCheckMapping(pCheck_00,1,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));
              pCheck_00->nLeaf = pCheck_00->nLeaf + 1;
            }
            else {
              aParent_00 = pCheck;
              iVar5 = iDepth;
              rtreeCheckMapping(pCheck_00,0,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));
              rtreeCheckNode(pCheck_01,uVar8,(u8 *)aParent_00,CONCAT44(in_stack_ffffffa4,iVar5));
              pCheck_00->nNonLeaf = pCheck_00->nNonLeaf + 1;
            }
            local_4c = local_4c + 1;
            if (local_4c == iVar1) break;
            iVar6 = pCheck_00->nDim;
            iVar5 = iVar6 + 1;
          } while( true );
        }
      }
      else {
        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32831),pCheck,iDepth,iVar1,__n);
      }
    }
    sqlite3_free(local_3c);
  }
  return;
}



void FUN_000d67f0(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  uint *puVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  float fVar8;
  void *__src;
  int extraout_ECX;
  uint uVar9;
  float fVar10;
  uint uVar11;
  float fVar12;
  size_t __n;
  float fVar13;
  int unaff_EDI;
  undefined8 uVar14;
  int local_4c;
  undefined1 *local_3c;
  uint local_38;
  
  uVar14 = FUN_0001af1a();
  local_38 = (uint)((ulonglong)uVar14 >> 0x20);
  iVar5 = (int)uVar14;
  if (*(int *)(iVar5 + 0x28) == 0) {
    iVar6 = *(int *)(iVar5 + 0x14);
    if (iVar6 == 0) {
      iVar6 = FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),
                           *(undefined4 *)(iVar5 + 8));
      *(int *)(iVar5 + 0x14) = iVar6;
      if (*(int *)(iVar5 + 0x28) != 0) {
        return;
      }
    }
    __n = 0;
    FUN_00057c50(iVar6,1,param_1,param_2);
    iVar6 = FUN_000ae4d0(*(undefined4 *)(iVar5 + 0x14));
    local_3c = (undefined1 *)0x0;
    if (iVar6 == 100) {
      __n = FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0);
      __src = (void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0);
      local_3c = (undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f);
      if (local_3c == (undefined1 *)0x0) {
        *(undefined4 *)(iVar5 + 0x28) = 7;
        __n = 0;
      }
      else {
        memcpy(local_3c,__src,__n);
      }
    }
    iVar6 = FUN_0008fe60(*(undefined4 *)(iVar5 + 0x14));
    if ((*(int *)(iVar5 + 0x28) == 0) && (*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0)) {
      if (local_3c == (undefined1 *)0x0) {
        FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);
        return;
      }
    }
    else if (local_3c == (undefined1 *)0x0) {
      return;
    }
    if ((int)__n < 4) {
      FUN_000789a0(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n);
    }
    else {
      if ((extraout_ECX == 0) &&
         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))
      {
        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);
        FUN_000264d0(local_3c);
        return;
      }
      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];
      iVar7 = *(int *)(iVar5 + 0x10);
      iVar6 = iVar7 + 1;
      if (iVar1 * iVar6 * 8 + 3 < (int)__n) {
        if (iVar1 != 0) {
          local_4c = 0;
          do {
            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);
            uVar9 = *puVar2;
            uVar11 = puVar2[1];
            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |
                     uVar11 << 0x18;
            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;
            iVar6 = 0;
            if (0 < iVar7) {
LAB_000d69c9:
              do {
                uVar3 = puVar2[iVar6 * 2 + 2];
                uVar4 = puVar2[iVar6 * 2 + 3];
                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |
                                uVar3 << 0x18);
                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |
                                uVar4 << 0x18);
                if (*(int *)(iVar5 + 0xc) == 0) {
                  if (fVar13 < fVar12) {
LAB_000d69ff:
                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);
                  }
                }
                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;
                if (extraout_ECX == 0) {
LAB_000d69bd:
                  iVar6 = iVar6 + 1;
                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;
                  goto LAB_000d69c9;
                }
                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);
                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);
                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |
                                uVar3 << 0x18);
                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |
                               uVar4 << 0x18);
                if (*(int *)(iVar5 + 0xc) == 0) {
                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;
                  goto LAB_000d69bd;
                }
                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {
LAB_000d6998:
                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);
                  goto LAB_000d69bd;
                }
                iVar6 = iVar6 + 1;
              } while (iVar6 < *(int *)(iVar5 + 0x10));
            }
            if (local_38 == 0) {
              FUN_000d3db0(uVar11,uVar9,param_1,param_2);
              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;
            }
            else {
              FUN_000d3db0(uVar11,uVar9,param_1,param_2);
              FUN_000d67f0(uVar11,uVar9);
              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;
            }
            local_4c = local_4c + 1;
            if (local_4c == iVar1) break;
            iVar7 = *(int *)(iVar5 + 0x10);
            iVar6 = iVar7 + 1;
          } while( true );
        }
      }
      else {
        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);
      }
    }
    FUN_000264d0(local_3c);
  }
  return;
}


PUSH EBP
PUSH EDI
CALL 0x0001af1a
ADD EDI,0x746dd
PUSH ESI
PUSH EBX
SUB ESP,0x4c
MOV dword ptr [ESP + 0x24],EDX
MOV EDX,dword ptr [ESP + 0x64]
MOV dword ptr [ESP + 0x14],EDI
MOV EDI,EAX
MOV EAX,dword ptr [ESP + 0x60]
MOV ESI,dword ptr [EDI + 0x28]
MOV dword ptr [ESP + 0xc],EDX
MOV dword ptr [ESP + 0x8],EAX
TEST ESI,ESI
JNZ 0x000d6a63
MOV EAX,dword ptr [EDI + 0x14]
MOV EBP,ECX
TEST EAX,EAX
JZ 0x000d6bc0
PUSH dword ptr [ESP + 0xc]
PUSH dword ptr [ESP + 0xc]
PUSH 0x1
PUSH EAX
MOV ESI,dword ptr [ESP + 0x24]
MOV EBX,ESI
XOR ESI,ESI
CALL 0x00057c50
POP ECX
PUSH dword ptr [EDI + 0x14]
CALL 0x000ae4d0
ADD ESP,0x10
MOV dword ptr [ESP + 0x20],0x0
CMP EAX,0x64
JZ 0x000d6b58
SUB ESP,0xc
PUSH dword ptr [EDI + 0x14]
MOV EBX,dword ptr [ESP + 0x24]
CALL 0x0008fe60
MOV EDX,dword ptr [EDI + 0x28]
ADD ESP,0x10
TEST EDX,EDX
JZ 0x000d6a70
MOV EBX,dword ptr [ESP + 0x20]
TEST EBX,EBX
JZ 0x000d6a63
CMP ESI,0x3
JLE 0x000d6a30
TEST EBP,EBP
JZ 0x000d6c20
MOV ECX,dword ptr [ESP + 0x20]
MOVZX EAX,byte ptr [ECX + 0x2]
MOVZX EDX,byte ptr [ECX + 0x3]
SHL EAX,0x8
LEA EBX,[EAX + EDX*0x1]
MOV EAX,dword ptr [EDI + 0x10]
MOV ECX,EBX
MOV dword ptr [ESP + 0x38],EBX
LEA EDX,[EAX + 0x1]
IMUL ECX,EDX
LEA ECX,[ECX*0x8 + 0x3]
CMP ECX,ESI
JGE 0x000d6bf0
MOV ECX,dword ptr [ESP + 0x14]
XOR ESI,ESI
LEA ECX,[ECX + 0xfffbe1bc]
MOV dword ptr [ESP + 0x34],ECX
TEST EBX,EBX
JZ 0x000d6a50
MOV dword ptr [ESP + 0x10],ESI
MOV dword ptr [ESP + 0x3c],EBP
IMUL EDX,dword ptr [ESP + 0x10]
MOV ESI,dword ptr [ESP + 0x20]
LEA ECX,[ESI + EDX*0x8 + 0x4]
LEA ESI,[ECX + 0x8]
MOV EDX,dword ptr [ECX]
MOV EBX,dword ptr [ECX + 0x4]
MOV dword ptr [ESP + 0x30],ESI
MOV ESI,dword ptr [ESP + 0x14]
BSWAP EBX
BSWAP EDX
MOV dword ptr [ESP + 0x18],EBX
XOR EBX,EBX
LEA ESI,[ESI + 0xfffbe18c]
MOV dword ptr [ESP + 0x1c],EDX
MOV dword ptr [ESP + 0x2c],ESI
TEST EAX,EAX
JG 0x000d69c9
JMP 0x000d6ac8
CMP EBP,ESI
SETG AL
TEST AL,AL
JNZ 0x000d69ff
MOV EAX,dword ptr [ESP + 0x3c]
TEST EAX,EAX
JZ 0x000d69bd
MOV EDX,dword ptr [EAX + EBX*0x8]
MOV EAX,dword ptr [EAX + EBX*0x8 + 0x4]
CMP dword ptr [EDI + 0xc],0x0
BSWAP EDX
BSWAP EAX
JNZ 0x000d6aa8
MOV dword ptr [ESP + 0x28],EDX
FLD dword ptr [ESP + 0x28]
MOV dword ptr [ESP + 0x28],EBP
FLD dword ptr [ESP + 0x28]
FXCH
FCOMIP ST0,ST1
FSTP ST0
JA 0x000d6998
MOV dword ptr [ESP + 0x28],ESI
FLD dword ptr [ESP + 0x28]
MOV dword ptr [ESP + 0x28],EAX
FLD dword ptr [ESP + 0x28]
FXCH
FCOMIP ST0,ST1
FSTP ST0
JBE 0x000d69bd
LEA ESI,[ESI]
MOV dword ptr [ESP + 0x28],ECX
SUB ESP,0x8
PUSH dword ptr [ESP + 0x14]
PUSH dword ptr [ESP + 0x14]
PUSH dword ptr [ESP + 0x20]
PUSH EBX
PUSH dword ptr [ESP + 0x4c]
PUSH EDI
CALL 0x000789a0
ADD ESP,0x20
MOV ECX,dword ptr [ESP + 0x28]
ADD EBX,0x1
CMP EBX,dword ptr [EDI + 0x10]
JGE 0x000d6ac8
MOV EBP,dword ptr [ECX + EBX*0x8 + 0x8]
MOV ESI,dword ptr [ECX + EBX*0x8 + 0xc]
MOV EAX,dword ptr [EDI + 0xc]
BSWAP EBP
BSWAP ESI
TEST EAX,EAX
JNZ 0x000d6938
MOV dword ptr [ESP + 0x28],ESI
FLD dword ptr [ESP + 0x28]
MOV dword ptr [ESP + 0x28],EBP
FLD dword ptr [ESP + 0x28]
FCOMIP ST0,ST1
FSTP ST0
SETA AL
TEST AL,AL
JZ 0x000d6945
MOV dword ptr [ESP + 0x28],ECX
SUB ESP,0x8
PUSH dword ptr [ESP + 0x14]
PUSH dword ptr [ESP + 0x14]
PUSH dword ptr [ESP + 0x20]
PUSH EBX
PUSH dword ptr [ESP + 0x44]
PUSH EDI
CALL 0x000789a0
ADD ESP,0x20
MOV ECX,dword ptr [ESP + 0x28]
JMP 0x000d6945
SUB ESP,0xc
PUSH ESI
PUSH dword ptr [ESP + 0x1c]
PUSH dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [ESP + 0x2c]
LEA EAX,[EAX + 0xfffbe130]
PUSH EAX
PUSH EDI
CALL 0x000789a0
ADD ESP,0x20
SUB ESP,0xc
PUSH dword ptr [ESP + 0x2c]
MOV EBX,dword ptr [ESP + 0x24]
CALL 0x000264d0
ADD ESP,0x10
ADD ESP,0x4c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [EDI + 0x28],EAX
TEST EAX,EAX
JNZ 0x000d6886
MOV EAX,dword ptr [ESP + 0x20]
TEST EAX,EAX
JNZ 0x000d6892
PUSH dword ptr [ESP + 0xc]
PUSH dword ptr [ESP + 0xc]
MOV EAX,dword ptr [ESP + 0x1c]
LEA EAX,[EAX + 0xfffbe110]
PUSH EAX
PUSH EDI
CALL 0x000789a0
ADD ESP,0x10
JMP 0x000d6a63
CMP ESI,EAX
JG 0x000d6998
CMP EBP,EDX
JL 0x000d6998
ADD EBX,0x1
CMP EBX,dword ptr [EDI + 0x10]
JL 0x000d69c9
LEA ESI,[ESI]
MOV EDX,dword ptr [ESP + 0x24]
TEST EDX,EDX
JZ 0x000d6b30
PUSH dword ptr [ESP + 0xc]
XOR EDX,EDX
MOV EAX,EDI
PUSH dword ptr [ESP + 0xc]
MOV EBX,dword ptr [ESP + 0x20]
MOV ESI,dword ptr [ESP + 0x24]
PUSH ESI
PUSH EBX
CALL 0x000d3db0
MOV EAX,dword ptr [ESP + 0x34]
LEA EDX,[EAX + -0x1]
POP EAX
POP ECX
PUSH ESI
PUSH EBX
MOV ECX,dword ptr [ESP + 0x40]
MOV EAX,EDI
CALL 0x000d67f0
ADD dword ptr [EDI + 0x24],0x1
ADD ESP,0x10
ADD dword ptr [ESP + 0x10],0x1
MOV EAX,dword ptr [ESP + 0x10]
CMP EAX,dword ptr [ESP + 0x38]
JZ 0x000d6a50
MOV EAX,dword ptr [EDI + 0x10]
LEA EDX,[EAX + 0x1]
JMP 0x000d68f3
PUSH dword ptr [ESP + 0xc]
MOV EDX,0x1
MOV EAX,EDI
PUSH dword ptr [ESP + 0xc]
PUSH dword ptr [ESP + 0x24]
PUSH dword ptr [ESP + 0x24]
CALL 0x000d3db0
ADD dword ptr [EDI + 0x20],0x1
ADD ESP,0x10
JMP 0x000d6b08
SUB ESP,0x8
PUSH 0x0
PUSH dword ptr [EDI + 0x14]
MOV EBX,dword ptr [ESP + 0x24]
CALL 0x0004e4d0
POP ECX
POP EBX
PUSH 0x0
PUSH dword ptr [EDI + 0x14]
MOV EBX,dword ptr [ESP + 0x24]
MOV ESI,EAX
CALL 0x0004e800
MOV dword ptr [ESP + 0x20],EAX
POP EAX
MOV EAX,ESI
POP EDX
CDQ
PUSH EDX
PUSH ESI
MOV EBX,dword ptr [ESP + 0x24]
CALL 0x000408d0
MOV dword ptr [ESP + 0x30],EAX
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000d6c70
SUB ESP,0x4
PUSH ESI
PUSH dword ptr [ESP + 0x18]
PUSH dword ptr [ESP + 0x2c]
MOV EBX,dword ptr [ESP + 0x24]
CALL 0x000140d0
ADD ESP,0x10
JMP 0x000d6869
PUSH dword ptr [EDI + 0x8]
PUSH dword ptr [EDI + 0x4]
MOV EAX,dword ptr [ESP + 0x1c]
LEA EAX,[EAX + 0xfffbe0e0]
PUSH EAX
PUSH EDI
CALL 0x000c3d10
MOV EBX,dword ptr [EDI + 0x28]
ADD ESP,0x10
MOV dword ptr [EDI + 0x14],EAX
TEST EBX,EBX
JZ 0x000d6834
JMP 0x000d6a63
SUB ESP,0x8
PUSH ESI
PUSH dword ptr [ESP + 0x44]
PUSH dword ptr [ESP + 0x1c]
PUSH dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [ESP + 0x2c]
LEA EAX,[EAX + 0xfffbe154]
PUSH EAX
PUSH EDI
CALL 0x000789a0
ADD ESP,0x20
JMP 0x000d6a50
MOV EDX,dword ptr [ESP + 0x20]
MOVZX EAX,byte ptr [EDX]
MOVZX EDX,byte ptr [EDX + 0x1]
SHL EAX,0x8
ADD EAX,EDX
MOV dword ptr [ESP + 0x24],EAX
CMP EAX,0x28
JLE 0x000d68a3
SUB ESP,0x4
PUSH dword ptr [ESP + 0x28]
MOV EBX,dword ptr [ESP + 0x1c]
LEA EAX,[EBX + 0xfffaf5af]
PUSH EAX
PUSH EDI
CALL 0x000789a0
POP ECX
PUSH dword ptr [ESP + 0x2c]
CALL 0x000264d0
ADD ESP,0x10
JMP 0x000d6a63
MOV dword ptr [EDI + 0x28],0x7
XOR ESI,ESI
JMP 0x000d6869
(translation_unit "void FUN_000d67f0(undefined4 param_1,undefined4 param_2)\n\n{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  float fVar8;\n  void *__src;\n  int extraout_ECX;\n  uint uVar9;\n  float fVar10;\n  uint uVar11;\n  float fVar12;\n  size_t __n;\n  float fVar13;\n  int unaff_EDI;\n  undefined8 uVar14;\n  int local_4c;\n  undefined1 *local_3c;\n  uint local_38;\n  \n  uVar14 = FUN_0001af1a();\n  local_38 = (uint)((ulonglong)uVar14 >> 0x20);\n  iVar5 = (int)uVar14;\n  if (*(int *)(iVar5 + 0x28) == 0) {\n    iVar6 = *(int *)(iVar5 + 0x14);\n    if (iVar6 == 0) {\n      iVar6 = FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8));\n      *(int *)(iVar5 + 0x14) = iVar6;\n      if (*(int *)(iVar5 + 0x28) != 0) {\n        return;\n      }\n    }\n    __n = 0;\n    FUN_00057c50(iVar6,1,param_1,param_2);\n    iVar6 = FUN_000ae4d0(*(undefined4 *)(iVar5 + 0x14));\n    local_3c = (undefined1 *)0x0;\n    if (iVar6 == 100) {\n      __n = FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0);\n      __src = (void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0);\n      local_3c = (undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f);\n      if (local_3c == (undefined1 *)0x0) {\n        *(undefined4 *)(iVar5 + 0x28) = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }\n    }\n    iVar6 = FUN_0008fe60(*(undefined4 *)(iVar5 + 0x14));\n    if ((*(int *)(iVar5 + 0x28) == 0) && (*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0)) {\n      if (local_3c == (undefined1 *)0x0) {\n        FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);\n        return;\n      }\n    }\n    else if (local_3c == (undefined1 *)0x0) {\n      return;\n    }\n    if ((int)__n < 4) {\n      FUN_000789a0(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n);\n    }\n    else {\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);\n        FUN_000264d0(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar7 = *(int *)(iVar5 + 0x10);\n      iVar6 = iVar7 + 1;\n      if (iVar1 * iVar6 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }\n      }\n      else {\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }\n    }\n    FUN_000264d0(local_3c);\n  }\n  return;\n}\n\n" (function_definition "void FUN_000d67f0(undefined4 param_1,undefined4 param_2)\n\n{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  float fVar8;\n  void *__src;\n  int extraout_ECX;\n  uint uVar9;\n  float fVar10;\n  uint uVar11;\n  float fVar12;\n  size_t __n;\n  float fVar13;\n  int unaff_EDI;\n  undefined8 uVar14;\n  int local_4c;\n  undefined1 *local_3c;\n  uint local_38;\n  \n  uVar14 = FUN_0001af1a();\n  local_38 = (uint)((ulonglong)uVar14 >> 0x20);\n  iVar5 = (int)uVar14;\n  if (*(int *)(iVar5 + 0x28) == 0) {\n    iVar6 = *(int *)(iVar5 + 0x14);\n    if (iVar6 == 0) {\n      iVar6 = FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8));\n      *(int *)(iVar5 + 0x14) = iVar6;\n      if (*(int *)(iVar5 + 0x28) != 0) {\n        return;\n      }\n    }\n    __n = 0;\n    FUN_00057c50(iVar6,1,param_1,param_2);\n    iVar6 = FUN_000ae4d0(*(undefined4 *)(iVar5 + 0x14));\n    local_3c = (undefined1 *)0x0;\n    if (iVar6 == 100) {\n      __n = FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0);\n      __src = (void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0);\n      local_3c = (undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f);\n      if (local_3c == (undefined1 *)0x0) {\n        *(undefined4 *)(iVar5 + 0x28) = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }\n    }\n    iVar6 = FUN_0008fe60(*(undefined4 *)(iVar5 + 0x14));\n    if ((*(int *)(iVar5 + 0x28) == 0) && (*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0)) {\n      if (local_3c == (undefined1 *)0x0) {\n        FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);\n        return;\n      }\n    }\n    else if (local_3c == (undefined1 *)0x0) {\n      return;\n    }\n    if ((int)__n < 4) {\n      FUN_000789a0(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n);\n    }\n    else {\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);\n        FUN_000264d0(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar7 = *(int *)(iVar5 + 0x10);\n      iVar6 = iVar7 + 1;\n      if (iVar1 * iVar6 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }\n      }\n      else {\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }\n    }\n    FUN_000264d0(local_3c);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_000d67f0(undefined4 param_1,undefined4 param_2)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  float fVar8;\n  void *__src;\n  int extraout_ECX;\n  uint uVar9;\n  float fVar10;\n  uint uVar11;\n  float fVar12;\n  size_t __n;\n  float fVar13;\n  int unaff_EDI;\n  undefined8 uVar14;\n  int local_4c;\n  undefined1 *local_3c;\n  uint local_38;\n  \n  uVar14 = FUN_0001af1a();\n  local_38 = (uint)((ulonglong)uVar14 >> 0x20);\n  iVar5 = (int)uVar14;\n  if (*(int *)(iVar5 + 0x28) == 0) {\n    iVar6 = *(int *)(iVar5 + 0x14);\n    if (iVar6 == 0) {\n      iVar6 = FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8));\n      *(int *)(iVar5 + 0x14) = iVar6;\n      if (*(int *)(iVar5 + 0x28) != 0) {\n        return;\n      }\n    }\n    __n = 0;\n    FUN_00057c50(iVar6,1,param_1,param_2);\n    iVar6 = FUN_000ae4d0(*(undefined4 *)(iVar5 + 0x14));\n    local_3c = (undefined1 *)0x0;\n    if (iVar6 == 100) {\n      __n = FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0);\n      __src = (void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0);\n      local_3c = (undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f);\n      if (local_3c == (undefined1 *)0x0) {\n        *(undefined4 *)(iVar5 + 0x28) = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }\n    }\n    iVar6 = FUN_0008fe60(*(undefined4 *)(iVar5 + 0x14));\n    if ((*(int *)(iVar5 + 0x28) == 0) && (*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0)) {\n      if (local_3c == (undefined1 *)0x0) {\n        FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);\n        return;\n      }\n    }\n    else if (local_3c == (undefined1 *)0x0) {\n      return;\n    }\n    if ((int)__n < 4) {\n      FUN_000789a0(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n);\n    }\n    else {\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);\n        FUN_000264d0(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar7 = *(int *)(iVar5 + 0x10);\n      iVar6 = iVar7 + 1;\n      if (iVar1 * iVar6 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }\n      }\n      else {\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }\n    }\n    FUN_000264d0(local_3c);\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "float fVar8;" primitive_type identifier ;) (declaration "void *__src;" primitive_type (pointer_declarator "*__src" * identifier) ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "float fVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "float fVar12;" primitive_type identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "float fVar13;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined8 uVar14;" type_identifier identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "undefined1 *local_3c;" type_identifier (pointer_declarator "*local_3c" * identifier) ;) (declaration "uint local_38;" type_identifier identifier ;) (expression_statement "uVar14 = FUN_0001af1a();" (assignment_expression "uVar14 = FUN_0001af1a()" identifier = (call_expression "FUN_0001af1a()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_38 = (uint)((ulonglong)uVar14 >> 0x20);" (assignment_expression "local_38 = (uint)((ulonglong)uVar14 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)uVar14 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar14 >> 0x20)" ( (binary_expression "(ulonglong)uVar14 >> 0x20" (cast_expression "(ulonglong)uVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar5 = (int)uVar14;" (assignment_expression "iVar5 = (int)uVar14" identifier = (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (*(int *)(iVar5 + 0x28) == 0) {\n    iVar6 = *(int *)(iVar5 + 0x14);\n    if (iVar6 == 0) {\n      iVar6 = FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8));\n      *(int *)(iVar5 + 0x14) = iVar6;\n      if (*(int *)(iVar5 + 0x28) != 0) {\n        return;\n      }\n    }\n    __n = 0;\n    FUN_00057c50(iVar6,1,param_1,param_2);\n    iVar6 = FUN_000ae4d0(*(undefined4 *)(iVar5 + 0x14));\n    local_3c = (undefined1 *)0x0;\n    if (iVar6 == 100) {\n      __n = FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0);\n      __src = (void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0);\n      local_3c = (undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f);\n      if (local_3c == (undefined1 *)0x0) {\n        *(undefined4 *)(iVar5 + 0x28) = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }\n    }\n    iVar6 = FUN_0008fe60(*(undefined4 *)(iVar5 + 0x14));\n    if ((*(int *)(iVar5 + 0x28) == 0) && (*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0)) {\n      if (local_3c == (undefined1 *)0x0) {\n        FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);\n        return;\n      }\n    }\n    else if (local_3c == (undefined1 *)0x0) {\n      return;\n    }\n    if ((int)__n < 4) {\n      FUN_000789a0(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n);\n    }\n    else {\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);\n        FUN_000264d0(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar7 = *(int *)(iVar5 + 0x10);\n      iVar6 = iVar7 + 1;\n      if (iVar1 * iVar6 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }\n      }\n      else {\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }\n    }\n    FUN_000264d0(local_3c);\n  }" if (parenthesized_expression "(*(int *)(iVar5 + 0x28) == 0)" ( (binary_expression "*(int *)(iVar5 + 0x28) == 0" (pointer_expression "*(int *)(iVar5 + 0x28)" * (cast_expression "(int *)(iVar5 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x28)" ( (binary_expression "iVar5 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    iVar6 = *(int *)(iVar5 + 0x14);\n    if (iVar6 == 0) {\n      iVar6 = FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8));\n      *(int *)(iVar5 + 0x14) = iVar6;\n      if (*(int *)(iVar5 + 0x28) != 0) {\n        return;\n      }\n    }\n    __n = 0;\n    FUN_00057c50(iVar6,1,param_1,param_2);\n    iVar6 = FUN_000ae4d0(*(undefined4 *)(iVar5 + 0x14));\n    local_3c = (undefined1 *)0x0;\n    if (iVar6 == 100) {\n      __n = FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0);\n      __src = (void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0);\n      local_3c = (undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f);\n      if (local_3c == (undefined1 *)0x0) {\n        *(undefined4 *)(iVar5 + 0x28) = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }\n    }\n    iVar6 = FUN_0008fe60(*(undefined4 *)(iVar5 + 0x14));\n    if ((*(int *)(iVar5 + 0x28) == 0) && (*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0)) {\n      if (local_3c == (undefined1 *)0x0) {\n        FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);\n        return;\n      }\n    }\n    else if (local_3c == (undefined1 *)0x0) {\n      return;\n    }\n    if ((int)__n < 4) {\n      FUN_000789a0(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n);\n    }\n    else {\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);\n        FUN_000264d0(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar7 = *(int *)(iVar5 + 0x10);\n      iVar6 = iVar7 + 1;\n      if (iVar1 * iVar6 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }\n      }\n      else {\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }\n    }\n    FUN_000264d0(local_3c);\n  }" { (expression_statement "iVar6 = *(int *)(iVar5 + 0x14);" (assignment_expression "iVar6 = *(int *)(iVar5 + 0x14)" identifier = (pointer_expression "*(int *)(iVar5 + 0x14)" * (cast_expression "(int *)(iVar5 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (iVar6 == 0) {\n      iVar6 = FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8));\n      *(int *)(iVar5 + 0x14) = iVar6;\n      if (*(int *)(iVar5 + 0x28) != 0) {\n        return;\n      }\n    }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar6 = FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8));\n      *(int *)(iVar5 + 0x14) = iVar6;\n      if (*(int *)(iVar5 + 0x28) != 0) {\n        return;\n      }\n    }" { (expression_statement "iVar6 = FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8));" (assignment_expression "iVar6 = FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8))" identifier = (call_expression "FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8))" identifier (argument_list "(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8))" ( identifier , (binary_expression "unaff_EDI + 0x327bd" identifier + number_literal) , (pointer_expression "*(undefined4 *)(iVar5 + 4)" * (cast_expression "(undefined4 *)(iVar5 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar5 + 8)" * (cast_expression "(undefined4 *)(iVar5 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 8)" ( (binary_expression "iVar5 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "*(int *)(iVar5 + 0x14) = iVar6;" (assignment_expression "*(int *)(iVar5 + 0x14) = iVar6" (pointer_expression "*(int *)(iVar5 + 0x14)" * (cast_expression "(int *)(iVar5 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(int *)(iVar5 + 0x28) != 0) {\n        return;\n      }" if (parenthesized_expression "(*(int *)(iVar5 + 0x28) != 0)" ( (binary_expression "*(int *)(iVar5 + 0x28) != 0" (pointer_expression "*(int *)(iVar5 + 0x28)" * (cast_expression "(int *)(iVar5 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x28)" ( (binary_expression "iVar5 + 0x28" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) })) (expression_statement "__n = 0;" (assignment_expression "__n = 0" identifier = number_literal) ;) (expression_statement "FUN_00057c50(iVar6,1,param_1,param_2);" (call_expression "FUN_00057c50(iVar6,1,param_1,param_2)" identifier (argument_list "(iVar6,1,param_1,param_2)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "iVar6 = FUN_000ae4d0(*(undefined4 *)(iVar5 + 0x14));" (assignment_expression "iVar6 = FUN_000ae4d0(*(undefined4 *)(iVar5 + 0x14))" identifier = (call_expression "FUN_000ae4d0(*(undefined4 *)(iVar5 + 0x14))" identifier (argument_list "(*(undefined4 *)(iVar5 + 0x14))" ( (pointer_expression "*(undefined4 *)(iVar5 + 0x14)" * (cast_expression "(undefined4 *)(iVar5 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) )))) ;) (expression_statement "local_3c = (undefined1 *)0x0;" (assignment_expression "local_3c = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar6 == 100) {\n      __n = FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0);\n      __src = (void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0);\n      local_3c = (undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f);\n      if (local_3c == (undefined1 *)0x0) {\n        *(undefined4 *)(iVar5 + 0x28) = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }\n    }" if (parenthesized_expression "(iVar6 == 100)" ( (binary_expression "iVar6 == 100" identifier == number_literal) )) (compound_statement "{\n      __n = FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0);\n      __src = (void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0);\n      local_3c = (undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f);\n      if (local_3c == (undefined1 *)0x0) {\n        *(undefined4 *)(iVar5 + 0x28) = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }\n    }" { (expression_statement "__n = FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0);" (assignment_expression "__n = FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0)" identifier = (call_expression "FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0)" identifier (argument_list "(*(undefined4 *)(iVar5 + 0x14),0)" ( (pointer_expression "*(undefined4 *)(iVar5 + 0x14)" * (cast_expression "(undefined4 *)(iVar5 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) , number_literal )))) ;) (expression_statement "__src = (void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0);" (assignment_expression "__src = (void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0)" identifier = (cast_expression "(void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0)" identifier (argument_list "(*(undefined4 *)(iVar5 + 0x14),0)" ( (pointer_expression "*(undefined4 *)(iVar5 + 0x14)" * (cast_expression "(undefined4 *)(iVar5 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) , number_literal ))))) ;) (expression_statement "local_3c = (undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f);" (assignment_expression "local_3c = (undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f)" identifier = (cast_expression "(undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000408d0(__n,(int)__n >> 0x1f)" identifier (argument_list "(__n,(int)__n >> 0x1f)" ( identifier , (binary_expression "(int)__n >> 0x1f" (cast_expression "(int)__n" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))))) ;) (if_statement "if (local_3c == (undefined1 *)0x0) {\n        *(undefined4 *)(iVar5 + 0x28) = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }" if (parenthesized_expression "(local_3c == (undefined1 *)0x0)" ( (binary_expression "local_3c == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(undefined4 *)(iVar5 + 0x28) = 7;\n        __n = 0;\n      }" { (expression_statement "*(undefined4 *)(iVar5 + 0x28) = 7;" (assignment_expression "*(undefined4 *)(iVar5 + 0x28) = 7" (pointer_expression "*(undefined4 *)(iVar5 + 0x28)" * (cast_expression "(undefined4 *)(iVar5 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x28)" ( (binary_expression "iVar5 + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__n = 0;" (assignment_expression "__n = 0" identifier = number_literal) ;) }) (else_clause "else {\n        memcpy(local_3c,__src,__n);\n      }" else (compound_statement "{\n        memcpy(local_3c,__src,__n);\n      }" { (expression_statement "memcpy(local_3c,__src,__n);" (call_expression "memcpy(local_3c,__src,__n)" identifier (argument_list "(local_3c,__src,__n)" ( identifier , identifier , identifier ))) ;) }))) })) (expression_statement "iVar6 = FUN_0008fe60(*(undefined4 *)(iVar5 + 0x14));" (assignment_expression "iVar6 = FUN_0008fe60(*(undefined4 *)(iVar5 + 0x14))" identifier = (call_expression "FUN_0008fe60(*(undefined4 *)(iVar5 + 0x14))" identifier (argument_list "(*(undefined4 *)(iVar5 + 0x14))" ( (pointer_expression "*(undefined4 *)(iVar5 + 0x14)" * (cast_expression "(undefined4 *)(iVar5 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) )))) ;) (if_statement "if ((*(int *)(iVar5 + 0x28) == 0) && (*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0)) {\n      if (local_3c == (undefined1 *)0x0) {\n        FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);\n        return;\n      }\n    }\n    else if (local_3c == (undefined1 *)0x0) {\n      return;\n    }" if (parenthesized_expression "((*(int *)(iVar5 + 0x28) == 0) && (*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0))" ( (binary_expression "(*(int *)(iVar5 + 0x28) == 0) && (*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0)" (parenthesized_expression "(*(int *)(iVar5 + 0x28) == 0)" ( (binary_expression "*(int *)(iVar5 + 0x28) == 0" (pointer_expression "*(int *)(iVar5 + 0x28)" * (cast_expression "(int *)(iVar5 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x28)" ( (binary_expression "iVar5 + 0x28" identifier + number_literal) )))) == number_literal) )) && (parenthesized_expression "(*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0)" ( (comma_expression "*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0" (assignment_expression "*(int *)(iVar5 + 0x28) = iVar6" (pointer_expression "*(int *)(iVar5 + 0x28)" * (cast_expression "(int *)(iVar5 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x28)" ( (binary_expression "iVar5 + 0x28" identifier + number_literal) )))) = identifier) , (binary_expression "iVar6 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      if (local_3c == (undefined1 *)0x0) {\n        FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);\n        return;\n      }\n    }" { (if_statement "if (local_3c == (undefined1 *)0x0) {\n        FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);\n        return;\n      }" if (parenthesized_expression "(local_3c == (undefined1 *)0x0)" ( (binary_expression "local_3c == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);\n        return;\n      }" { (expression_statement "FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);" (call_expression "FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2)" identifier (argument_list "(iVar5,unaff_EDI + 0x327ed,param_1,param_2)" ( identifier , (binary_expression "unaff_EDI + 0x327ed" identifier + number_literal) , identifier , identifier ))) ;) (return_statement "return;" return ;) })) }) (else_clause "else if (local_3c == (undefined1 *)0x0) {\n      return;\n    }" else (if_statement "if (local_3c == (undefined1 *)0x0) {\n      return;\n    }" if (parenthesized_expression "(local_3c == (undefined1 *)0x0)" ( (binary_expression "local_3c == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })))) (if_statement "if ((int)__n < 4) {\n      FUN_000789a0(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n);\n    }\n    else {\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);\n        FUN_000264d0(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar7 = *(int *)(iVar5 + 0x10);\n      iVar6 = iVar7 + 1;\n      if (iVar1 * iVar6 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }\n      }\n      else {\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }\n    }" if (parenthesized_expression "((int)__n < 4)" ( (binary_expression "(int)__n < 4" (cast_expression "(int)__n" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      FUN_000789a0(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n);\n    }" { (expression_statement "FUN_000789a0(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n);" (call_expression "FUN_000789a0(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n)" identifier (argument_list "(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n)" ( identifier , (binary_expression "unaff_EDI + 0x3280d" identifier + number_literal) , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);\n        FUN_000264d0(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar7 = *(int *)(iVar5 + 0x10);\n      iVar6 = iVar7 + 1;\n      if (iVar1 * iVar6 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }\n      }\n      else {\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }\n    }" else (compound_statement "{\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);\n        FUN_000264d0(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar7 = *(int *)(iVar5 + 0x10);\n      iVar6 = iVar7 + 1;\n      if (iVar1 * iVar6 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }\n      }\n      else {\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }\n    }" { (if_statement "if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);\n        FUN_000264d0(local_3c);\n        return;\n      }" if (parenthesized_expression "((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))" ( (binary_expression "(extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1]))" (parenthesized_expression "(extraout_ECX == 0)" ( (binary_expression "extraout_ECX == 0" identifier == number_literal) )) && (parenthesized_expression "(local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1]))" ( (comma_expression "local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])" (assignment_expression "local_38 = (uint)CONCAT11(*local_3c,local_3c[1])" identifier = (cast_expression "(uint)CONCAT11(*local_3c,local_3c[1])" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11(*local_3c,local_3c[1])" identifier (argument_list "(*local_3c,local_3c[1])" ( (pointer_expression "*local_3c" * identifier) , (subscript_expression "local_3c[1]" identifier [ number_literal ]) ))))) , (binary_expression "0x28 < CONCAT11(*local_3c,local_3c[1])" number_literal < (call_expression "CONCAT11(*local_3c,local_3c[1])" identifier (argument_list "(*local_3c,local_3c[1])" ( (pointer_expression "*local_3c" * identifier) , (subscript_expression "local_3c[1]" identifier [ number_literal ]) ))))) ))) )) (compound_statement "{\n        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);\n        FUN_000264d0(local_3c);\n        return;\n      }" { (expression_statement "FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);" (call_expression "FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38)" identifier (argument_list "(iVar5,unaff_EDI + 0x23c8c,local_38)" ( identifier , (binary_expression "unaff_EDI + 0x23c8c" identifier + number_literal) , identifier ))) ;) (expression_statement "FUN_000264d0(local_3c);" (call_expression "FUN_000264d0(local_3c)" identifier (argument_list "(local_3c)" ( identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];" (assignment_expression "iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3]" identifier = (binary_expression "(uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3]" (binary_expression "(uint)(byte)local_3c[2] * 0x100" (cast_expression "(uint)(byte)local_3c[2]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)local_3c[2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "local_3c[2]" identifier [ number_literal ]))) * number_literal) + (cast_expression "(uint)(byte)local_3c[3]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)local_3c[3]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "local_3c[3]" identifier [ number_literal ]))))) ;) (expression_statement "iVar7 = *(int *)(iVar5 + 0x10);" (assignment_expression "iVar7 = *(int *)(iVar5 + 0x10)" identifier = (pointer_expression "*(int *)(iVar5 + 0x10)" * (cast_expression "(int *)(iVar5 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = iVar7 + 1;" (assignment_expression "iVar6 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (if_statement "if (iVar1 * iVar6 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }\n      }\n      else {\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }" if (parenthesized_expression "(iVar1 * iVar6 * 8 + 3 < (int)__n)" ( (binary_expression "iVar1 * iVar6 * 8 + 3 < (int)__n" (binary_expression "iVar1 * iVar6 * 8 + 3" (binary_expression "iVar1 * iVar6 * 8" (binary_expression "iVar1 * iVar6" identifier * identifier) * number_literal) + number_literal) < (cast_expression "(int)__n" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }\n      }" { (if_statement "if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }" { (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) (do_statement "do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );" do (compound_statement "{\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          }" { (expression_statement "puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);" (assignment_expression "puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4)" identifier = (cast_expression "(uint *)(local_3c + iVar6 * local_4c * 8 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_3c + iVar6 * local_4c * 8 + 4)" ( (binary_expression "local_3c + iVar6 * local_4c * 8 + 4" (binary_expression "local_3c + iVar6 * local_4c * 8" identifier + (binary_expression "iVar6 * local_4c * 8" (binary_expression "iVar6 * local_4c" identifier * identifier) * number_literal)) + number_literal) )))) ;) (expression_statement "uVar9 = *puVar2;" (assignment_expression "uVar9 = *puVar2" identifier = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "uVar11 = puVar2[1];" (assignment_expression "uVar11 = puVar2[1]" identifier = (subscript_expression "puVar2[1]" identifier [ number_literal ])) ;) (expression_statement "uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;" (assignment_expression "uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18" identifier = (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8" (binary_expression "uVar11 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar11 & 0xff0000) >> 8" (parenthesized_expression "(uVar11 & 0xff0000)" ( (binary_expression "uVar11 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar11 & 0xff00) << 8" (parenthesized_expression "(uVar11 & 0xff00)" ( (binary_expression "uVar11 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar11 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" identifier = (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" ( (binary_expression "uVar9 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" ( (binary_expression "uVar9 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar9 << 0x18" identifier << number_literal))) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (if_statement "if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }" if (parenthesized_expression "(0 < iVar7)" ( (binary_expression "0 < iVar7" number_literal < identifier) )) (compound_statement "{\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }" { (labeled_statement "LAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));" statement_identifier : (do_statement "do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));" do (compound_statement "{\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              }" { (expression_statement "uVar3 = puVar2[iVar6 * 2 + 2];" (assignment_expression "uVar3 = puVar2[iVar6 * 2 + 2]" identifier = (subscript_expression "puVar2[iVar6 * 2 + 2]" identifier [ (binary_expression "iVar6 * 2 + 2" (binary_expression "iVar6 * 2" identifier * number_literal) + number_literal) ])) ;) (expression_statement "uVar4 = puVar2[iVar6 * 2 + 3];" (assignment_expression "uVar4 = puVar2[iVar6 * 2 + 3]" identifier = (subscript_expression "puVar2[iVar6 * 2 + 3]" identifier [ (binary_expression "iVar6 * 2 + 3" (binary_expression "iVar6 * 2" identifier * number_literal) + number_literal) ])) ;) (expression_statement "fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);" (assignment_expression "fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18)" identifier = (cast_expression "(float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18)" ( (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x18" identifier << number_literal)) )))) ;) (expression_statement "fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);" (assignment_expression "fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18)" identifier = (cast_expression "(float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18)" ( (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" ( (binary_expression "uVar4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" ( (binary_expression "uVar4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar4 << 0x18" identifier << number_literal)) )))) ;) (if_statement "if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;" if (parenthesized_expression "(*(int *)(iVar5 + 0xc) == 0)" ( (binary_expression "*(int *)(iVar5 + 0xc) == 0" (pointer_expression "*(int *)(iVar5 + 0xc)" * (cast_expression "(int *)(iVar5 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }" { (if_statement "if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }" if (parenthesized_expression "(fVar13 < fVar12)" ( (binary_expression "fVar13 < fVar12" identifier < identifier) )) (compound_statement "{\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }" { (labeled_statement "LAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);" statement_identifier : (expression_statement "FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);" (call_expression "FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2)" identifier (argument_list "(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2)" ( identifier , (binary_expression "&UNK_00032869 + unaff_EDI" (pointer_expression "&UNK_00032869" & identifier) + identifier) , identifier , identifier , identifier , identifier ))) ;)) })) }) (else_clause "else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;" else (if_statement "if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;" if (parenthesized_expression "((int)fVar13 < (int)fVar12)" ( (binary_expression "(int)fVar13 < (int)fVar12" (cast_expression "(int)fVar13" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)fVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_000d69ff;" goto statement_identifier ;)))) (if_statement "if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }" if (parenthesized_expression "(extraout_ECX == 0)" ( (binary_expression "extraout_ECX == 0" identifier == number_literal) )) (compound_statement "{\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }" { (labeled_statement "LAB_000d69bd:\n                  iVar6 = iVar6 + 1;" statement_identifier : (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;)) (if_statement "if (*(int *)(iVar5 + 0x10) <= iVar6) break;" if (parenthesized_expression "(*(int *)(iVar5 + 0x10) <= iVar6)" ( (binary_expression "*(int *)(iVar5 + 0x10) <= iVar6" (pointer_expression "*(int *)(iVar5 + 0x10)" * (cast_expression "(int *)(iVar5 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) )))) <= identifier) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_000d69c9;" goto statement_identifier ;) })) (expression_statement "uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);" (assignment_expression "uVar3 = *(uint *)(extraout_ECX + iVar6 * 8)" identifier = (pointer_expression "*(uint *)(extraout_ECX + iVar6 * 8)" * (cast_expression "(uint *)(extraout_ECX + iVar6 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_ECX + iVar6 * 8)" ( (binary_expression "extraout_ECX + iVar6 * 8" identifier + (binary_expression "iVar6 * 8" identifier * number_literal)) ))))) ;) (expression_statement "uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);" (assignment_expression "uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8)" identifier = (pointer_expression "*(uint *)(extraout_ECX + 4 + iVar6 * 8)" * (cast_expression "(uint *)(extraout_ECX + 4 + iVar6 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_ECX + 4 + iVar6 * 8)" ( (binary_expression "extraout_ECX + 4 + iVar6 * 8" (binary_expression "extraout_ECX + 4" identifier + number_literal) + (binary_expression "iVar6 * 8" identifier * number_literal)) ))))) ;) (expression_statement "fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);" (assignment_expression "fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18)" identifier = (cast_expression "(float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18)" ( (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x18" identifier << number_literal)) )))) ;) (expression_statement "fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);" (assignment_expression "fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18)" identifier = (cast_expression "(float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18)" ( (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" ( (binary_expression "uVar4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" ( (binary_expression "uVar4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar4 << 0x18" identifier << number_literal)) )))) ;) (if_statement "if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }" if (parenthesized_expression "(*(int *)(iVar5 + 0xc) == 0)" ( (binary_expression "*(int *)(iVar5 + 0xc) == 0" (pointer_expression "*(int *)(iVar5 + 0xc)" * (cast_expression "(int *)(iVar5 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }" { (if_statement "if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;" if (parenthesized_expression "((fVar12 < fVar10) || (fVar8 < fVar13))" ( (binary_expression "(fVar12 < fVar10) || (fVar8 < fVar13)" (parenthesized_expression "(fVar12 < fVar10)" ( (binary_expression "fVar12 < fVar10" identifier < identifier) )) || (parenthesized_expression "(fVar8 < fVar13)" ( (binary_expression "fVar8 < fVar13" identifier < identifier) ))) )) (goto_statement "goto LAB_000d6998;" goto statement_identifier ;)) (goto_statement "goto LAB_000d69bd;" goto statement_identifier ;) })) (if_statement "if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }" if (parenthesized_expression "(((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10))" ( (binary_expression "((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)" (parenthesized_expression "((int)fVar8 < (int)fVar13)" ( (binary_expression "(int)fVar8 < (int)fVar13" (cast_expression "(int)fVar8" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)fVar13" ( (type_descriptor "int" primitive_type) ) identifier)) )) || (parenthesized_expression "((int)fVar12 < (int)fVar10)" ( (binary_expression "(int)fVar12 < (int)fVar10" (cast_expression "(int)fVar12" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)fVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }" { (labeled_statement "LAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);" statement_identifier : (expression_statement "FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);" (call_expression "FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2)" identifier (argument_list "(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2)" ( identifier , (binary_expression "unaff_EDI + 0x32899" identifier + number_literal) , identifier , identifier , identifier , identifier ))) ;)) (goto_statement "goto LAB_000d69bd;" goto statement_identifier ;) })) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 < *(int *)(iVar5 + 0x10))" ( (binary_expression "iVar6 < *(int *)(iVar5 + 0x10)" identifier < (pointer_expression "*(int *)(iVar5 + 0x10)" * (cast_expression "(int *)(iVar5 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) ))))) )) ;)) })) (if_statement "if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }" if (parenthesized_expression "(local_38 == 0)" ( (binary_expression "local_38 == 0" identifier == number_literal) )) (compound_statement "{\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }" { (expression_statement "FUN_000d3db0(uVar11,uVar9,param_1,param_2);" (call_expression "FUN_000d3db0(uVar11,uVar9,param_1,param_2)" identifier (argument_list "(uVar11,uVar9,param_1,param_2)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "*(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;" (assignment_expression "*(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1" (pointer_expression "*(int *)(iVar5 + 0x20)" * (cast_expression "(int *)(iVar5 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x20)" ( (binary_expression "iVar5 + 0x20" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar5 + 0x20) + 1" (pointer_expression "*(int *)(iVar5 + 0x20)" * (cast_expression "(int *)(iVar5 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x20)" ( (binary_expression "iVar5 + 0x20" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }" else (compound_statement "{\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }" { (expression_statement "FUN_000d3db0(uVar11,uVar9,param_1,param_2);" (call_expression "FUN_000d3db0(uVar11,uVar9,param_1,param_2)" identifier (argument_list "(uVar11,uVar9,param_1,param_2)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "FUN_000d67f0(uVar11,uVar9);" (call_expression "FUN_000d67f0(uVar11,uVar9)" identifier (argument_list "(uVar11,uVar9)" ( identifier , identifier ))) ;) (expression_statement "*(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;" (assignment_expression "*(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1" (pointer_expression "*(int *)(iVar5 + 0x24)" * (cast_expression "(int *)(iVar5 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x24)" ( (binary_expression "iVar5 + 0x24" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar5 + 0x24) + 1" (pointer_expression "*(int *)(iVar5 + 0x24)" * (cast_expression "(int *)(iVar5 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x24)" ( (binary_expression "iVar5 + 0x24" identifier + number_literal) )))) + number_literal)) ;) }))) (expression_statement "local_4c = local_4c + 1;" (assignment_expression "local_4c = local_4c + 1" identifier = (binary_expression "local_4c + 1" identifier + number_literal)) ;) (if_statement "if (local_4c == iVar1) break;" if (parenthesized_expression "(local_4c == iVar1)" ( (binary_expression "local_4c == iVar1" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar7 = *(int *)(iVar5 + 0x10);" (assignment_expression "iVar7 = *(int *)(iVar5 + 0x10)" identifier = (pointer_expression "*(int *)(iVar5 + 0x10)" * (cast_expression "(int *)(iVar5 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = iVar7 + 1;" (assignment_expression "iVar6 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) }) (else_clause "else {\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }" else (compound_statement "{\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }" { (expression_statement "FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);" (call_expression "FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n)" identifier (argument_list "(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n)" ( identifier , (binary_expression "unaff_EDI + 0x32831" identifier + number_literal) , identifier , identifier , identifier , identifier ))) ;) }))) }))) (expression_statement "FUN_000264d0(local_3c);" (call_expression "FUN_000264d0(local_3c)" identifier (argument_list "(local_3c)" ( identifier ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void rtreeCheckNode(RtreeCheck *pCheck,int iDepth,u8 *aParent,i64 iNode)\n\n{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  uint uVar4;\n  RtreeCheck *pCheck_00;\n  int iVar5;\n  int iVar6;\n  float fVar7;\n  void *__src;\n  sqlite3_stmt *pStmt;\n  int extraout_ECX;\n  uint uVar8;\n  float fVar9;\n  RtreeCheck *pCheck_01;\n  float fVar10;\n  size_t __n;\n  float fVar11;\n  int unaff_EDI;\n  undefined8 uVar12;\n  RtreeCheck *aParent_00;\n  undefined4 in_stack_ffffffa4;\n  int local_4c;\n  undefined1 *local_3c;\n  uint local_38;\n  \n  uVar12 = __x86_get_pc_thunk_di();\n  local_38 = (uint)((ulonglong)uVar12 >> 0x20);\n  pCheck_00 = (RtreeCheck *)uVar12;\n  if (pCheck_00->rc == 0) {\n    pStmt = pCheck_00->pGetNode;\n    if (pStmt == (sqlite3_stmt *)0x0) {\n      pStmt = rtreeCheckPrepare(pCheck_00,(char *)(unaff_EDI + 0x327bd),pCheck_00->zDb,\n                                pCheck_00->zTab);\n      pCheck_00->pGetNode = pStmt;\n      if (pCheck_00->rc != 0) {\n        return;\n      }\n    }\n    __n = 0;\n    sqlite3_bind_int64(pStmt,1,CONCAT44(iDepth,pCheck));\n    iVar5 = sqlite3_step(pCheck_00->pGetNode);\n    local_3c = (undefined1 *)0x0;\n    if (iVar5 == 100) {\n      __n = sqlite3_column_bytes(pCheck_00->pGetNode,0);\n      __src = sqlite3_column_blob(pCheck_00->pGetNode,0);\n      local_3c = (undefined1 *)sqlite3_malloc64((longlong)(int)__n);\n      if (local_3c == (undefined1 *)0x0) {\n        pCheck_00->rc = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }\n    }\n    iVar5 = sqlite3_reset(pCheck_00->pGetNode);\n    if ((pCheck_00->rc == 0) && (pCheck_00->rc = iVar5, iVar5 == 0)) {\n      if (local_3c == (undefined1 *)0x0) {\n        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x327ed),pCheck,iDepth);\n        return;\n      }\n    }\n    else if (local_3c == (undefined1 *)0x0) {\n      return;\n    }\n    if ((int)__n < 4) {\n      rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x3280d),pCheck,iDepth,__n);\n    }\n    else {\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x23c8c),local_38);\n        sqlite3_free(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar6 = pCheck_00->nDim;\n      iVar5 = iVar6 + 1;\n      if (iVar1 * iVar5 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar5 * local_4c * 8 + 4);\n            uVar8 = *puVar2;\n            uVar3 = puVar2[1];\n            pCheck_01 = (RtreeCheck *)\n                        (uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                        uVar3 << 0x18);\n            uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n            iVar5 = 0;\n            if (0 < iVar6) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar5 * 2 + 2];\n                uVar4 = puVar2[iVar5 * 2 + 3];\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar11 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if (fVar11 < fVar10) {\nLAB_000d69ff:\n                    rtreeCheckAppendMsg(pCheck_00,&UNK_00032869 + unaff_EDI,iVar5,local_4c,pCheck,\n                                        iDepth);\n                  }\n                }\n                else if ((int)fVar11 < (int)fVar10) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar5 = iVar5 + 1;\n                  if (pCheck_00->nDim <= iVar5) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar5 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar5 * 8);\n                fVar9 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                               uVar3 << 0x18);\n                fVar7 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if ((fVar10 < fVar9) || (fVar7 < fVar11)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar7 < (int)fVar11) || ((int)fVar10 < (int)fVar9)) {\nLAB_000d6998:\n                  rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32899),iVar5,local_4c,pCheck,\n                                      iDepth);\n                  goto LAB_000d69bd;\n                }\n                iVar5 = iVar5 + 1;\n              } while (iVar5 < pCheck_00->nDim);\n            }\n            if (local_38 == 0) {\n              rtreeCheckMapping(pCheck_00,1,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              pCheck_00->nLeaf = pCheck_00->nLeaf + 1;\n            }\n            else {\n              aParent_00 = pCheck;\n              iVar5 = iDepth;\n              rtreeCheckMapping(pCheck_00,0,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              rtreeCheckNode(pCheck_01,uVar8,(u8 *)aParent_00,CONCAT44(in_stack_ffffffa4,iVar5));\n              pCheck_00->nNonLeaf = pCheck_00->nNonLeaf + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar6 = pCheck_00->nDim;\n            iVar5 = iVar6 + 1;\n          } while( true );\n        }\n      }\n      else {\n        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32831),pCheck,iDepth,iVar1,__n);\n      }\n    }\n    sqlite3_free(local_3c);\n  }\n  return;\n}\n\n" (function_definition "void rtreeCheckNode(RtreeCheck *pCheck,int iDepth,u8 *aParent,i64 iNode)\n\n{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  uint uVar4;\n  RtreeCheck *pCheck_00;\n  int iVar5;\n  int iVar6;\n  float fVar7;\n  void *__src;\n  sqlite3_stmt *pStmt;\n  int extraout_ECX;\n  uint uVar8;\n  float fVar9;\n  RtreeCheck *pCheck_01;\n  float fVar10;\n  size_t __n;\n  float fVar11;\n  int unaff_EDI;\n  undefined8 uVar12;\n  RtreeCheck *aParent_00;\n  undefined4 in_stack_ffffffa4;\n  int local_4c;\n  undefined1 *local_3c;\n  uint local_38;\n  \n  uVar12 = __x86_get_pc_thunk_di();\n  local_38 = (uint)((ulonglong)uVar12 >> 0x20);\n  pCheck_00 = (RtreeCheck *)uVar12;\n  if (pCheck_00->rc == 0) {\n    pStmt = pCheck_00->pGetNode;\n    if (pStmt == (sqlite3_stmt *)0x0) {\n      pStmt = rtreeCheckPrepare(pCheck_00,(char *)(unaff_EDI + 0x327bd),pCheck_00->zDb,\n                                pCheck_00->zTab);\n      pCheck_00->pGetNode = pStmt;\n      if (pCheck_00->rc != 0) {\n        return;\n      }\n    }\n    __n = 0;\n    sqlite3_bind_int64(pStmt,1,CONCAT44(iDepth,pCheck));\n    iVar5 = sqlite3_step(pCheck_00->pGetNode);\n    local_3c = (undefined1 *)0x0;\n    if (iVar5 == 100) {\n      __n = sqlite3_column_bytes(pCheck_00->pGetNode,0);\n      __src = sqlite3_column_blob(pCheck_00->pGetNode,0);\n      local_3c = (undefined1 *)sqlite3_malloc64((longlong)(int)__n);\n      if (local_3c == (undefined1 *)0x0) {\n        pCheck_00->rc = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }\n    }\n    iVar5 = sqlite3_reset(pCheck_00->pGetNode);\n    if ((pCheck_00->rc == 0) && (pCheck_00->rc = iVar5, iVar5 == 0)) {\n      if (local_3c == (undefined1 *)0x0) {\n        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x327ed),pCheck,iDepth);\n        return;\n      }\n    }\n    else if (local_3c == (undefined1 *)0x0) {\n      return;\n    }\n    if ((int)__n < 4) {\n      rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x3280d),pCheck,iDepth,__n);\n    }\n    else {\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x23c8c),local_38);\n        sqlite3_free(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar6 = pCheck_00->nDim;\n      iVar5 = iVar6 + 1;\n      if (iVar1 * iVar5 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar5 * local_4c * 8 + 4);\n            uVar8 = *puVar2;\n            uVar3 = puVar2[1];\n            pCheck_01 = (RtreeCheck *)\n                        (uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                        uVar3 << 0x18);\n            uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n            iVar5 = 0;\n            if (0 < iVar6) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar5 * 2 + 2];\n                uVar4 = puVar2[iVar5 * 2 + 3];\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar11 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if (fVar11 < fVar10) {\nLAB_000d69ff:\n                    rtreeCheckAppendMsg(pCheck_00,&UNK_00032869 + unaff_EDI,iVar5,local_4c,pCheck,\n                                        iDepth);\n                  }\n                }\n                else if ((int)fVar11 < (int)fVar10) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar5 = iVar5 + 1;\n                  if (pCheck_00->nDim <= iVar5) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar5 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar5 * 8);\n                fVar9 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                               uVar3 << 0x18);\n                fVar7 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if ((fVar10 < fVar9) || (fVar7 < fVar11)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar7 < (int)fVar11) || ((int)fVar10 < (int)fVar9)) {\nLAB_000d6998:\n                  rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32899),iVar5,local_4c,pCheck,\n                                      iDepth);\n                  goto LAB_000d69bd;\n                }\n                iVar5 = iVar5 + 1;\n              } while (iVar5 < pCheck_00->nDim);\n            }\n            if (local_38 == 0) {\n              rtreeCheckMapping(pCheck_00,1,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              pCheck_00->nLeaf = pCheck_00->nLeaf + 1;\n            }\n            else {\n              aParent_00 = pCheck;\n              iVar5 = iDepth;\n              rtreeCheckMapping(pCheck_00,0,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              rtreeCheckNode(pCheck_01,uVar8,(u8 *)aParent_00,CONCAT44(in_stack_ffffffa4,iVar5));\n              pCheck_00->nNonLeaf = pCheck_00->nNonLeaf + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar6 = pCheck_00->nDim;\n            iVar5 = iVar6 + 1;\n          } while( true );\n        }\n      }\n      else {\n        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32831),pCheck,iDepth,iVar1,__n);\n      }\n    }\n    sqlite3_free(local_3c);\n  }\n  return;\n}" primitive_type (function_declarator "rtreeCheckNode(RtreeCheck *pCheck,int iDepth,u8 *aParent,i64 iNode)" identifier (parameter_list "(RtreeCheck *pCheck,int iDepth,u8 *aParent,i64 iNode)" ( (parameter_declaration "RtreeCheck *pCheck" type_identifier (pointer_declarator "*pCheck" * identifier)) , (parameter_declaration "int iDepth" primitive_type identifier) , (parameter_declaration "u8 *aParent" type_identifier (pointer_declarator "*aParent" * identifier)) , (parameter_declaration "i64 iNode" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  uint uVar4;\n  RtreeCheck *pCheck_00;\n  int iVar5;\n  int iVar6;\n  float fVar7;\n  void *__src;\n  sqlite3_stmt *pStmt;\n  int extraout_ECX;\n  uint uVar8;\n  float fVar9;\n  RtreeCheck *pCheck_01;\n  float fVar10;\n  size_t __n;\n  float fVar11;\n  int unaff_EDI;\n  undefined8 uVar12;\n  RtreeCheck *aParent_00;\n  undefined4 in_stack_ffffffa4;\n  int local_4c;\n  undefined1 *local_3c;\n  uint local_38;\n  \n  uVar12 = __x86_get_pc_thunk_di();\n  local_38 = (uint)((ulonglong)uVar12 >> 0x20);\n  pCheck_00 = (RtreeCheck *)uVar12;\n  if (pCheck_00->rc == 0) {\n    pStmt = pCheck_00->pGetNode;\n    if (pStmt == (sqlite3_stmt *)0x0) {\n      pStmt = rtreeCheckPrepare(pCheck_00,(char *)(unaff_EDI + 0x327bd),pCheck_00->zDb,\n                                pCheck_00->zTab);\n      pCheck_00->pGetNode = pStmt;\n      if (pCheck_00->rc != 0) {\n        return;\n      }\n    }\n    __n = 0;\n    sqlite3_bind_int64(pStmt,1,CONCAT44(iDepth,pCheck));\n    iVar5 = sqlite3_step(pCheck_00->pGetNode);\n    local_3c = (undefined1 *)0x0;\n    if (iVar5 == 100) {\n      __n = sqlite3_column_bytes(pCheck_00->pGetNode,0);\n      __src = sqlite3_column_blob(pCheck_00->pGetNode,0);\n      local_3c = (undefined1 *)sqlite3_malloc64((longlong)(int)__n);\n      if (local_3c == (undefined1 *)0x0) {\n        pCheck_00->rc = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }\n    }\n    iVar5 = sqlite3_reset(pCheck_00->pGetNode);\n    if ((pCheck_00->rc == 0) && (pCheck_00->rc = iVar5, iVar5 == 0)) {\n      if (local_3c == (undefined1 *)0x0) {\n        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x327ed),pCheck,iDepth);\n        return;\n      }\n    }\n    else if (local_3c == (undefined1 *)0x0) {\n      return;\n    }\n    if ((int)__n < 4) {\n      rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x3280d),pCheck,iDepth,__n);\n    }\n    else {\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x23c8c),local_38);\n        sqlite3_free(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar6 = pCheck_00->nDim;\n      iVar5 = iVar6 + 1;\n      if (iVar1 * iVar5 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar5 * local_4c * 8 + 4);\n            uVar8 = *puVar2;\n            uVar3 = puVar2[1];\n            pCheck_01 = (RtreeCheck *)\n                        (uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                        uVar3 << 0x18);\n            uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n            iVar5 = 0;\n            if (0 < iVar6) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar5 * 2 + 2];\n                uVar4 = puVar2[iVar5 * 2 + 3];\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar11 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if (fVar11 < fVar10) {\nLAB_000d69ff:\n                    rtreeCheckAppendMsg(pCheck_00,&UNK_00032869 + unaff_EDI,iVar5,local_4c,pCheck,\n                                        iDepth);\n                  }\n                }\n                else if ((int)fVar11 < (int)fVar10) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar5 = iVar5 + 1;\n                  if (pCheck_00->nDim <= iVar5) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar5 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar5 * 8);\n                fVar9 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                               uVar3 << 0x18);\n                fVar7 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if ((fVar10 < fVar9) || (fVar7 < fVar11)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar7 < (int)fVar11) || ((int)fVar10 < (int)fVar9)) {\nLAB_000d6998:\n                  rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32899),iVar5,local_4c,pCheck,\n                                      iDepth);\n                  goto LAB_000d69bd;\n                }\n                iVar5 = iVar5 + 1;\n              } while (iVar5 < pCheck_00->nDim);\n            }\n            if (local_38 == 0) {\n              rtreeCheckMapping(pCheck_00,1,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              pCheck_00->nLeaf = pCheck_00->nLeaf + 1;\n            }\n            else {\n              aParent_00 = pCheck;\n              iVar5 = iDepth;\n              rtreeCheckMapping(pCheck_00,0,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              rtreeCheckNode(pCheck_01,uVar8,(u8 *)aParent_00,CONCAT44(in_stack_ffffffa4,iVar5));\n              pCheck_00->nNonLeaf = pCheck_00->nNonLeaf + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar6 = pCheck_00->nDim;\n            iVar5 = iVar6 + 1;\n          } while( true );\n        }\n      }\n      else {\n        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32831),pCheck,iDepth,iVar1,__n);\n      }\n    }\n    sqlite3_free(local_3c);\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "RtreeCheck *pCheck_00;" type_identifier (pointer_declarator "*pCheck_00" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "float fVar7;" primitive_type identifier ;) (declaration "void *__src;" primitive_type (pointer_declarator "*__src" * identifier) ;) (declaration "sqlite3_stmt *pStmt;" type_identifier (pointer_declarator "*pStmt" * identifier) ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "float fVar9;" primitive_type identifier ;) (declaration "RtreeCheck *pCheck_01;" type_identifier (pointer_declarator "*pCheck_01" * identifier) ;) (declaration "float fVar10;" primitive_type identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "float fVar11;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined8 uVar12;" type_identifier identifier ;) (declaration "RtreeCheck *aParent_00;" type_identifier (pointer_declarator "*aParent_00" * identifier) ;) (declaration "undefined4 in_stack_ffffffa4;" type_identifier identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "undefined1 *local_3c;" type_identifier (pointer_declarator "*local_3c" * identifier) ;) (declaration "uint local_38;" type_identifier identifier ;) (expression_statement "uVar12 = __x86_get_pc_thunk_di();" (assignment_expression "uVar12 = __x86_get_pc_thunk_di()" identifier = (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_38 = (uint)((ulonglong)uVar12 >> 0x20);" (assignment_expression "local_38 = (uint)((ulonglong)uVar12 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)uVar12 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar12 >> 0x20)" ( (binary_expression "(ulonglong)uVar12 >> 0x20" (cast_expression "(ulonglong)uVar12" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "pCheck_00 = (RtreeCheck *)uVar12;" (assignment_expression "pCheck_00 = (RtreeCheck *)uVar12" identifier = (cast_expression "(RtreeCheck *)uVar12" ( (type_descriptor "RtreeCheck *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (pCheck_00->rc == 0) {\n    pStmt = pCheck_00->pGetNode;\n    if (pStmt == (sqlite3_stmt *)0x0) {\n      pStmt = rtreeCheckPrepare(pCheck_00,(char *)(unaff_EDI + 0x327bd),pCheck_00->zDb,\n                                pCheck_00->zTab);\n      pCheck_00->pGetNode = pStmt;\n      if (pCheck_00->rc != 0) {\n        return;\n      }\n    }\n    __n = 0;\n    sqlite3_bind_int64(pStmt,1,CONCAT44(iDepth,pCheck));\n    iVar5 = sqlite3_step(pCheck_00->pGetNode);\n    local_3c = (undefined1 *)0x0;\n    if (iVar5 == 100) {\n      __n = sqlite3_column_bytes(pCheck_00->pGetNode,0);\n      __src = sqlite3_column_blob(pCheck_00->pGetNode,0);\n      local_3c = (undefined1 *)sqlite3_malloc64((longlong)(int)__n);\n      if (local_3c == (undefined1 *)0x0) {\n        pCheck_00->rc = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }\n    }\n    iVar5 = sqlite3_reset(pCheck_00->pGetNode);\n    if ((pCheck_00->rc == 0) && (pCheck_00->rc = iVar5, iVar5 == 0)) {\n      if (local_3c == (undefined1 *)0x0) {\n        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x327ed),pCheck,iDepth);\n        return;\n      }\n    }\n    else if (local_3c == (undefined1 *)0x0) {\n      return;\n    }\n    if ((int)__n < 4) {\n      rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x3280d),pCheck,iDepth,__n);\n    }\n    else {\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x23c8c),local_38);\n        sqlite3_free(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar6 = pCheck_00->nDim;\n      iVar5 = iVar6 + 1;\n      if (iVar1 * iVar5 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar5 * local_4c * 8 + 4);\n            uVar8 = *puVar2;\n            uVar3 = puVar2[1];\n            pCheck_01 = (RtreeCheck *)\n                        (uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                        uVar3 << 0x18);\n            uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n            iVar5 = 0;\n            if (0 < iVar6) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar5 * 2 + 2];\n                uVar4 = puVar2[iVar5 * 2 + 3];\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar11 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if (fVar11 < fVar10) {\nLAB_000d69ff:\n                    rtreeCheckAppendMsg(pCheck_00,&UNK_00032869 + unaff_EDI,iVar5,local_4c,pCheck,\n                                        iDepth);\n                  }\n                }\n                else if ((int)fVar11 < (int)fVar10) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar5 = iVar5 + 1;\n                  if (pCheck_00->nDim <= iVar5) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar5 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar5 * 8);\n                fVar9 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                               uVar3 << 0x18);\n                fVar7 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if ((fVar10 < fVar9) || (fVar7 < fVar11)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar7 < (int)fVar11) || ((int)fVar10 < (int)fVar9)) {\nLAB_000d6998:\n                  rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32899),iVar5,local_4c,pCheck,\n                                      iDepth);\n                  goto LAB_000d69bd;\n                }\n                iVar5 = iVar5 + 1;\n              } while (iVar5 < pCheck_00->nDim);\n            }\n            if (local_38 == 0) {\n              rtreeCheckMapping(pCheck_00,1,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              pCheck_00->nLeaf = pCheck_00->nLeaf + 1;\n            }\n            else {\n              aParent_00 = pCheck;\n              iVar5 = iDepth;\n              rtreeCheckMapping(pCheck_00,0,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              rtreeCheckNode(pCheck_01,uVar8,(u8 *)aParent_00,CONCAT44(in_stack_ffffffa4,iVar5));\n              pCheck_00->nNonLeaf = pCheck_00->nNonLeaf + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar6 = pCheck_00->nDim;\n            iVar5 = iVar6 + 1;\n          } while( true );\n        }\n      }\n      else {\n        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32831),pCheck,iDepth,iVar1,__n);\n      }\n    }\n    sqlite3_free(local_3c);\n  }" if (parenthesized_expression "(pCheck_00->rc == 0)" ( (binary_expression "pCheck_00->rc == 0" (field_expression "pCheck_00->rc" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n    pStmt = pCheck_00->pGetNode;\n    if (pStmt == (sqlite3_stmt *)0x0) {\n      pStmt = rtreeCheckPrepare(pCheck_00,(char *)(unaff_EDI + 0x327bd),pCheck_00->zDb,\n                                pCheck_00->zTab);\n      pCheck_00->pGetNode = pStmt;\n      if (pCheck_00->rc != 0) {\n        return;\n      }\n    }\n    __n = 0;\n    sqlite3_bind_int64(pStmt,1,CONCAT44(iDepth,pCheck));\n    iVar5 = sqlite3_step(pCheck_00->pGetNode);\n    local_3c = (undefined1 *)0x0;\n    if (iVar5 == 100) {\n      __n = sqlite3_column_bytes(pCheck_00->pGetNode,0);\n      __src = sqlite3_column_blob(pCheck_00->pGetNode,0);\n      local_3c = (undefined1 *)sqlite3_malloc64((longlong)(int)__n);\n      if (local_3c == (undefined1 *)0x0) {\n        pCheck_00->rc = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }\n    }\n    iVar5 = sqlite3_reset(pCheck_00->pGetNode);\n    if ((pCheck_00->rc == 0) && (pCheck_00->rc = iVar5, iVar5 == 0)) {\n      if (local_3c == (undefined1 *)0x0) {\n        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x327ed),pCheck,iDepth);\n        return;\n      }\n    }\n    else if (local_3c == (undefined1 *)0x0) {\n      return;\n    }\n    if ((int)__n < 4) {\n      rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x3280d),pCheck,iDepth,__n);\n    }\n    else {\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x23c8c),local_38);\n        sqlite3_free(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar6 = pCheck_00->nDim;\n      iVar5 = iVar6 + 1;\n      if (iVar1 * iVar5 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar5 * local_4c * 8 + 4);\n            uVar8 = *puVar2;\n            uVar3 = puVar2[1];\n            pCheck_01 = (RtreeCheck *)\n                        (uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                        uVar3 << 0x18);\n            uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n            iVar5 = 0;\n            if (0 < iVar6) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar5 * 2 + 2];\n                uVar4 = puVar2[iVar5 * 2 + 3];\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar11 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if (fVar11 < fVar10) {\nLAB_000d69ff:\n                    rtreeCheckAppendMsg(pCheck_00,&UNK_00032869 + unaff_EDI,iVar5,local_4c,pCheck,\n                                        iDepth);\n                  }\n                }\n                else if ((int)fVar11 < (int)fVar10) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar5 = iVar5 + 1;\n                  if (pCheck_00->nDim <= iVar5) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar5 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar5 * 8);\n                fVar9 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                               uVar3 << 0x18);\n                fVar7 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if ((fVar10 < fVar9) || (fVar7 < fVar11)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar7 < (int)fVar11) || ((int)fVar10 < (int)fVar9)) {\nLAB_000d6998:\n                  rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32899),iVar5,local_4c,pCheck,\n                                      iDepth);\n                  goto LAB_000d69bd;\n                }\n                iVar5 = iVar5 + 1;\n              } while (iVar5 < pCheck_00->nDim);\n            }\n            if (local_38 == 0) {\n              rtreeCheckMapping(pCheck_00,1,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              pCheck_00->nLeaf = pCheck_00->nLeaf + 1;\n            }\n            else {\n              aParent_00 = pCheck;\n              iVar5 = iDepth;\n              rtreeCheckMapping(pCheck_00,0,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              rtreeCheckNode(pCheck_01,uVar8,(u8 *)aParent_00,CONCAT44(in_stack_ffffffa4,iVar5));\n              pCheck_00->nNonLeaf = pCheck_00->nNonLeaf + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar6 = pCheck_00->nDim;\n            iVar5 = iVar6 + 1;\n          } while( true );\n        }\n      }\n      else {\n        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32831),pCheck,iDepth,iVar1,__n);\n      }\n    }\n    sqlite3_free(local_3c);\n  }" { (expression_statement "pStmt = pCheck_00->pGetNode;" (assignment_expression "pStmt = pCheck_00->pGetNode" identifier = (field_expression "pCheck_00->pGetNode" identifier -> field_identifier)) ;) (if_statement "if (pStmt == (sqlite3_stmt *)0x0) {\n      pStmt = rtreeCheckPrepare(pCheck_00,(char *)(unaff_EDI + 0x327bd),pCheck_00->zDb,\n                                pCheck_00->zTab);\n      pCheck_00->pGetNode = pStmt;\n      if (pCheck_00->rc != 0) {\n        return;\n      }\n    }" if (parenthesized_expression "(pStmt == (sqlite3_stmt *)0x0)" ( (binary_expression "pStmt == (sqlite3_stmt *)0x0" identifier == (cast_expression "(sqlite3_stmt *)0x0" ( (type_descriptor "sqlite3_stmt *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pStmt = rtreeCheckPrepare(pCheck_00,(char *)(unaff_EDI + 0x327bd),pCheck_00->zDb,\n                                pCheck_00->zTab);\n      pCheck_00->pGetNode = pStmt;\n      if (pCheck_00->rc != 0) {\n        return;\n      }\n    }" { (expression_statement "pStmt = rtreeCheckPrepare(pCheck_00,(char *)(unaff_EDI + 0x327bd),pCheck_00->zDb,\n                                pCheck_00->zTab);" (assignment_expression "pStmt = rtreeCheckPrepare(pCheck_00,(char *)(unaff_EDI + 0x327bd),pCheck_00->zDb,\n                                pCheck_00->zTab)" identifier = (call_expression "rtreeCheckPrepare(pCheck_00,(char *)(unaff_EDI + 0x327bd),pCheck_00->zDb,\n                                pCheck_00->zTab)" identifier (argument_list "(pCheck_00,(char *)(unaff_EDI + 0x327bd),pCheck_00->zDb,\n                                pCheck_00->zTab)" ( identifier , (cast_expression "(char *)(unaff_EDI + 0x327bd)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x327bd)" ( (binary_expression "unaff_EDI + 0x327bd" identifier + number_literal) ))) , (field_expression "pCheck_00->zDb" identifier -> field_identifier) , (field_expression "pCheck_00->zTab" identifier -> field_identifier) )))) ;) (expression_statement "pCheck_00->pGetNode = pStmt;" (assignment_expression "pCheck_00->pGetNode = pStmt" (field_expression "pCheck_00->pGetNode" identifier -> field_identifier) = identifier) ;) (if_statement "if (pCheck_00->rc != 0) {\n        return;\n      }" if (parenthesized_expression "(pCheck_00->rc != 0)" ( (binary_expression "pCheck_00->rc != 0" (field_expression "pCheck_00->rc" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) })) (expression_statement "__n = 0;" (assignment_expression "__n = 0" identifier = number_literal) ;) (expression_statement "sqlite3_bind_int64(pStmt,1,CONCAT44(iDepth,pCheck));" (call_expression "sqlite3_bind_int64(pStmt,1,CONCAT44(iDepth,pCheck))" identifier (argument_list "(pStmt,1,CONCAT44(iDepth,pCheck))" ( identifier , number_literal , (call_expression "CONCAT44(iDepth,pCheck)" identifier (argument_list "(iDepth,pCheck)" ( identifier , identifier ))) ))) ;) (expression_statement "iVar5 = sqlite3_step(pCheck_00->pGetNode);" (assignment_expression "iVar5 = sqlite3_step(pCheck_00->pGetNode)" identifier = (call_expression "sqlite3_step(pCheck_00->pGetNode)" identifier (argument_list "(pCheck_00->pGetNode)" ( (field_expression "pCheck_00->pGetNode" identifier -> field_identifier) )))) ;) (expression_statement "local_3c = (undefined1 *)0x0;" (assignment_expression "local_3c = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar5 == 100) {\n      __n = sqlite3_column_bytes(pCheck_00->pGetNode,0);\n      __src = sqlite3_column_blob(pCheck_00->pGetNode,0);\n      local_3c = (undefined1 *)sqlite3_malloc64((longlong)(int)__n);\n      if (local_3c == (undefined1 *)0x0) {\n        pCheck_00->rc = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }\n    }" if (parenthesized_expression "(iVar5 == 100)" ( (binary_expression "iVar5 == 100" identifier == number_literal) )) (compound_statement "{\n      __n = sqlite3_column_bytes(pCheck_00->pGetNode,0);\n      __src = sqlite3_column_blob(pCheck_00->pGetNode,0);\n      local_3c = (undefined1 *)sqlite3_malloc64((longlong)(int)__n);\n      if (local_3c == (undefined1 *)0x0) {\n        pCheck_00->rc = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }\n    }" { (expression_statement "__n = sqlite3_column_bytes(pCheck_00->pGetNode,0);" (assignment_expression "__n = sqlite3_column_bytes(pCheck_00->pGetNode,0)" identifier = (call_expression "sqlite3_column_bytes(pCheck_00->pGetNode,0)" identifier (argument_list "(pCheck_00->pGetNode,0)" ( (field_expression "pCheck_00->pGetNode" identifier -> field_identifier) , number_literal )))) ;) (expression_statement "__src = sqlite3_column_blob(pCheck_00->pGetNode,0);" (assignment_expression "__src = sqlite3_column_blob(pCheck_00->pGetNode,0)" identifier = (call_expression "sqlite3_column_blob(pCheck_00->pGetNode,0)" identifier (argument_list "(pCheck_00->pGetNode,0)" ( (field_expression "pCheck_00->pGetNode" identifier -> field_identifier) , number_literal )))) ;) (expression_statement "local_3c = (undefined1 *)sqlite3_malloc64((longlong)(int)__n);" (assignment_expression "local_3c = (undefined1 *)sqlite3_malloc64((longlong)(int)__n)" identifier = (cast_expression "(undefined1 *)sqlite3_malloc64((longlong)(int)__n)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3_malloc64((longlong)(int)__n)" identifier (argument_list "((longlong)(int)__n)" ( (cast_expression "(longlong)(int)__n" ( (type_descriptor "longlong" type_identifier) ) (cast_expression "(int)__n" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (if_statement "if (local_3c == (undefined1 *)0x0) {\n        pCheck_00->rc = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }" if (parenthesized_expression "(local_3c == (undefined1 *)0x0)" ( (binary_expression "local_3c == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pCheck_00->rc = 7;\n        __n = 0;\n      }" { (expression_statement "pCheck_00->rc = 7;" (assignment_expression "pCheck_00->rc = 7" (field_expression "pCheck_00->rc" identifier -> field_identifier) = number_literal) ;) (expression_statement "__n = 0;" (assignment_expression "__n = 0" identifier = number_literal) ;) }) (else_clause "else {\n        memcpy(local_3c,__src,__n);\n      }" else (compound_statement "{\n        memcpy(local_3c,__src,__n);\n      }" { (expression_statement "memcpy(local_3c,__src,__n);" (call_expression "memcpy(local_3c,__src,__n)" identifier (argument_list "(local_3c,__src,__n)" ( identifier , identifier , identifier ))) ;) }))) })) (expression_statement "iVar5 = sqlite3_reset(pCheck_00->pGetNode);" (assignment_expression "iVar5 = sqlite3_reset(pCheck_00->pGetNode)" identifier = (call_expression "sqlite3_reset(pCheck_00->pGetNode)" identifier (argument_list "(pCheck_00->pGetNode)" ( (field_expression "pCheck_00->pGetNode" identifier -> field_identifier) )))) ;) (if_statement "if ((pCheck_00->rc == 0) && (pCheck_00->rc = iVar5, iVar5 == 0)) {\n      if (local_3c == (undefined1 *)0x0) {\n        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x327ed),pCheck,iDepth);\n        return;\n      }\n    }\n    else if (local_3c == (undefined1 *)0x0) {\n      return;\n    }" if (parenthesized_expression "((pCheck_00->rc == 0) && (pCheck_00->rc = iVar5, iVar5 == 0))" ( (binary_expression "(pCheck_00->rc == 0) && (pCheck_00->rc = iVar5, iVar5 == 0)" (parenthesized_expression "(pCheck_00->rc == 0)" ( (binary_expression "pCheck_00->rc == 0" (field_expression "pCheck_00->rc" identifier -> field_identifier) == number_literal) )) && (parenthesized_expression "(pCheck_00->rc = iVar5, iVar5 == 0)" ( (comma_expression "pCheck_00->rc = iVar5, iVar5 == 0" (assignment_expression "pCheck_00->rc = iVar5" (field_expression "pCheck_00->rc" identifier -> field_identifier) = identifier) , (binary_expression "iVar5 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      if (local_3c == (undefined1 *)0x0) {\n        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x327ed),pCheck,iDepth);\n        return;\n      }\n    }" { (if_statement "if (local_3c == (undefined1 *)0x0) {\n        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x327ed),pCheck,iDepth);\n        return;\n      }" if (parenthesized_expression "(local_3c == (undefined1 *)0x0)" ( (binary_expression "local_3c == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x327ed),pCheck,iDepth);\n        return;\n      }" { (expression_statement "rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x327ed),pCheck,iDepth);" (call_expression "rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x327ed),pCheck,iDepth)" identifier (argument_list "(pCheck_00,(char *)(unaff_EDI + 0x327ed),pCheck,iDepth)" ( identifier , (cast_expression "(char *)(unaff_EDI + 0x327ed)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x327ed)" ( (binary_expression "unaff_EDI + 0x327ed" identifier + number_literal) ))) , identifier , identifier ))) ;) (return_statement "return;" return ;) })) }) (else_clause "else if (local_3c == (undefined1 *)0x0) {\n      return;\n    }" else (if_statement "if (local_3c == (undefined1 *)0x0) {\n      return;\n    }" if (parenthesized_expression "(local_3c == (undefined1 *)0x0)" ( (binary_expression "local_3c == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })))) (if_statement "if ((int)__n < 4) {\n      rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x3280d),pCheck,iDepth,__n);\n    }\n    else {\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x23c8c),local_38);\n        sqlite3_free(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar6 = pCheck_00->nDim;\n      iVar5 = iVar6 + 1;\n      if (iVar1 * iVar5 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar5 * local_4c * 8 + 4);\n            uVar8 = *puVar2;\n            uVar3 = puVar2[1];\n            pCheck_01 = (RtreeCheck *)\n                        (uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                        uVar3 << 0x18);\n            uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n            iVar5 = 0;\n            if (0 < iVar6) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar5 * 2 + 2];\n                uVar4 = puVar2[iVar5 * 2 + 3];\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar11 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if (fVar11 < fVar10) {\nLAB_000d69ff:\n                    rtreeCheckAppendMsg(pCheck_00,&UNK_00032869 + unaff_EDI,iVar5,local_4c,pCheck,\n                                        iDepth);\n                  }\n                }\n                else if ((int)fVar11 < (int)fVar10) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar5 = iVar5 + 1;\n                  if (pCheck_00->nDim <= iVar5) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar5 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar5 * 8);\n                fVar9 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                               uVar3 << 0x18);\n                fVar7 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if ((fVar10 < fVar9) || (fVar7 < fVar11)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar7 < (int)fVar11) || ((int)fVar10 < (int)fVar9)) {\nLAB_000d6998:\n                  rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32899),iVar5,local_4c,pCheck,\n                                      iDepth);\n                  goto LAB_000d69bd;\n                }\n                iVar5 = iVar5 + 1;\n              } while (iVar5 < pCheck_00->nDim);\n            }\n            if (local_38 == 0) {\n              rtreeCheckMapping(pCheck_00,1,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              pCheck_00->nLeaf = pCheck_00->nLeaf + 1;\n            }\n            else {\n              aParent_00 = pCheck;\n              iVar5 = iDepth;\n              rtreeCheckMapping(pCheck_00,0,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              rtreeCheckNode(pCheck_01,uVar8,(u8 *)aParent_00,CONCAT44(in_stack_ffffffa4,iVar5));\n              pCheck_00->nNonLeaf = pCheck_00->nNonLeaf + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar6 = pCheck_00->nDim;\n            iVar5 = iVar6 + 1;\n          } while( true );\n        }\n      }\n      else {\n        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32831),pCheck,iDepth,iVar1,__n);\n      }\n    }" if (parenthesized_expression "((int)__n < 4)" ( (binary_expression "(int)__n < 4" (cast_expression "(int)__n" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x3280d),pCheck,iDepth,__n);\n    }" { (expression_statement "rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x3280d),pCheck,iDepth,__n);" (call_expression "rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x3280d),pCheck,iDepth,__n)" identifier (argument_list "(pCheck_00,(char *)(unaff_EDI + 0x3280d),pCheck,iDepth,__n)" ( identifier , (cast_expression "(char *)(unaff_EDI + 0x3280d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x3280d)" ( (binary_expression "unaff_EDI + 0x3280d" identifier + number_literal) ))) , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x23c8c),local_38);\n        sqlite3_free(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar6 = pCheck_00->nDim;\n      iVar5 = iVar6 + 1;\n      if (iVar1 * iVar5 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar5 * local_4c * 8 + 4);\n            uVar8 = *puVar2;\n            uVar3 = puVar2[1];\n            pCheck_01 = (RtreeCheck *)\n                        (uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                        uVar3 << 0x18);\n            uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n            iVar5 = 0;\n            if (0 < iVar6) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar5 * 2 + 2];\n                uVar4 = puVar2[iVar5 * 2 + 3];\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar11 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if (fVar11 < fVar10) {\nLAB_000d69ff:\n                    rtreeCheckAppendMsg(pCheck_00,&UNK_00032869 + unaff_EDI,iVar5,local_4c,pCheck,\n                                        iDepth);\n                  }\n                }\n                else if ((int)fVar11 < (int)fVar10) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar5 = iVar5 + 1;\n                  if (pCheck_00->nDim <= iVar5) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar5 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar5 * 8);\n                fVar9 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                               uVar3 << 0x18);\n                fVar7 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if ((fVar10 < fVar9) || (fVar7 < fVar11)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar7 < (int)fVar11) || ((int)fVar10 < (int)fVar9)) {\nLAB_000d6998:\n                  rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32899),iVar5,local_4c,pCheck,\n                                      iDepth);\n                  goto LAB_000d69bd;\n                }\n                iVar5 = iVar5 + 1;\n              } while (iVar5 < pCheck_00->nDim);\n            }\n            if (local_38 == 0) {\n              rtreeCheckMapping(pCheck_00,1,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              pCheck_00->nLeaf = pCheck_00->nLeaf + 1;\n            }\n            else {\n              aParent_00 = pCheck;\n              iVar5 = iDepth;\n              rtreeCheckMapping(pCheck_00,0,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              rtreeCheckNode(pCheck_01,uVar8,(u8 *)aParent_00,CONCAT44(in_stack_ffffffa4,iVar5));\n              pCheck_00->nNonLeaf = pCheck_00->nNonLeaf + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar6 = pCheck_00->nDim;\n            iVar5 = iVar6 + 1;\n          } while( true );\n        }\n      }\n      else {\n        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32831),pCheck,iDepth,iVar1,__n);\n      }\n    }" else (compound_statement "{\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x23c8c),local_38);\n        sqlite3_free(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar6 = pCheck_00->nDim;\n      iVar5 = iVar6 + 1;\n      if (iVar1 * iVar5 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar5 * local_4c * 8 + 4);\n            uVar8 = *puVar2;\n            uVar3 = puVar2[1];\n            pCheck_01 = (RtreeCheck *)\n                        (uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                        uVar3 << 0x18);\n            uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n            iVar5 = 0;\n            if (0 < iVar6) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar5 * 2 + 2];\n                uVar4 = puVar2[iVar5 * 2 + 3];\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar11 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if (fVar11 < fVar10) {\nLAB_000d69ff:\n                    rtreeCheckAppendMsg(pCheck_00,&UNK_00032869 + unaff_EDI,iVar5,local_4c,pCheck,\n                                        iDepth);\n                  }\n                }\n                else if ((int)fVar11 < (int)fVar10) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar5 = iVar5 + 1;\n                  if (pCheck_00->nDim <= iVar5) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar5 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar5 * 8);\n                fVar9 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                               uVar3 << 0x18);\n                fVar7 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if ((fVar10 < fVar9) || (fVar7 < fVar11)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar7 < (int)fVar11) || ((int)fVar10 < (int)fVar9)) {\nLAB_000d6998:\n                  rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32899),iVar5,local_4c,pCheck,\n                                      iDepth);\n                  goto LAB_000d69bd;\n                }\n                iVar5 = iVar5 + 1;\n              } while (iVar5 < pCheck_00->nDim);\n            }\n            if (local_38 == 0) {\n              rtreeCheckMapping(pCheck_00,1,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              pCheck_00->nLeaf = pCheck_00->nLeaf + 1;\n            }\n            else {\n              aParent_00 = pCheck;\n              iVar5 = iDepth;\n              rtreeCheckMapping(pCheck_00,0,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              rtreeCheckNode(pCheck_01,uVar8,(u8 *)aParent_00,CONCAT44(in_stack_ffffffa4,iVar5));\n              pCheck_00->nNonLeaf = pCheck_00->nNonLeaf + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar6 = pCheck_00->nDim;\n            iVar5 = iVar6 + 1;\n          } while( true );\n        }\n      }\n      else {\n        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32831),pCheck,iDepth,iVar1,__n);\n      }\n    }" { (if_statement "if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x23c8c),local_38);\n        sqlite3_free(local_3c);\n        return;\n      }" if (parenthesized_expression "((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))" ( (binary_expression "(extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1]))" (parenthesized_expression "(extraout_ECX == 0)" ( (binary_expression "extraout_ECX == 0" identifier == number_literal) )) && (parenthesized_expression "(local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1]))" ( (comma_expression "local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])" (assignment_expression "local_38 = (uint)CONCAT11(*local_3c,local_3c[1])" identifier = (cast_expression "(uint)CONCAT11(*local_3c,local_3c[1])" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11(*local_3c,local_3c[1])" identifier (argument_list "(*local_3c,local_3c[1])" ( (pointer_expression "*local_3c" * identifier) , (subscript_expression "local_3c[1]" identifier [ number_literal ]) ))))) , (binary_expression "0x28 < CONCAT11(*local_3c,local_3c[1])" number_literal < (call_expression "CONCAT11(*local_3c,local_3c[1])" identifier (argument_list "(*local_3c,local_3c[1])" ( (pointer_expression "*local_3c" * identifier) , (subscript_expression "local_3c[1]" identifier [ number_literal ]) ))))) ))) )) (compound_statement "{\n        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x23c8c),local_38);\n        sqlite3_free(local_3c);\n        return;\n      }" { (expression_statement "rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x23c8c),local_38);" (call_expression "rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x23c8c),local_38)" identifier (argument_list "(pCheck_00,(char *)(unaff_EDI + 0x23c8c),local_38)" ( identifier , (cast_expression "(char *)(unaff_EDI + 0x23c8c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x23c8c)" ( (binary_expression "unaff_EDI + 0x23c8c" identifier + number_literal) ))) , identifier ))) ;) (expression_statement "sqlite3_free(local_3c);" (call_expression "sqlite3_free(local_3c)" identifier (argument_list "(local_3c)" ( identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];" (assignment_expression "iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3]" identifier = (binary_expression "(uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3]" (binary_expression "(uint)(byte)local_3c[2] * 0x100" (cast_expression "(uint)(byte)local_3c[2]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)local_3c[2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "local_3c[2]" identifier [ number_literal ]))) * number_literal) + (cast_expression "(uint)(byte)local_3c[3]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)local_3c[3]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "local_3c[3]" identifier [ number_literal ]))))) ;) (expression_statement "iVar6 = pCheck_00->nDim;" (assignment_expression "iVar6 = pCheck_00->nDim" identifier = (field_expression "pCheck_00->nDim" identifier -> field_identifier)) ;) (expression_statement "iVar5 = iVar6 + 1;" (assignment_expression "iVar5 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (if_statement "if (iVar1 * iVar5 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar5 * local_4c * 8 + 4);\n            uVar8 = *puVar2;\n            uVar3 = puVar2[1];\n            pCheck_01 = (RtreeCheck *)\n                        (uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                        uVar3 << 0x18);\n            uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n            iVar5 = 0;\n            if (0 < iVar6) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar5 * 2 + 2];\n                uVar4 = puVar2[iVar5 * 2 + 3];\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar11 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if (fVar11 < fVar10) {\nLAB_000d69ff:\n                    rtreeCheckAppendMsg(pCheck_00,&UNK_00032869 + unaff_EDI,iVar5,local_4c,pCheck,\n                                        iDepth);\n                  }\n                }\n                else if ((int)fVar11 < (int)fVar10) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar5 = iVar5 + 1;\n                  if (pCheck_00->nDim <= iVar5) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar5 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar5 * 8);\n                fVar9 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                               uVar3 << 0x18);\n                fVar7 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if ((fVar10 < fVar9) || (fVar7 < fVar11)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar7 < (int)fVar11) || ((int)fVar10 < (int)fVar9)) {\nLAB_000d6998:\n                  rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32899),iVar5,local_4c,pCheck,\n                                      iDepth);\n                  goto LAB_000d69bd;\n                }\n                iVar5 = iVar5 + 1;\n              } while (iVar5 < pCheck_00->nDim);\n            }\n            if (local_38 == 0) {\n              rtreeCheckMapping(pCheck_00,1,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              pCheck_00->nLeaf = pCheck_00->nLeaf + 1;\n            }\n            else {\n              aParent_00 = pCheck;\n              iVar5 = iDepth;\n              rtreeCheckMapping(pCheck_00,0,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              rtreeCheckNode(pCheck_01,uVar8,(u8 *)aParent_00,CONCAT44(in_stack_ffffffa4,iVar5));\n              pCheck_00->nNonLeaf = pCheck_00->nNonLeaf + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar6 = pCheck_00->nDim;\n            iVar5 = iVar6 + 1;\n          } while( true );\n        }\n      }\n      else {\n        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32831),pCheck,iDepth,iVar1,__n);\n      }" if (parenthesized_expression "(iVar1 * iVar5 * 8 + 3 < (int)__n)" ( (binary_expression "iVar1 * iVar5 * 8 + 3 < (int)__n" (binary_expression "iVar1 * iVar5 * 8 + 3" (binary_expression "iVar1 * iVar5 * 8" (binary_expression "iVar1 * iVar5" identifier * identifier) * number_literal) + number_literal) < (cast_expression "(int)__n" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar5 * local_4c * 8 + 4);\n            uVar8 = *puVar2;\n            uVar3 = puVar2[1];\n            pCheck_01 = (RtreeCheck *)\n                        (uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                        uVar3 << 0x18);\n            uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n            iVar5 = 0;\n            if (0 < iVar6) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar5 * 2 + 2];\n                uVar4 = puVar2[iVar5 * 2 + 3];\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar11 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if (fVar11 < fVar10) {\nLAB_000d69ff:\n                    rtreeCheckAppendMsg(pCheck_00,&UNK_00032869 + unaff_EDI,iVar5,local_4c,pCheck,\n                                        iDepth);\n                  }\n                }\n                else if ((int)fVar11 < (int)fVar10) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar5 = iVar5 + 1;\n                  if (pCheck_00->nDim <= iVar5) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar5 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar5 * 8);\n                fVar9 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                               uVar3 << 0x18);\n                fVar7 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if ((fVar10 < fVar9) || (fVar7 < fVar11)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar7 < (int)fVar11) || ((int)fVar10 < (int)fVar9)) {\nLAB_000d6998:\n                  rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32899),iVar5,local_4c,pCheck,\n                                      iDepth);\n                  goto LAB_000d69bd;\n                }\n                iVar5 = iVar5 + 1;\n              } while (iVar5 < pCheck_00->nDim);\n            }\n            if (local_38 == 0) {\n              rtreeCheckMapping(pCheck_00,1,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              pCheck_00->nLeaf = pCheck_00->nLeaf + 1;\n            }\n            else {\n              aParent_00 = pCheck;\n              iVar5 = iDepth;\n              rtreeCheckMapping(pCheck_00,0,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              rtreeCheckNode(pCheck_01,uVar8,(u8 *)aParent_00,CONCAT44(in_stack_ffffffa4,iVar5));\n              pCheck_00->nNonLeaf = pCheck_00->nNonLeaf + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar6 = pCheck_00->nDim;\n            iVar5 = iVar6 + 1;\n          } while( true );\n        }\n      }" { (if_statement "if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar5 * local_4c * 8 + 4);\n            uVar8 = *puVar2;\n            uVar3 = puVar2[1];\n            pCheck_01 = (RtreeCheck *)\n                        (uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                        uVar3 << 0x18);\n            uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n            iVar5 = 0;\n            if (0 < iVar6) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar5 * 2 + 2];\n                uVar4 = puVar2[iVar5 * 2 + 3];\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar11 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if (fVar11 < fVar10) {\nLAB_000d69ff:\n                    rtreeCheckAppendMsg(pCheck_00,&UNK_00032869 + unaff_EDI,iVar5,local_4c,pCheck,\n                                        iDepth);\n                  }\n                }\n                else if ((int)fVar11 < (int)fVar10) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar5 = iVar5 + 1;\n                  if (pCheck_00->nDim <= iVar5) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar5 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar5 * 8);\n                fVar9 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                               uVar3 << 0x18);\n                fVar7 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if ((fVar10 < fVar9) || (fVar7 < fVar11)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar7 < (int)fVar11) || ((int)fVar10 < (int)fVar9)) {\nLAB_000d6998:\n                  rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32899),iVar5,local_4c,pCheck,\n                                      iDepth);\n                  goto LAB_000d69bd;\n                }\n                iVar5 = iVar5 + 1;\n              } while (iVar5 < pCheck_00->nDim);\n            }\n            if (local_38 == 0) {\n              rtreeCheckMapping(pCheck_00,1,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              pCheck_00->nLeaf = pCheck_00->nLeaf + 1;\n            }\n            else {\n              aParent_00 = pCheck;\n              iVar5 = iDepth;\n              rtreeCheckMapping(pCheck_00,0,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              rtreeCheckNode(pCheck_01,uVar8,(u8 *)aParent_00,CONCAT44(in_stack_ffffffa4,iVar5));\n              pCheck_00->nNonLeaf = pCheck_00->nNonLeaf + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar6 = pCheck_00->nDim;\n            iVar5 = iVar6 + 1;\n          } while( true );\n        }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar5 * local_4c * 8 + 4);\n            uVar8 = *puVar2;\n            uVar3 = puVar2[1];\n            pCheck_01 = (RtreeCheck *)\n                        (uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                        uVar3 << 0x18);\n            uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n            iVar5 = 0;\n            if (0 < iVar6) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar5 * 2 + 2];\n                uVar4 = puVar2[iVar5 * 2 + 3];\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar11 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if (fVar11 < fVar10) {\nLAB_000d69ff:\n                    rtreeCheckAppendMsg(pCheck_00,&UNK_00032869 + unaff_EDI,iVar5,local_4c,pCheck,\n                                        iDepth);\n                  }\n                }\n                else if ((int)fVar11 < (int)fVar10) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar5 = iVar5 + 1;\n                  if (pCheck_00->nDim <= iVar5) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar5 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar5 * 8);\n                fVar9 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                               uVar3 << 0x18);\n                fVar7 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if ((fVar10 < fVar9) || (fVar7 < fVar11)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar7 < (int)fVar11) || ((int)fVar10 < (int)fVar9)) {\nLAB_000d6998:\n                  rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32899),iVar5,local_4c,pCheck,\n                                      iDepth);\n                  goto LAB_000d69bd;\n                }\n                iVar5 = iVar5 + 1;\n              } while (iVar5 < pCheck_00->nDim);\n            }\n            if (local_38 == 0) {\n              rtreeCheckMapping(pCheck_00,1,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              pCheck_00->nLeaf = pCheck_00->nLeaf + 1;\n            }\n            else {\n              aParent_00 = pCheck;\n              iVar5 = iDepth;\n              rtreeCheckMapping(pCheck_00,0,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              rtreeCheckNode(pCheck_01,uVar8,(u8 *)aParent_00,CONCAT44(in_stack_ffffffa4,iVar5));\n              pCheck_00->nNonLeaf = pCheck_00->nNonLeaf + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar6 = pCheck_00->nDim;\n            iVar5 = iVar6 + 1;\n          } while( true );\n        }" { (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) (do_statement "do {\n            puVar2 = (uint *)(local_3c + iVar5 * local_4c * 8 + 4);\n            uVar8 = *puVar2;\n            uVar3 = puVar2[1];\n            pCheck_01 = (RtreeCheck *)\n                        (uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                        uVar3 << 0x18);\n            uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n            iVar5 = 0;\n            if (0 < iVar6) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar5 * 2 + 2];\n                uVar4 = puVar2[iVar5 * 2 + 3];\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar11 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if (fVar11 < fVar10) {\nLAB_000d69ff:\n                    rtreeCheckAppendMsg(pCheck_00,&UNK_00032869 + unaff_EDI,iVar5,local_4c,pCheck,\n                                        iDepth);\n                  }\n                }\n                else if ((int)fVar11 < (int)fVar10) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar5 = iVar5 + 1;\n                  if (pCheck_00->nDim <= iVar5) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar5 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar5 * 8);\n                fVar9 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                               uVar3 << 0x18);\n                fVar7 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if ((fVar10 < fVar9) || (fVar7 < fVar11)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar7 < (int)fVar11) || ((int)fVar10 < (int)fVar9)) {\nLAB_000d6998:\n                  rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32899),iVar5,local_4c,pCheck,\n                                      iDepth);\n                  goto LAB_000d69bd;\n                }\n                iVar5 = iVar5 + 1;\n              } while (iVar5 < pCheck_00->nDim);\n            }\n            if (local_38 == 0) {\n              rtreeCheckMapping(pCheck_00,1,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              pCheck_00->nLeaf = pCheck_00->nLeaf + 1;\n            }\n            else {\n              aParent_00 = pCheck;\n              iVar5 = iDepth;\n              rtreeCheckMapping(pCheck_00,0,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              rtreeCheckNode(pCheck_01,uVar8,(u8 *)aParent_00,CONCAT44(in_stack_ffffffa4,iVar5));\n              pCheck_00->nNonLeaf = pCheck_00->nNonLeaf + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar6 = pCheck_00->nDim;\n            iVar5 = iVar6 + 1;\n          } while( true );" do (compound_statement "{\n            puVar2 = (uint *)(local_3c + iVar5 * local_4c * 8 + 4);\n            uVar8 = *puVar2;\n            uVar3 = puVar2[1];\n            pCheck_01 = (RtreeCheck *)\n                        (uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                        uVar3 << 0x18);\n            uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n            iVar5 = 0;\n            if (0 < iVar6) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar5 * 2 + 2];\n                uVar4 = puVar2[iVar5 * 2 + 3];\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar11 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if (fVar11 < fVar10) {\nLAB_000d69ff:\n                    rtreeCheckAppendMsg(pCheck_00,&UNK_00032869 + unaff_EDI,iVar5,local_4c,pCheck,\n                                        iDepth);\n                  }\n                }\n                else if ((int)fVar11 < (int)fVar10) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar5 = iVar5 + 1;\n                  if (pCheck_00->nDim <= iVar5) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar5 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar5 * 8);\n                fVar9 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                               uVar3 << 0x18);\n                fVar7 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if ((fVar10 < fVar9) || (fVar7 < fVar11)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar7 < (int)fVar11) || ((int)fVar10 < (int)fVar9)) {\nLAB_000d6998:\n                  rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32899),iVar5,local_4c,pCheck,\n                                      iDepth);\n                  goto LAB_000d69bd;\n                }\n                iVar5 = iVar5 + 1;\n              } while (iVar5 < pCheck_00->nDim);\n            }\n            if (local_38 == 0) {\n              rtreeCheckMapping(pCheck_00,1,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              pCheck_00->nLeaf = pCheck_00->nLeaf + 1;\n            }\n            else {\n              aParent_00 = pCheck;\n              iVar5 = iDepth;\n              rtreeCheckMapping(pCheck_00,0,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              rtreeCheckNode(pCheck_01,uVar8,(u8 *)aParent_00,CONCAT44(in_stack_ffffffa4,iVar5));\n              pCheck_00->nNonLeaf = pCheck_00->nNonLeaf + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar6 = pCheck_00->nDim;\n            iVar5 = iVar6 + 1;\n          }" { (expression_statement "puVar2 = (uint *)(local_3c + iVar5 * local_4c * 8 + 4);" (assignment_expression "puVar2 = (uint *)(local_3c + iVar5 * local_4c * 8 + 4)" identifier = (cast_expression "(uint *)(local_3c + iVar5 * local_4c * 8 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_3c + iVar5 * local_4c * 8 + 4)" ( (binary_expression "local_3c + iVar5 * local_4c * 8 + 4" (binary_expression "local_3c + iVar5 * local_4c * 8" identifier + (binary_expression "iVar5 * local_4c * 8" (binary_expression "iVar5 * local_4c" identifier * identifier) * number_literal)) + number_literal) )))) ;) (expression_statement "uVar8 = *puVar2;" (assignment_expression "uVar8 = *puVar2" identifier = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "uVar3 = puVar2[1];" (assignment_expression "uVar3 = puVar2[1]" identifier = (subscript_expression "puVar2[1]" identifier [ number_literal ])) ;) (expression_statement "pCheck_01 = (RtreeCheck *)\n                        (uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                        uVar3 << 0x18);" (assignment_expression "pCheck_01 = (RtreeCheck *)\n                        (uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                        uVar3 << 0x18)" identifier = (cast_expression "(RtreeCheck *)\n                        (uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                        uVar3 << 0x18)" ( (type_descriptor "RtreeCheck *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                        uVar3 << 0x18)" ( (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                        uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x18" identifier << number_literal)) )))) ;) (expression_statement "uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;" (assignment_expression "uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" identifier = (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" ( (binary_expression "uVar8 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" ( (binary_expression "uVar8 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar8 << 0x18" identifier << number_literal))) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (if_statement "if (0 < iVar6) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar5 * 2 + 2];\n                uVar4 = puVar2[iVar5 * 2 + 3];\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar11 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if (fVar11 < fVar10) {\nLAB_000d69ff:\n                    rtreeCheckAppendMsg(pCheck_00,&UNK_00032869 + unaff_EDI,iVar5,local_4c,pCheck,\n                                        iDepth);\n                  }\n                }\n                else if ((int)fVar11 < (int)fVar10) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar5 = iVar5 + 1;\n                  if (pCheck_00->nDim <= iVar5) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar5 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar5 * 8);\n                fVar9 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                               uVar3 << 0x18);\n                fVar7 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if ((fVar10 < fVar9) || (fVar7 < fVar11)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar7 < (int)fVar11) || ((int)fVar10 < (int)fVar9)) {\nLAB_000d6998:\n                  rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32899),iVar5,local_4c,pCheck,\n                                      iDepth);\n                  goto LAB_000d69bd;\n                }\n                iVar5 = iVar5 + 1;\n              } while (iVar5 < pCheck_00->nDim);\n            }" if (parenthesized_expression "(0 < iVar6)" ( (binary_expression "0 < iVar6" number_literal < identifier) )) (compound_statement "{\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar5 * 2 + 2];\n                uVar4 = puVar2[iVar5 * 2 + 3];\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar11 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if (fVar11 < fVar10) {\nLAB_000d69ff:\n                    rtreeCheckAppendMsg(pCheck_00,&UNK_00032869 + unaff_EDI,iVar5,local_4c,pCheck,\n                                        iDepth);\n                  }\n                }\n                else if ((int)fVar11 < (int)fVar10) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar5 = iVar5 + 1;\n                  if (pCheck_00->nDim <= iVar5) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar5 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar5 * 8);\n                fVar9 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                               uVar3 << 0x18);\n                fVar7 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if ((fVar10 < fVar9) || (fVar7 < fVar11)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar7 < (int)fVar11) || ((int)fVar10 < (int)fVar9)) {\nLAB_000d6998:\n                  rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32899),iVar5,local_4c,pCheck,\n                                      iDepth);\n                  goto LAB_000d69bd;\n                }\n                iVar5 = iVar5 + 1;\n              } while (iVar5 < pCheck_00->nDim);\n            }" { (labeled_statement "LAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar5 * 2 + 2];\n                uVar4 = puVar2[iVar5 * 2 + 3];\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar11 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if (fVar11 < fVar10) {\nLAB_000d69ff:\n                    rtreeCheckAppendMsg(pCheck_00,&UNK_00032869 + unaff_EDI,iVar5,local_4c,pCheck,\n                                        iDepth);\n                  }\n                }\n                else if ((int)fVar11 < (int)fVar10) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar5 = iVar5 + 1;\n                  if (pCheck_00->nDim <= iVar5) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar5 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar5 * 8);\n                fVar9 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                               uVar3 << 0x18);\n                fVar7 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if ((fVar10 < fVar9) || (fVar7 < fVar11)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar7 < (int)fVar11) || ((int)fVar10 < (int)fVar9)) {\nLAB_000d6998:\n                  rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32899),iVar5,local_4c,pCheck,\n                                      iDepth);\n                  goto LAB_000d69bd;\n                }\n                iVar5 = iVar5 + 1;\n              } while (iVar5 < pCheck_00->nDim);" statement_identifier : (do_statement "do {\n                uVar3 = puVar2[iVar5 * 2 + 2];\n                uVar4 = puVar2[iVar5 * 2 + 3];\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar11 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if (fVar11 < fVar10) {\nLAB_000d69ff:\n                    rtreeCheckAppendMsg(pCheck_00,&UNK_00032869 + unaff_EDI,iVar5,local_4c,pCheck,\n                                        iDepth);\n                  }\n                }\n                else if ((int)fVar11 < (int)fVar10) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar5 = iVar5 + 1;\n                  if (pCheck_00->nDim <= iVar5) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar5 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar5 * 8);\n                fVar9 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                               uVar3 << 0x18);\n                fVar7 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if ((fVar10 < fVar9) || (fVar7 < fVar11)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar7 < (int)fVar11) || ((int)fVar10 < (int)fVar9)) {\nLAB_000d6998:\n                  rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32899),iVar5,local_4c,pCheck,\n                                      iDepth);\n                  goto LAB_000d69bd;\n                }\n                iVar5 = iVar5 + 1;\n              } while (iVar5 < pCheck_00->nDim);" do (compound_statement "{\n                uVar3 = puVar2[iVar5 * 2 + 2];\n                uVar4 = puVar2[iVar5 * 2 + 3];\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar11 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if (fVar11 < fVar10) {\nLAB_000d69ff:\n                    rtreeCheckAppendMsg(pCheck_00,&UNK_00032869 + unaff_EDI,iVar5,local_4c,pCheck,\n                                        iDepth);\n                  }\n                }\n                else if ((int)fVar11 < (int)fVar10) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar5 = iVar5 + 1;\n                  if (pCheck_00->nDim <= iVar5) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar5 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar5 * 8);\n                fVar9 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                               uVar3 << 0x18);\n                fVar7 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (pCheck_00->bInt == 0) {\n                  if ((fVar10 < fVar9) || (fVar7 < fVar11)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar7 < (int)fVar11) || ((int)fVar10 < (int)fVar9)) {\nLAB_000d6998:\n                  rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32899),iVar5,local_4c,pCheck,\n                                      iDepth);\n                  goto LAB_000d69bd;\n                }\n                iVar5 = iVar5 + 1;\n              }" { (expression_statement "uVar3 = puVar2[iVar5 * 2 + 2];" (assignment_expression "uVar3 = puVar2[iVar5 * 2 + 2]" identifier = (subscript_expression "puVar2[iVar5 * 2 + 2]" identifier [ (binary_expression "iVar5 * 2 + 2" (binary_expression "iVar5 * 2" identifier * number_literal) + number_literal) ])) ;) (expression_statement "uVar4 = puVar2[iVar5 * 2 + 3];" (assignment_expression "uVar4 = puVar2[iVar5 * 2 + 3]" identifier = (subscript_expression "puVar2[iVar5 * 2 + 3]" identifier [ (binary_expression "iVar5 * 2 + 3" (binary_expression "iVar5 * 2" identifier * number_literal) + number_literal) ])) ;) (expression_statement "fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);" (assignment_expression "fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18)" identifier = (cast_expression "(float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18)" ( (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x18" identifier << number_literal)) )))) ;) (expression_statement "fVar11 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);" (assignment_expression "fVar11 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18)" identifier = (cast_expression "(float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18)" ( (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" ( (binary_expression "uVar4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" ( (binary_expression "uVar4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar4 << 0x18" identifier << number_literal)) )))) ;) (if_statement "if (pCheck_00->bInt == 0) {\n                  if (fVar11 < fVar10) {\nLAB_000d69ff:\n                    rtreeCheckAppendMsg(pCheck_00,&UNK_00032869 + unaff_EDI,iVar5,local_4c,pCheck,\n                                        iDepth);\n                  }\n                }\n                else if ((int)fVar11 < (int)fVar10) goto LAB_000d69ff;" if (parenthesized_expression "(pCheck_00->bInt == 0)" ( (binary_expression "pCheck_00->bInt == 0" (field_expression "pCheck_00->bInt" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n                  if (fVar11 < fVar10) {\nLAB_000d69ff:\n                    rtreeCheckAppendMsg(pCheck_00,&UNK_00032869 + unaff_EDI,iVar5,local_4c,pCheck,\n                                        iDepth);\n                  }\n                }" { (if_statement "if (fVar11 < fVar10) {\nLAB_000d69ff:\n                    rtreeCheckAppendMsg(pCheck_00,&UNK_00032869 + unaff_EDI,iVar5,local_4c,pCheck,\n                                        iDepth);\n                  }" if (parenthesized_expression "(fVar11 < fVar10)" ( (binary_expression "fVar11 < fVar10" identifier < identifier) )) (compound_statement "{\nLAB_000d69ff:\n                    rtreeCheckAppendMsg(pCheck_00,&UNK_00032869 + unaff_EDI,iVar5,local_4c,pCheck,\n                                        iDepth);\n                  }" { (labeled_statement "LAB_000d69ff:\n                    rtreeCheckAppendMsg(pCheck_00,&UNK_00032869 + unaff_EDI,iVar5,local_4c,pCheck,\n                                        iDepth);" statement_identifier : (expression_statement "rtreeCheckAppendMsg(pCheck_00,&UNK_00032869 + unaff_EDI,iVar5,local_4c,pCheck,\n                                        iDepth);" (call_expression "rtreeCheckAppendMsg(pCheck_00,&UNK_00032869 + unaff_EDI,iVar5,local_4c,pCheck,\n                                        iDepth)" identifier (argument_list "(pCheck_00,&UNK_00032869 + unaff_EDI,iVar5,local_4c,pCheck,\n                                        iDepth)" ( identifier , (binary_expression "&UNK_00032869 + unaff_EDI" (pointer_expression "&UNK_00032869" & identifier) + identifier) , identifier , identifier , identifier , identifier ))) ;)) })) }) (else_clause "else if ((int)fVar11 < (int)fVar10) goto LAB_000d69ff;" else (if_statement "if ((int)fVar11 < (int)fVar10) goto LAB_000d69ff;" if (parenthesized_expression "((int)fVar11 < (int)fVar10)" ( (binary_expression "(int)fVar11 < (int)fVar10" (cast_expression "(int)fVar11" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)fVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_000d69ff;" goto statement_identifier ;)))) (if_statement "if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar5 = iVar5 + 1;\n                  if (pCheck_00->nDim <= iVar5) break;\n                  goto LAB_000d69c9;\n                }" if (parenthesized_expression "(extraout_ECX == 0)" ( (binary_expression "extraout_ECX == 0" identifier == number_literal) )) (compound_statement "{\nLAB_000d69bd:\n                  iVar5 = iVar5 + 1;\n                  if (pCheck_00->nDim <= iVar5) break;\n                  goto LAB_000d69c9;\n                }" { (labeled_statement "LAB_000d69bd:\n                  iVar5 = iVar5 + 1;" statement_identifier : (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;)) (if_statement "if (pCheck_00->nDim <= iVar5) break;" if (parenthesized_expression "(pCheck_00->nDim <= iVar5)" ( (binary_expression "pCheck_00->nDim <= iVar5" (field_expression "pCheck_00->nDim" identifier -> field_identifier) <= identifier) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_000d69c9;" goto statement_identifier ;) })) (expression_statement "uVar3 = *(uint *)(extraout_ECX + iVar5 * 8);" (assignment_expression "uVar3 = *(uint *)(extraout_ECX + iVar5 * 8)" identifier = (pointer_expression "*(uint *)(extraout_ECX + iVar5 * 8)" * (cast_expression "(uint *)(extraout_ECX + iVar5 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_ECX + iVar5 * 8)" ( (binary_expression "extraout_ECX + iVar5 * 8" identifier + (binary_expression "iVar5 * 8" identifier * number_literal)) ))))) ;) (expression_statement "uVar4 = *(uint *)(extraout_ECX + 4 + iVar5 * 8);" (assignment_expression "uVar4 = *(uint *)(extraout_ECX + 4 + iVar5 * 8)" identifier = (pointer_expression "*(uint *)(extraout_ECX + 4 + iVar5 * 8)" * (cast_expression "(uint *)(extraout_ECX + 4 + iVar5 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_ECX + 4 + iVar5 * 8)" ( (binary_expression "extraout_ECX + 4 + iVar5 * 8" (binary_expression "extraout_ECX + 4" identifier + number_literal) + (binary_expression "iVar5 * 8" identifier * number_literal)) ))))) ;) (expression_statement "fVar9 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                               uVar3 << 0x18);" (assignment_expression "fVar9 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                               uVar3 << 0x18)" identifier = (cast_expression "(float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                               uVar3 << 0x18)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                               uVar3 << 0x18)" ( (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                               uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x18" identifier << number_literal)) )))) ;) (expression_statement "fVar7 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);" (assignment_expression "fVar7 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18)" identifier = (cast_expression "(float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18)" ( (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" ( (binary_expression "uVar4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" ( (binary_expression "uVar4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar4 << 0x18" identifier << number_literal)) )))) ;) (if_statement "if (pCheck_00->bInt == 0) {\n                  if ((fVar10 < fVar9) || (fVar7 < fVar11)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }" if (parenthesized_expression "(pCheck_00->bInt == 0)" ( (binary_expression "pCheck_00->bInt == 0" (field_expression "pCheck_00->bInt" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n                  if ((fVar10 < fVar9) || (fVar7 < fVar11)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }" { (if_statement "if ((fVar10 < fVar9) || (fVar7 < fVar11)) goto LAB_000d6998;" if (parenthesized_expression "((fVar10 < fVar9) || (fVar7 < fVar11))" ( (binary_expression "(fVar10 < fVar9) || (fVar7 < fVar11)" (parenthesized_expression "(fVar10 < fVar9)" ( (binary_expression "fVar10 < fVar9" identifier < identifier) )) || (parenthesized_expression "(fVar7 < fVar11)" ( (binary_expression "fVar7 < fVar11" identifier < identifier) ))) )) (goto_statement "goto LAB_000d6998;" goto statement_identifier ;)) (goto_statement "goto LAB_000d69bd;" goto statement_identifier ;) })) (if_statement "if (((int)fVar7 < (int)fVar11) || ((int)fVar10 < (int)fVar9)) {\nLAB_000d6998:\n                  rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32899),iVar5,local_4c,pCheck,\n                                      iDepth);\n                  goto LAB_000d69bd;\n                }" if (parenthesized_expression "(((int)fVar7 < (int)fVar11) || ((int)fVar10 < (int)fVar9))" ( (binary_expression "((int)fVar7 < (int)fVar11) || ((int)fVar10 < (int)fVar9)" (parenthesized_expression "((int)fVar7 < (int)fVar11)" ( (binary_expression "(int)fVar7 < (int)fVar11" (cast_expression "(int)fVar7" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)fVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) || (parenthesized_expression "((int)fVar10 < (int)fVar9)" ( (binary_expression "(int)fVar10 < (int)fVar9" (cast_expression "(int)fVar10" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)fVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\nLAB_000d6998:\n                  rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32899),iVar5,local_4c,pCheck,\n                                      iDepth);\n                  goto LAB_000d69bd;\n                }" { (labeled_statement "LAB_000d6998:\n                  rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32899),iVar5,local_4c,pCheck,\n                                      iDepth);" statement_identifier : (expression_statement "rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32899),iVar5,local_4c,pCheck,\n                                      iDepth);" (call_expression "rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32899),iVar5,local_4c,pCheck,\n                                      iDepth)" identifier (argument_list "(pCheck_00,(char *)(unaff_EDI + 0x32899),iVar5,local_4c,pCheck,\n                                      iDepth)" ( identifier , (cast_expression "(char *)(unaff_EDI + 0x32899)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x32899)" ( (binary_expression "unaff_EDI + 0x32899" identifier + number_literal) ))) , identifier , identifier , identifier , identifier ))) ;)) (goto_statement "goto LAB_000d69bd;" goto statement_identifier ;) })) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 < pCheck_00->nDim)" ( (binary_expression "iVar5 < pCheck_00->nDim" identifier < (field_expression "pCheck_00->nDim" identifier -> field_identifier)) )) ;)) })) (if_statement "if (local_38 == 0) {\n              rtreeCheckMapping(pCheck_00,1,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              pCheck_00->nLeaf = pCheck_00->nLeaf + 1;\n            }\n            else {\n              aParent_00 = pCheck;\n              iVar5 = iDepth;\n              rtreeCheckMapping(pCheck_00,0,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              rtreeCheckNode(pCheck_01,uVar8,(u8 *)aParent_00,CONCAT44(in_stack_ffffffa4,iVar5));\n              pCheck_00->nNonLeaf = pCheck_00->nNonLeaf + 1;\n            }" if (parenthesized_expression "(local_38 == 0)" ( (binary_expression "local_38 == 0" identifier == number_literal) )) (compound_statement "{\n              rtreeCheckMapping(pCheck_00,1,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              pCheck_00->nLeaf = pCheck_00->nLeaf + 1;\n            }" { (expression_statement "rtreeCheckMapping(pCheck_00,1,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));" (call_expression "rtreeCheckMapping(pCheck_00,1,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck))" identifier (argument_list "(pCheck_00,1,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck))" ( identifier , number_literal , (call_expression "CONCAT44(uVar8,pCheck_01)" identifier (argument_list "(uVar8,pCheck_01)" ( identifier , identifier ))) , (call_expression "CONCAT44(iDepth,pCheck)" identifier (argument_list "(iDepth,pCheck)" ( identifier , identifier ))) ))) ;) (expression_statement "pCheck_00->nLeaf = pCheck_00->nLeaf + 1;" (assignment_expression "pCheck_00->nLeaf = pCheck_00->nLeaf + 1" (field_expression "pCheck_00->nLeaf" identifier -> field_identifier) = (binary_expression "pCheck_00->nLeaf + 1" (field_expression "pCheck_00->nLeaf" identifier -> field_identifier) + number_literal)) ;) }) (else_clause "else {\n              aParent_00 = pCheck;\n              iVar5 = iDepth;\n              rtreeCheckMapping(pCheck_00,0,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              rtreeCheckNode(pCheck_01,uVar8,(u8 *)aParent_00,CONCAT44(in_stack_ffffffa4,iVar5));\n              pCheck_00->nNonLeaf = pCheck_00->nNonLeaf + 1;\n            }" else (compound_statement "{\n              aParent_00 = pCheck;\n              iVar5 = iDepth;\n              rtreeCheckMapping(pCheck_00,0,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));\n              rtreeCheckNode(pCheck_01,uVar8,(u8 *)aParent_00,CONCAT44(in_stack_ffffffa4,iVar5));\n              pCheck_00->nNonLeaf = pCheck_00->nNonLeaf + 1;\n            }" { (expression_statement "aParent_00 = pCheck;" (assignment_expression "aParent_00 = pCheck" identifier = identifier) ;) (expression_statement "iVar5 = iDepth;" (assignment_expression "iVar5 = iDepth" identifier = identifier) ;) (expression_statement "rtreeCheckMapping(pCheck_00,0,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck));" (call_expression "rtreeCheckMapping(pCheck_00,0,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck))" identifier (argument_list "(pCheck_00,0,CONCAT44(uVar8,pCheck_01),CONCAT44(iDepth,pCheck))" ( identifier , number_literal , (call_expression "CONCAT44(uVar8,pCheck_01)" identifier (argument_list "(uVar8,pCheck_01)" ( identifier , identifier ))) , (call_expression "CONCAT44(iDepth,pCheck)" identifier (argument_list "(iDepth,pCheck)" ( identifier , identifier ))) ))) ;) (expression_statement "rtreeCheckNode(pCheck_01,uVar8,(u8 *)aParent_00,CONCAT44(in_stack_ffffffa4,iVar5));" (call_expression "rtreeCheckNode(pCheck_01,uVar8,(u8 *)aParent_00,CONCAT44(in_stack_ffffffa4,iVar5))" identifier (argument_list "(pCheck_01,uVar8,(u8 *)aParent_00,CONCAT44(in_stack_ffffffa4,iVar5))" ( identifier , identifier , (cast_expression "(u8 *)aParent_00" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (call_expression "CONCAT44(in_stack_ffffffa4,iVar5)" identifier (argument_list "(in_stack_ffffffa4,iVar5)" ( identifier , identifier ))) ))) ;) (expression_statement "pCheck_00->nNonLeaf = pCheck_00->nNonLeaf + 1;" (assignment_expression "pCheck_00->nNonLeaf = pCheck_00->nNonLeaf + 1" (field_expression "pCheck_00->nNonLeaf" identifier -> field_identifier) = (binary_expression "pCheck_00->nNonLeaf + 1" (field_expression "pCheck_00->nNonLeaf" identifier -> field_identifier) + number_literal)) ;) }))) (expression_statement "local_4c = local_4c + 1;" (assignment_expression "local_4c = local_4c + 1" identifier = (binary_expression "local_4c + 1" identifier + number_literal)) ;) (if_statement "if (local_4c == iVar1) break;" if (parenthesized_expression "(local_4c == iVar1)" ( (binary_expression "local_4c == iVar1" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = pCheck_00->nDim;" (assignment_expression "iVar6 = pCheck_00->nDim" identifier = (field_expression "pCheck_00->nDim" identifier -> field_identifier)) ;) (expression_statement "iVar5 = iVar6 + 1;" (assignment_expression "iVar5 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) }) (else_clause "else {\n        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32831),pCheck,iDepth,iVar1,__n);\n      }" else (compound_statement "{\n        rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32831),pCheck,iDepth,iVar1,__n);\n      }" { (expression_statement "rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32831),pCheck,iDepth,iVar1,__n);" (call_expression "rtreeCheckAppendMsg(pCheck_00,(char *)(unaff_EDI + 0x32831),pCheck,iDepth,iVar1,__n)" identifier (argument_list "(pCheck_00,(char *)(unaff_EDI + 0x32831),pCheck,iDepth,iVar1,__n)" ( identifier , (cast_expression "(char *)(unaff_EDI + 0x32831)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x32831)" ( (binary_expression "unaff_EDI + 0x32831" identifier + number_literal) ))) , identifier , identifier , identifier , identifier ))) ;) }))) }))) (expression_statement "sqlite3_free(local_3c);" (call_expression "sqlite3_free(local_3c)" identifier (argument_list "(local_3c)" ( identifier ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_000d67f0(undefined4 param_1,undefined4 param_2)\n\n{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  float fVar8;\n  void *__src;\n  int extraout_ECX;\n  uint uVar9;\n  float fVar10;\n  uint uVar11;\n  float fVar12;\n  size_t __n;\n  float fVar13;\n  int unaff_EDI;\n  undefined8 uVar14;\n  int local_4c;\n  undefined1 *local_3c;\n  uint local_38;\n  \n  uVar14 = FUN_0001af1a();\n  local_38 = (uint)((ulonglong)uVar14 >> 0x20);\n  iVar5 = (int)uVar14;\n  if (*(int *)(iVar5 + 0x28) == 0) {\n    iVar6 = *(int *)(iVar5 + 0x14);\n    if (iVar6 == 0) {\n      iVar6 = FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8));\n      *(int *)(iVar5 + 0x14) = iVar6;\n      if (*(int *)(iVar5 + 0x28) != 0) {\n        return;\n      }\n    }\n    __n = 0;\n    FUN_00057c50(iVar6,1,param_1,param_2);\n    iVar6 = FUN_000ae4d0(*(undefined4 *)(iVar5 + 0x14));\n    local_3c = (undefined1 *)0x0;\n    if (iVar6 == 100) {\n      __n = FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0);\n      __src = (void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0);\n      local_3c = (undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f);\n      if (local_3c == (undefined1 *)0x0) {\n        *(undefined4 *)(iVar5 + 0x28) = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }\n    }\n    iVar6 = FUN_0008fe60(*(undefined4 *)(iVar5 + 0x14));\n    if ((*(int *)(iVar5 + 0x28) == 0) && (*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0)) {\n      if (local_3c == (undefined1 *)0x0) {\n        FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);\n        return;\n      }\n    }\n    else if (local_3c == (undefined1 *)0x0) {\n      return;\n    }\n    if ((int)__n < 4) {\n      FUN_000789a0(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n);\n    }\n    else {\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);\n        FUN_000264d0(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar7 = *(int *)(iVar5 + 0x10);\n      iVar6 = iVar7 + 1;\n      if (iVar1 * iVar6 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }\n      }\n      else {\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }\n    }\n    FUN_000264d0(local_3c);\n  }\n  return;\n}\n\n" (function_definition "void FUN_000d67f0(undefined4 param_1,undefined4 param_2)\n\n{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  float fVar8;\n  void *__src;\n  int extraout_ECX;\n  uint uVar9;\n  float fVar10;\n  uint uVar11;\n  float fVar12;\n  size_t __n;\n  float fVar13;\n  int unaff_EDI;\n  undefined8 uVar14;\n  int local_4c;\n  undefined1 *local_3c;\n  uint local_38;\n  \n  uVar14 = FUN_0001af1a();\n  local_38 = (uint)((ulonglong)uVar14 >> 0x20);\n  iVar5 = (int)uVar14;\n  if (*(int *)(iVar5 + 0x28) == 0) {\n    iVar6 = *(int *)(iVar5 + 0x14);\n    if (iVar6 == 0) {\n      iVar6 = FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8));\n      *(int *)(iVar5 + 0x14) = iVar6;\n      if (*(int *)(iVar5 + 0x28) != 0) {\n        return;\n      }\n    }\n    __n = 0;\n    FUN_00057c50(iVar6,1,param_1,param_2);\n    iVar6 = FUN_000ae4d0(*(undefined4 *)(iVar5 + 0x14));\n    local_3c = (undefined1 *)0x0;\n    if (iVar6 == 100) {\n      __n = FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0);\n      __src = (void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0);\n      local_3c = (undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f);\n      if (local_3c == (undefined1 *)0x0) {\n        *(undefined4 *)(iVar5 + 0x28) = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }\n    }\n    iVar6 = FUN_0008fe60(*(undefined4 *)(iVar5 + 0x14));\n    if ((*(int *)(iVar5 + 0x28) == 0) && (*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0)) {\n      if (local_3c == (undefined1 *)0x0) {\n        FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);\n        return;\n      }\n    }\n    else if (local_3c == (undefined1 *)0x0) {\n      return;\n    }\n    if ((int)__n < 4) {\n      FUN_000789a0(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n);\n    }\n    else {\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);\n        FUN_000264d0(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar7 = *(int *)(iVar5 + 0x10);\n      iVar6 = iVar7 + 1;\n      if (iVar1 * iVar6 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }\n      }\n      else {\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }\n    }\n    FUN_000264d0(local_3c);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_000d67f0(undefined4 param_1,undefined4 param_2)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  float fVar8;\n  void *__src;\n  int extraout_ECX;\n  uint uVar9;\n  float fVar10;\n  uint uVar11;\n  float fVar12;\n  size_t __n;\n  float fVar13;\n  int unaff_EDI;\n  undefined8 uVar14;\n  int local_4c;\n  undefined1 *local_3c;\n  uint local_38;\n  \n  uVar14 = FUN_0001af1a();\n  local_38 = (uint)((ulonglong)uVar14 >> 0x20);\n  iVar5 = (int)uVar14;\n  if (*(int *)(iVar5 + 0x28) == 0) {\n    iVar6 = *(int *)(iVar5 + 0x14);\n    if (iVar6 == 0) {\n      iVar6 = FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8));\n      *(int *)(iVar5 + 0x14) = iVar6;\n      if (*(int *)(iVar5 + 0x28) != 0) {\n        return;\n      }\n    }\n    __n = 0;\n    FUN_00057c50(iVar6,1,param_1,param_2);\n    iVar6 = FUN_000ae4d0(*(undefined4 *)(iVar5 + 0x14));\n    local_3c = (undefined1 *)0x0;\n    if (iVar6 == 100) {\n      __n = FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0);\n      __src = (void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0);\n      local_3c = (undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f);\n      if (local_3c == (undefined1 *)0x0) {\n        *(undefined4 *)(iVar5 + 0x28) = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }\n    }\n    iVar6 = FUN_0008fe60(*(undefined4 *)(iVar5 + 0x14));\n    if ((*(int *)(iVar5 + 0x28) == 0) && (*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0)) {\n      if (local_3c == (undefined1 *)0x0) {\n        FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);\n        return;\n      }\n    }\n    else if (local_3c == (undefined1 *)0x0) {\n      return;\n    }\n    if ((int)__n < 4) {\n      FUN_000789a0(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n);\n    }\n    else {\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);\n        FUN_000264d0(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar7 = *(int *)(iVar5 + 0x10);\n      iVar6 = iVar7 + 1;\n      if (iVar1 * iVar6 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }\n      }\n      else {\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }\n    }\n    FUN_000264d0(local_3c);\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "float fVar8;" primitive_type identifier ;) (declaration "void *__src;" primitive_type (pointer_declarator "*__src" * identifier) ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "float fVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "float fVar12;" primitive_type identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "float fVar13;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined8 uVar14;" type_identifier identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "undefined1 *local_3c;" type_identifier (pointer_declarator "*local_3c" * identifier) ;) (declaration "uint local_38;" type_identifier identifier ;) (expression_statement "uVar14 = FUN_0001af1a();" (assignment_expression "uVar14 = FUN_0001af1a()" identifier = (call_expression "FUN_0001af1a()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_38 = (uint)((ulonglong)uVar14 >> 0x20);" (assignment_expression "local_38 = (uint)((ulonglong)uVar14 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)uVar14 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar14 >> 0x20)" ( (binary_expression "(ulonglong)uVar14 >> 0x20" (cast_expression "(ulonglong)uVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar5 = (int)uVar14;" (assignment_expression "iVar5 = (int)uVar14" identifier = (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (*(int *)(iVar5 + 0x28) == 0) {\n    iVar6 = *(int *)(iVar5 + 0x14);\n    if (iVar6 == 0) {\n      iVar6 = FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8));\n      *(int *)(iVar5 + 0x14) = iVar6;\n      if (*(int *)(iVar5 + 0x28) != 0) {\n        return;\n      }\n    }\n    __n = 0;\n    FUN_00057c50(iVar6,1,param_1,param_2);\n    iVar6 = FUN_000ae4d0(*(undefined4 *)(iVar5 + 0x14));\n    local_3c = (undefined1 *)0x0;\n    if (iVar6 == 100) {\n      __n = FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0);\n      __src = (void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0);\n      local_3c = (undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f);\n      if (local_3c == (undefined1 *)0x0) {\n        *(undefined4 *)(iVar5 + 0x28) = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }\n    }\n    iVar6 = FUN_0008fe60(*(undefined4 *)(iVar5 + 0x14));\n    if ((*(int *)(iVar5 + 0x28) == 0) && (*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0)) {\n      if (local_3c == (undefined1 *)0x0) {\n        FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);\n        return;\n      }\n    }\n    else if (local_3c == (undefined1 *)0x0) {\n      return;\n    }\n    if ((int)__n < 4) {\n      FUN_000789a0(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n);\n    }\n    else {\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);\n        FUN_000264d0(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar7 = *(int *)(iVar5 + 0x10);\n      iVar6 = iVar7 + 1;\n      if (iVar1 * iVar6 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }\n      }\n      else {\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }\n    }\n    FUN_000264d0(local_3c);\n  }" if (parenthesized_expression "(*(int *)(iVar5 + 0x28) == 0)" ( (binary_expression "*(int *)(iVar5 + 0x28) == 0" (pointer_expression "*(int *)(iVar5 + 0x28)" * (cast_expression "(int *)(iVar5 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x28)" ( (binary_expression "iVar5 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    iVar6 = *(int *)(iVar5 + 0x14);\n    if (iVar6 == 0) {\n      iVar6 = FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8));\n      *(int *)(iVar5 + 0x14) = iVar6;\n      if (*(int *)(iVar5 + 0x28) != 0) {\n        return;\n      }\n    }\n    __n = 0;\n    FUN_00057c50(iVar6,1,param_1,param_2);\n    iVar6 = FUN_000ae4d0(*(undefined4 *)(iVar5 + 0x14));\n    local_3c = (undefined1 *)0x0;\n    if (iVar6 == 100) {\n      __n = FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0);\n      __src = (void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0);\n      local_3c = (undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f);\n      if (local_3c == (undefined1 *)0x0) {\n        *(undefined4 *)(iVar5 + 0x28) = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }\n    }\n    iVar6 = FUN_0008fe60(*(undefined4 *)(iVar5 + 0x14));\n    if ((*(int *)(iVar5 + 0x28) == 0) && (*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0)) {\n      if (local_3c == (undefined1 *)0x0) {\n        FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);\n        return;\n      }\n    }\n    else if (local_3c == (undefined1 *)0x0) {\n      return;\n    }\n    if ((int)__n < 4) {\n      FUN_000789a0(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n);\n    }\n    else {\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);\n        FUN_000264d0(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar7 = *(int *)(iVar5 + 0x10);\n      iVar6 = iVar7 + 1;\n      if (iVar1 * iVar6 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }\n      }\n      else {\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }\n    }\n    FUN_000264d0(local_3c);\n  }" { (expression_statement "iVar6 = *(int *)(iVar5 + 0x14);" (assignment_expression "iVar6 = *(int *)(iVar5 + 0x14)" identifier = (pointer_expression "*(int *)(iVar5 + 0x14)" * (cast_expression "(int *)(iVar5 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (iVar6 == 0) {\n      iVar6 = FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8));\n      *(int *)(iVar5 + 0x14) = iVar6;\n      if (*(int *)(iVar5 + 0x28) != 0) {\n        return;\n      }\n    }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar6 = FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8));\n      *(int *)(iVar5 + 0x14) = iVar6;\n      if (*(int *)(iVar5 + 0x28) != 0) {\n        return;\n      }\n    }" { (expression_statement "iVar6 = FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8));" (assignment_expression "iVar6 = FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8))" identifier = (call_expression "FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8))" identifier (argument_list "(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8))" ( identifier , (binary_expression "unaff_EDI + 0x327bd" identifier + number_literal) , (pointer_expression "*(undefined4 *)(iVar5 + 4)" * (cast_expression "(undefined4 *)(iVar5 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar5 + 8)" * (cast_expression "(undefined4 *)(iVar5 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 8)" ( (binary_expression "iVar5 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "*(int *)(iVar5 + 0x14) = iVar6;" (assignment_expression "*(int *)(iVar5 + 0x14) = iVar6" (pointer_expression "*(int *)(iVar5 + 0x14)" * (cast_expression "(int *)(iVar5 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(int *)(iVar5 + 0x28) != 0) {\n        return;\n      }" if (parenthesized_expression "(*(int *)(iVar5 + 0x28) != 0)" ( (binary_expression "*(int *)(iVar5 + 0x28) != 0" (pointer_expression "*(int *)(iVar5 + 0x28)" * (cast_expression "(int *)(iVar5 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x28)" ( (binary_expression "iVar5 + 0x28" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) })) (expression_statement "__n = 0;" (assignment_expression "__n = 0" identifier = number_literal) ;) (expression_statement "FUN_00057c50(iVar6,1,param_1,param_2);" (call_expression "FUN_00057c50(iVar6,1,param_1,param_2)" identifier (argument_list "(iVar6,1,param_1,param_2)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "iVar6 = FUN_000ae4d0(*(undefined4 *)(iVar5 + 0x14));" (assignment_expression "iVar6 = FUN_000ae4d0(*(undefined4 *)(iVar5 + 0x14))" identifier = (call_expression "FUN_000ae4d0(*(undefined4 *)(iVar5 + 0x14))" identifier (argument_list "(*(undefined4 *)(iVar5 + 0x14))" ( (pointer_expression "*(undefined4 *)(iVar5 + 0x14)" * (cast_expression "(undefined4 *)(iVar5 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) )))) ;) (expression_statement "local_3c = (undefined1 *)0x0;" (assignment_expression "local_3c = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar6 == 100) {\n      __n = FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0);\n      __src = (void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0);\n      local_3c = (undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f);\n      if (local_3c == (undefined1 *)0x0) {\n        *(undefined4 *)(iVar5 + 0x28) = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }\n    }" if (parenthesized_expression "(iVar6 == 100)" ( (binary_expression "iVar6 == 100" identifier == number_literal) )) (compound_statement "{\n      __n = FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0);\n      __src = (void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0);\n      local_3c = (undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f);\n      if (local_3c == (undefined1 *)0x0) {\n        *(undefined4 *)(iVar5 + 0x28) = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }\n    }" { (expression_statement "__n = FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0);" (assignment_expression "__n = FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0)" identifier = (call_expression "FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0)" identifier (argument_list "(*(undefined4 *)(iVar5 + 0x14),0)" ( (pointer_expression "*(undefined4 *)(iVar5 + 0x14)" * (cast_expression "(undefined4 *)(iVar5 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) , number_literal )))) ;) (expression_statement "__src = (void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0);" (assignment_expression "__src = (void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0)" identifier = (cast_expression "(void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0)" identifier (argument_list "(*(undefined4 *)(iVar5 + 0x14),0)" ( (pointer_expression "*(undefined4 *)(iVar5 + 0x14)" * (cast_expression "(undefined4 *)(iVar5 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) , number_literal ))))) ;) (expression_statement "local_3c = (undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f);" (assignment_expression "local_3c = (undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f)" identifier = (cast_expression "(undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000408d0(__n,(int)__n >> 0x1f)" identifier (argument_list "(__n,(int)__n >> 0x1f)" ( identifier , (binary_expression "(int)__n >> 0x1f" (cast_expression "(int)__n" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))))) ;) (if_statement "if (local_3c == (undefined1 *)0x0) {\n        *(undefined4 *)(iVar5 + 0x28) = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }" if (parenthesized_expression "(local_3c == (undefined1 *)0x0)" ( (binary_expression "local_3c == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(undefined4 *)(iVar5 + 0x28) = 7;\n        __n = 0;\n      }" { (expression_statement "*(undefined4 *)(iVar5 + 0x28) = 7;" (assignment_expression "*(undefined4 *)(iVar5 + 0x28) = 7" (pointer_expression "*(undefined4 *)(iVar5 + 0x28)" * (cast_expression "(undefined4 *)(iVar5 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x28)" ( (binary_expression "iVar5 + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__n = 0;" (assignment_expression "__n = 0" identifier = number_literal) ;) }) (else_clause "else {\n        memcpy(local_3c,__src,__n);\n      }" else (compound_statement "{\n        memcpy(local_3c,__src,__n);\n      }" { (expression_statement "memcpy(local_3c,__src,__n);" (call_expression "memcpy(local_3c,__src,__n)" identifier (argument_list "(local_3c,__src,__n)" ( identifier , identifier , identifier ))) ;) }))) })) (expression_statement "iVar6 = FUN_0008fe60(*(undefined4 *)(iVar5 + 0x14));" (assignment_expression "iVar6 = FUN_0008fe60(*(undefined4 *)(iVar5 + 0x14))" identifier = (call_expression "FUN_0008fe60(*(undefined4 *)(iVar5 + 0x14))" identifier (argument_list "(*(undefined4 *)(iVar5 + 0x14))" ( (pointer_expression "*(undefined4 *)(iVar5 + 0x14)" * (cast_expression "(undefined4 *)(iVar5 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) )))) ;) (if_statement "if ((*(int *)(iVar5 + 0x28) == 0) && (*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0)) {\n      if (local_3c == (undefined1 *)0x0) {\n        FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);\n        return;\n      }\n    }\n    else if (local_3c == (undefined1 *)0x0) {\n      return;\n    }" if (parenthesized_expression "((*(int *)(iVar5 + 0x28) == 0) && (*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0))" ( (binary_expression "(*(int *)(iVar5 + 0x28) == 0) && (*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0)" (parenthesized_expression "(*(int *)(iVar5 + 0x28) == 0)" ( (binary_expression "*(int *)(iVar5 + 0x28) == 0" (pointer_expression "*(int *)(iVar5 + 0x28)" * (cast_expression "(int *)(iVar5 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x28)" ( (binary_expression "iVar5 + 0x28" identifier + number_literal) )))) == number_literal) )) && (parenthesized_expression "(*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0)" ( (comma_expression "*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0" (assignment_expression "*(int *)(iVar5 + 0x28) = iVar6" (pointer_expression "*(int *)(iVar5 + 0x28)" * (cast_expression "(int *)(iVar5 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x28)" ( (binary_expression "iVar5 + 0x28" identifier + number_literal) )))) = identifier) , (binary_expression "iVar6 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      if (local_3c == (undefined1 *)0x0) {\n        FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);\n        return;\n      }\n    }" { (if_statement "if (local_3c == (undefined1 *)0x0) {\n        FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);\n        return;\n      }" if (parenthesized_expression "(local_3c == (undefined1 *)0x0)" ( (binary_expression "local_3c == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);\n        return;\n      }" { (expression_statement "FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);" (call_expression "FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2)" identifier (argument_list "(iVar5,unaff_EDI + 0x327ed,param_1,param_2)" ( identifier , (binary_expression "unaff_EDI + 0x327ed" identifier + number_literal) , identifier , identifier ))) ;) (return_statement "return;" return ;) })) }) (else_clause "else if (local_3c == (undefined1 *)0x0) {\n      return;\n    }" else (if_statement "if (local_3c == (undefined1 *)0x0) {\n      return;\n    }" if (parenthesized_expression "(local_3c == (undefined1 *)0x0)" ( (binary_expression "local_3c == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })))) (if_statement "if ((int)__n < 4) {\n      FUN_000789a0(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n);\n    }\n    else {\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);\n        FUN_000264d0(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar7 = *(int *)(iVar5 + 0x10);\n      iVar6 = iVar7 + 1;\n      if (iVar1 * iVar6 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }\n      }\n      else {\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }\n    }" if (parenthesized_expression "((int)__n < 4)" ( (binary_expression "(int)__n < 4" (cast_expression "(int)__n" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      FUN_000789a0(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n);\n    }" { (expression_statement "FUN_000789a0(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n);" (call_expression "FUN_000789a0(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n)" identifier (argument_list "(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n)" ( identifier , (binary_expression "unaff_EDI + 0x3280d" identifier + number_literal) , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);\n        FUN_000264d0(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar7 = *(int *)(iVar5 + 0x10);\n      iVar6 = iVar7 + 1;\n      if (iVar1 * iVar6 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }\n      }\n      else {\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }\n    }" else (compound_statement "{\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);\n        FUN_000264d0(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar7 = *(int *)(iVar5 + 0x10);\n      iVar6 = iVar7 + 1;\n      if (iVar1 * iVar6 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }\n      }\n      else {\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }\n    }" { (if_statement "if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);\n        FUN_000264d0(local_3c);\n        return;\n      }" if (parenthesized_expression "((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))" ( (binary_expression "(extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1]))" (parenthesized_expression "(extraout_ECX == 0)" ( (binary_expression "extraout_ECX == 0" identifier == number_literal) )) && (parenthesized_expression "(local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1]))" ( (comma_expression "local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])" (assignment_expression "local_38 = (uint)CONCAT11(*local_3c,local_3c[1])" identifier = (cast_expression "(uint)CONCAT11(*local_3c,local_3c[1])" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT11(*local_3c,local_3c[1])" identifier (argument_list "(*local_3c,local_3c[1])" ( (pointer_expression "*local_3c" * identifier) , (subscript_expression "local_3c[1]" identifier [ number_literal ]) ))))) , (binary_expression "0x28 < CONCAT11(*local_3c,local_3c[1])" number_literal < (call_expression "CONCAT11(*local_3c,local_3c[1])" identifier (argument_list "(*local_3c,local_3c[1])" ( (pointer_expression "*local_3c" * identifier) , (subscript_expression "local_3c[1]" identifier [ number_literal ]) ))))) ))) )) (compound_statement "{\n        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);\n        FUN_000264d0(local_3c);\n        return;\n      }" { (expression_statement "FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);" (call_expression "FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38)" identifier (argument_list "(iVar5,unaff_EDI + 0x23c8c,local_38)" ( identifier , (binary_expression "unaff_EDI + 0x23c8c" identifier + number_literal) , identifier ))) ;) (expression_statement "FUN_000264d0(local_3c);" (call_expression "FUN_000264d0(local_3c)" identifier (argument_list "(local_3c)" ( identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];" (assignment_expression "iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3]" identifier = (binary_expression "(uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3]" (binary_expression "(uint)(byte)local_3c[2] * 0x100" (cast_expression "(uint)(byte)local_3c[2]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)local_3c[2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "local_3c[2]" identifier [ number_literal ]))) * number_literal) + (cast_expression "(uint)(byte)local_3c[3]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)local_3c[3]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "local_3c[3]" identifier [ number_literal ]))))) ;) (expression_statement "iVar7 = *(int *)(iVar5 + 0x10);" (assignment_expression "iVar7 = *(int *)(iVar5 + 0x10)" identifier = (pointer_expression "*(int *)(iVar5 + 0x10)" * (cast_expression "(int *)(iVar5 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = iVar7 + 1;" (assignment_expression "iVar6 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (if_statement "if (iVar1 * iVar6 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }\n      }\n      else {\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }" if (parenthesized_expression "(iVar1 * iVar6 * 8 + 3 < (int)__n)" ( (binary_expression "iVar1 * iVar6 * 8 + 3 < (int)__n" (binary_expression "iVar1 * iVar6 * 8 + 3" (binary_expression "iVar1 * iVar6 * 8" (binary_expression "iVar1 * iVar6" identifier * identifier) * number_literal) + number_literal) < (cast_expression "(int)__n" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }\n      }" { (if_statement "if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }" { (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) (do_statement "do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );" do (compound_statement "{\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          }" { (expression_statement "puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);" (assignment_expression "puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4)" identifier = (cast_expression "(uint *)(local_3c + iVar6 * local_4c * 8 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_3c + iVar6 * local_4c * 8 + 4)" ( (binary_expression "local_3c + iVar6 * local_4c * 8 + 4" (binary_expression "local_3c + iVar6 * local_4c * 8" identifier + (binary_expression "iVar6 * local_4c * 8" (binary_expression "iVar6 * local_4c" identifier * identifier) * number_literal)) + number_literal) )))) ;) (expression_statement "uVar9 = *puVar2;" (assignment_expression "uVar9 = *puVar2" identifier = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "uVar11 = puVar2[1];" (assignment_expression "uVar11 = puVar2[1]" identifier = (subscript_expression "puVar2[1]" identifier [ number_literal ])) ;) (expression_statement "uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;" (assignment_expression "uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18" identifier = (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8" (binary_expression "uVar11 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar11 & 0xff0000) >> 8" (parenthesized_expression "(uVar11 & 0xff0000)" ( (binary_expression "uVar11 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar11 & 0xff00) << 8" (parenthesized_expression "(uVar11 & 0xff00)" ( (binary_expression "uVar11 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar11 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" identifier = (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" ( (binary_expression "uVar9 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" ( (binary_expression "uVar9 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar9 << 0x18" identifier << number_literal))) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (if_statement "if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }" if (parenthesized_expression "(0 < iVar7)" ( (binary_expression "0 < iVar7" number_literal < identifier) )) (compound_statement "{\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }" { (labeled_statement "LAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));" statement_identifier : (do_statement "do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));" do (compound_statement "{\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              }" { (expression_statement "uVar3 = puVar2[iVar6 * 2 + 2];" (assignment_expression "uVar3 = puVar2[iVar6 * 2 + 2]" identifier = (subscript_expression "puVar2[iVar6 * 2 + 2]" identifier [ (binary_expression "iVar6 * 2 + 2" (binary_expression "iVar6 * 2" identifier * number_literal) + number_literal) ])) ;) (expression_statement "uVar4 = puVar2[iVar6 * 2 + 3];" (assignment_expression "uVar4 = puVar2[iVar6 * 2 + 3]" identifier = (subscript_expression "puVar2[iVar6 * 2 + 3]" identifier [ (binary_expression "iVar6 * 2 + 3" (binary_expression "iVar6 * 2" identifier * number_literal) + number_literal) ])) ;) (expression_statement "fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);" (assignment_expression "fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18)" identifier = (cast_expression "(float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18)" ( (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x18" identifier << number_literal)) )))) ;) (expression_statement "fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);" (assignment_expression "fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18)" identifier = (cast_expression "(float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18)" ( (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" ( (binary_expression "uVar4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" ( (binary_expression "uVar4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar4 << 0x18" identifier << number_literal)) )))) ;) (if_statement "if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;" if (parenthesized_expression "(*(int *)(iVar5 + 0xc) == 0)" ( (binary_expression "*(int *)(iVar5 + 0xc) == 0" (pointer_expression "*(int *)(iVar5 + 0xc)" * (cast_expression "(int *)(iVar5 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }" { (if_statement "if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }" if (parenthesized_expression "(fVar13 < fVar12)" ( (binary_expression "fVar13 < fVar12" identifier < identifier) )) (compound_statement "{\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }" { (labeled_statement "LAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);" statement_identifier : (expression_statement "FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);" (call_expression "FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2)" identifier (argument_list "(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2)" ( identifier , (binary_expression "&UNK_00032869 + unaff_EDI" (pointer_expression "&UNK_00032869" & identifier) + identifier) , identifier , identifier , identifier , identifier ))) ;)) })) }) (else_clause "else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;" else (if_statement "if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;" if (parenthesized_expression "((int)fVar13 < (int)fVar12)" ( (binary_expression "(int)fVar13 < (int)fVar12" (cast_expression "(int)fVar13" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)fVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_000d69ff;" goto statement_identifier ;)))) (if_statement "if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }" if (parenthesized_expression "(extraout_ECX == 0)" ( (binary_expression "extraout_ECX == 0" identifier == number_literal) )) (compound_statement "{\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }" { (labeled_statement "LAB_000d69bd:\n                  iVar6 = iVar6 + 1;" statement_identifier : (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;)) (if_statement "if (*(int *)(iVar5 + 0x10) <= iVar6) break;" if (parenthesized_expression "(*(int *)(iVar5 + 0x10) <= iVar6)" ( (binary_expression "*(int *)(iVar5 + 0x10) <= iVar6" (pointer_expression "*(int *)(iVar5 + 0x10)" * (cast_expression "(int *)(iVar5 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) )))) <= identifier) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_000d69c9;" goto statement_identifier ;) })) (expression_statement "uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);" (assignment_expression "uVar3 = *(uint *)(extraout_ECX + iVar6 * 8)" identifier = (pointer_expression "*(uint *)(extraout_ECX + iVar6 * 8)" * (cast_expression "(uint *)(extraout_ECX + iVar6 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_ECX + iVar6 * 8)" ( (binary_expression "extraout_ECX + iVar6 * 8" identifier + (binary_expression "iVar6 * 8" identifier * number_literal)) ))))) ;) (expression_statement "uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);" (assignment_expression "uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8)" identifier = (pointer_expression "*(uint *)(extraout_ECX + 4 + iVar6 * 8)" * (cast_expression "(uint *)(extraout_ECX + 4 + iVar6 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_ECX + 4 + iVar6 * 8)" ( (binary_expression "extraout_ECX + 4 + iVar6 * 8" (binary_expression "extraout_ECX + 4" identifier + number_literal) + (binary_expression "iVar6 * 8" identifier * number_literal)) ))))) ;) (expression_statement "fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);" (assignment_expression "fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18)" identifier = (cast_expression "(float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18)" ( (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x18" identifier << number_literal)) )))) ;) (expression_statement "fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);" (assignment_expression "fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18)" identifier = (cast_expression "(float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18)" ( (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" ( (binary_expression "uVar4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" ( (binary_expression "uVar4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar4 << 0x18" identifier << number_literal)) )))) ;) (if_statement "if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }" if (parenthesized_expression "(*(int *)(iVar5 + 0xc) == 0)" ( (binary_expression "*(int *)(iVar5 + 0xc) == 0" (pointer_expression "*(int *)(iVar5 + 0xc)" * (cast_expression "(int *)(iVar5 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }" { (if_statement "if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;" if (parenthesized_expression "((fVar12 < fVar10) || (fVar8 < fVar13))" ( (binary_expression "(fVar12 < fVar10) || (fVar8 < fVar13)" (parenthesized_expression "(fVar12 < fVar10)" ( (binary_expression "fVar12 < fVar10" identifier < identifier) )) || (parenthesized_expression "(fVar8 < fVar13)" ( (binary_expression "fVar8 < fVar13" identifier < identifier) ))) )) (goto_statement "goto LAB_000d6998;" goto statement_identifier ;)) (goto_statement "goto LAB_000d69bd;" goto statement_identifier ;) })) (if_statement "if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }" if (parenthesized_expression "(((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10))" ( (binary_expression "((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)" (parenthesized_expression "((int)fVar8 < (int)fVar13)" ( (binary_expression "(int)fVar8 < (int)fVar13" (cast_expression "(int)fVar8" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)fVar13" ( (type_descriptor "int" primitive_type) ) identifier)) )) || (parenthesized_expression "((int)fVar12 < (int)fVar10)" ( (binary_expression "(int)fVar12 < (int)fVar10" (cast_expression "(int)fVar12" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)fVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }" { (labeled_statement "LAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);" statement_identifier : (expression_statement "FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);" (call_expression "FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2)" identifier (argument_list "(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2)" ( identifier , (binary_expression "unaff_EDI + 0x32899" identifier + number_literal) , identifier , identifier , identifier , identifier ))) ;)) (goto_statement "goto LAB_000d69bd;" goto statement_identifier ;) })) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 < *(int *)(iVar5 + 0x10))" ( (binary_expression "iVar6 < *(int *)(iVar5 + 0x10)" identifier < (pointer_expression "*(int *)(iVar5 + 0x10)" * (cast_expression "(int *)(iVar5 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) ))))) )) ;)) })) (if_statement "if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }" if (parenthesized_expression "(local_38 == 0)" ( (binary_expression "local_38 == 0" identifier == number_literal) )) (compound_statement "{\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }" { (expression_statement "FUN_000d3db0(uVar11,uVar9,param_1,param_2);" (call_expression "FUN_000d3db0(uVar11,uVar9,param_1,param_2)" identifier (argument_list "(uVar11,uVar9,param_1,param_2)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "*(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;" (assignment_expression "*(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1" (pointer_expression "*(int *)(iVar5 + 0x20)" * (cast_expression "(int *)(iVar5 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x20)" ( (binary_expression "iVar5 + 0x20" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar5 + 0x20) + 1" (pointer_expression "*(int *)(iVar5 + 0x20)" * (cast_expression "(int *)(iVar5 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x20)" ( (binary_expression "iVar5 + 0x20" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }" else (compound_statement "{\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }" { (expression_statement "FUN_000d3db0(uVar11,uVar9,param_1,param_2);" (call_expression "FUN_000d3db0(uVar11,uVar9,param_1,param_2)" identifier (argument_list "(uVar11,uVar9,param_1,param_2)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "FUN_000d67f0(uVar11,uVar9);" (call_expression "FUN_000d67f0(uVar11,uVar9)" identifier (argument_list "(uVar11,uVar9)" ( identifier , identifier ))) ;) (expression_statement "*(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;" (assignment_expression "*(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1" (pointer_expression "*(int *)(iVar5 + 0x24)" * (cast_expression "(int *)(iVar5 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x24)" ( (binary_expression "iVar5 + 0x24" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar5 + 0x24) + 1" (pointer_expression "*(int *)(iVar5 + 0x24)" * (cast_expression "(int *)(iVar5 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x24)" ( (binary_expression "iVar5 + 0x24" identifier + number_literal) )))) + number_literal)) ;) }))) (expression_statement "local_4c = local_4c + 1;" (assignment_expression "local_4c = local_4c + 1" identifier = (binary_expression "local_4c + 1" identifier + number_literal)) ;) (if_statement "if (local_4c == iVar1) break;" if (parenthesized_expression "(local_4c == iVar1)" ( (binary_expression "local_4c == iVar1" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar7 = *(int *)(iVar5 + 0x10);" (assignment_expression "iVar7 = *(int *)(iVar5 + 0x10)" identifier = (pointer_expression "*(int *)(iVar5 + 0x10)" * (cast_expression "(int *)(iVar5 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = iVar7 + 1;" (assignment_expression "iVar6 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) }) (else_clause "else {\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }" else (compound_statement "{\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }" { (expression_statement "FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);" (call_expression "FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n)" identifier (argument_list "(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n)" ( identifier , (binary_expression "unaff_EDI + 0x32831" identifier + number_literal) , identifier , identifier , identifier , identifier ))) ;) }))) }))) (expression_statement "FUN_000264d0(local_3c);" (call_expression "FUN_000264d0(local_3c)" identifier (argument_list "(local_3c)" ( identifier ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (return_statement return ;) })) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) }))) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , IDENT , IDENT ))) ;) (return_statement return ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return ;) })))) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , (subscript_expression IDENT [ LIT ]) ))))) , (binary_expression LIT < (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , (subscript_expression IDENT [ LIT ]) ))))) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) * LIT) + (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))))) ;) (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 = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT * IDENT) * LIT) + LIT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (binary_expression IDENT * IDENT) * LIT)) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression (pointer_expression & IDENT) + IDENT) , IDENT , IDENT , IDENT , IDENT ))) ;)) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) )) (break_statement break ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) || (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT , IDENT ))) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;)) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (break_statement break ;)) (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 = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( BOOL )) ;) })) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT , IDENT ))) ;) }))) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (return_statement return ;) })))
(function_definition "void FUN_000d67f0(undefined4 param_1,undefined4 param_2)\n\n{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  float fVar8;\n  void *__src;\n  int extraout_ECX;\n  uint uVar9;\n  float fVar10;\n  uint uVar11;\n  float fVar12;\n  size_t __n;\n  float fVar13;\n  int unaff_EDI;\n  undefined8 uVar14;\n  int local_4c;\n  undefined1 *local_3c;\n  uint local_38;\n  \n  uVar14 = FUN_0001af1a();\n  local_38 = (uint)((ulonglong)uVar14 >> 0x20);\n  iVar5 = (int)uVar14;\n  if (*(int *)(iVar5 + 0x28) == 0) {\n    iVar6 = *(int *)(iVar5 + 0x14);\n    if (iVar6 == 0) {\n      iVar6 = FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8));\n      *(int *)(iVar5 + 0x14) = iVar6;\n      if (*(int *)(iVar5 + 0x28) != 0) {\n        return;\n      }\n    }\n    __n = 0;\n    FUN_00057c50(iVar6,1,param_1,param_2);\n    iVar6 = FUN_000ae4d0(*(undefined4 *)(iVar5 + 0x14));\n    local_3c = (undefined1 *)0x0;\n    if (iVar6 == 100) {\n      __n = FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0);\n      __src = (void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0);\n      local_3c = (undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f);\n      if (local_3c == (undefined1 *)0x0) {\n        *(undefined4 *)(iVar5 + 0x28) = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }\n    }\n    iVar6 = FUN_0008fe60(*(undefined4 *)(iVar5 + 0x14));\n    if ((*(int *)(iVar5 + 0x28) == 0) && (*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0)) {\n      if (local_3c == (undefined1 *)0x0) {\n        FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);\n        return;\n      }\n    }\n    else if (local_3c == (undefined1 *)0x0) {\n      return;\n    }\n    if ((int)__n < 4) {\n      FUN_000789a0(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n);\n    }\n    else {\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);\n        FUN_000264d0(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar7 = *(int *)(iVar5 + 0x10);\n      iVar6 = iVar7 + 1;\n      if (iVar1 * iVar6 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }\n      }\n      else {\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }\n    }\n    FUN_000264d0(local_3c);\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_000d67f0(undefined4 param_1,undefined4 param_2)" (identifier "FUN_000d67f0") (parameter_list "(undefined4 param_1,undefined4 param_2)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) () ")"))) (compound_statement "{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  float fVar8;\n  void *__src;\n  int extraout_ECX;\n  uint uVar9;\n  float fVar10;\n  uint uVar11;\n  float fVar12;\n  size_t __n;\n  float fVar13;\n  int unaff_EDI;\n  undefined8 uVar14;\n  int local_4c;\n  undefined1 *local_3c;\n  uint local_38;\n  \n  uVar14 = FUN_0001af1a();\n  local_38 = (uint)((ulonglong)uVar14 >> 0x20);\n  iVar5 = (int)uVar14;\n  if (*(int *)(iVar5 + 0x28) == 0) {\n    iVar6 = *(int *)(iVar5 + 0x14);\n    if (iVar6 == 0) {\n      iVar6 = FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8));\n      *(int *)(iVar5 + 0x14) = iVar6;\n      if (*(int *)(iVar5 + 0x28) != 0) {\n        return;\n      }\n    }\n    __n = 0;\n    FUN_00057c50(iVar6,1,param_1,param_2);\n    iVar6 = FUN_000ae4d0(*(undefined4 *)(iVar5 + 0x14));\n    local_3c = (undefined1 *)0x0;\n    if (iVar6 == 100) {\n      __n = FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0);\n      __src = (void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0);\n      local_3c = (undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f);\n      if (local_3c == (undefined1 *)0x0) {\n        *(undefined4 *)(iVar5 + 0x28) = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }\n    }\n    iVar6 = FUN_0008fe60(*(undefined4 *)(iVar5 + 0x14));\n    if ((*(int *)(iVar5 + 0x28) == 0) && (*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0)) {\n      if (local_3c == (undefined1 *)0x0) {\n        FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);\n        return;\n      }\n    }\n    else if (local_3c == (undefined1 *)0x0) {\n      return;\n    }\n    if ((int)__n < 4) {\n      FUN_000789a0(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n);\n    }\n    else {\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);\n        FUN_000264d0(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar7 = *(int *)(iVar5 + 0x10);\n      iVar6 = iVar7 + 1;\n      if (iVar1 * iVar6 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }\n      }\n      else {\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }\n    }\n    FUN_000264d0(local_3c);\n  }\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint *puVar2;" (type_identifier "uint") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "float fVar8;" (primitive_type "float") (identifier "fVar8") (; ";")) (declaration "void *__src;" (primitive_type "void") (pointer_declarator "*__src" (* "*") (identifier "__src")) (; ";")) (declaration "int extraout_ECX;" (primitive_type "int") (identifier "extraout_ECX") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "float fVar10;" (primitive_type "float") (identifier "fVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "float fVar12;" (primitive_type "float") (identifier "fVar12") (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "float fVar13;" (primitive_type "float") (identifier "fVar13") (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "undefined8 uVar14;" (type_identifier "undefined8") (identifier "uVar14") (; ";")) (declaration "int local_4c;" (primitive_type "int") (identifier "local_4c") (; ";")) (declaration "undefined1 *local_3c;" (type_identifier "undefined1") (pointer_declarator "*local_3c" (* "*") (identifier "local_3c")) (; ";")) (declaration "uint local_38;" (type_identifier "uint") (identifier "local_38") (; ";")) (expression_statement "uVar14 = FUN_0001af1a();" (assignment_expression "uVar14 = FUN_0001af1a()" (identifier "uVar14") (= "=") (call_expression "FUN_0001af1a()" (identifier "FUN_0001af1a") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "local_38 = (uint)((ulonglong)uVar14 >> 0x20);" (assignment_expression "local_38 = (uint)((ulonglong)uVar14 >> 0x20)" (identifier "local_38") (= "=") (call_expression "(uint)((ulonglong)uVar14 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)uVar14 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar14 >> 0x20" (cast_expression "(ulonglong)uVar14" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar14")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "iVar5 = (int)uVar14;" (assignment_expression "iVar5 = (int)uVar14" (identifier "iVar5") (= "=") (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14"))) (; ";")) (if_statement "if (*(int *)(iVar5 + 0x28) == 0) {\n    iVar6 = *(int *)(iVar5 + 0x14);\n    if (iVar6 == 0) {\n      iVar6 = FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8));\n      *(int *)(iVar5 + 0x14) = iVar6;\n      if (*(int *)(iVar5 + 0x28) != 0) {\n        return;\n      }\n    }\n    __n = 0;\n    FUN_00057c50(iVar6,1,param_1,param_2);\n    iVar6 = FUN_000ae4d0(*(undefined4 *)(iVar5 + 0x14));\n    local_3c = (undefined1 *)0x0;\n    if (iVar6 == 100) {\n      __n = FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0);\n      __src = (void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0);\n      local_3c = (undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f);\n      if (local_3c == (undefined1 *)0x0) {\n        *(undefined4 *)(iVar5 + 0x28) = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }\n    }\n    iVar6 = FUN_0008fe60(*(undefined4 *)(iVar5 + 0x14));\n    if ((*(int *)(iVar5 + 0x28) == 0) && (*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0)) {\n      if (local_3c == (undefined1 *)0x0) {\n        FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);\n        return;\n      }\n    }\n    else if (local_3c == (undefined1 *)0x0) {\n      return;\n    }\n    if ((int)__n < 4) {\n      FUN_000789a0(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n);\n    }\n    else {\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);\n        FUN_000264d0(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar7 = *(int *)(iVar5 + 0x10);\n      iVar6 = iVar7 + 1;\n      if (iVar1 * iVar6 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }\n      }\n      else {\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }\n    }\n    FUN_000264d0(local_3c);\n  }" (if "if") (parenthesized_expression "(*(int *)(iVar5 + 0x28) == 0)" (( "(") (binary_expression "*(int *)(iVar5 + 0x28) == 0" (pointer_expression "*(int *)(iVar5 + 0x28)" (* "*") (cast_expression "(int *)(iVar5 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x28)" (( "(") (binary_expression "iVar5 + 0x28" (identifier "iVar5") (+ "+") (number_literal "0x28")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar6 = *(int *)(iVar5 + 0x14);\n    if (iVar6 == 0) {\n      iVar6 = FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8));\n      *(int *)(iVar5 + 0x14) = iVar6;\n      if (*(int *)(iVar5 + 0x28) != 0) {\n        return;\n      }\n    }\n    __n = 0;\n    FUN_00057c50(iVar6,1,param_1,param_2);\n    iVar6 = FUN_000ae4d0(*(undefined4 *)(iVar5 + 0x14));\n    local_3c = (undefined1 *)0x0;\n    if (iVar6 == 100) {\n      __n = FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0);\n      __src = (void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0);\n      local_3c = (undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f);\n      if (local_3c == (undefined1 *)0x0) {\n        *(undefined4 *)(iVar5 + 0x28) = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }\n    }\n    iVar6 = FUN_0008fe60(*(undefined4 *)(iVar5 + 0x14));\n    if ((*(int *)(iVar5 + 0x28) == 0) && (*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0)) {\n      if (local_3c == (undefined1 *)0x0) {\n        FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);\n        return;\n      }\n    }\n    else if (local_3c == (undefined1 *)0x0) {\n      return;\n    }\n    if ((int)__n < 4) {\n      FUN_000789a0(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n);\n    }\n    else {\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);\n        FUN_000264d0(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar7 = *(int *)(iVar5 + 0x10);\n      iVar6 = iVar7 + 1;\n      if (iVar1 * iVar6 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }\n      }\n      else {\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }\n    }\n    FUN_000264d0(local_3c);\n  }" ({ "{") (expression_statement "iVar6 = *(int *)(iVar5 + 0x14);" (assignment_expression "iVar6 = *(int *)(iVar5 + 0x14)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(iVar5 + 0x14)" (* "*") (cast_expression "(int *)(iVar5 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x14)" (( "(") (binary_expression "iVar5 + 0x14" (identifier "iVar5") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (iVar6 == 0) {\n      iVar6 = FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8));\n      *(int *)(iVar5 + 0x14) = iVar6;\n      if (*(int *)(iVar5 + 0x28) != 0) {\n        return;\n      }\n    }" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar6 = FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8));\n      *(int *)(iVar5 + 0x14) = iVar6;\n      if (*(int *)(iVar5 + 0x28) != 0) {\n        return;\n      }\n    }" ({ "{") (expression_statement "iVar6 = FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8));" (assignment_expression "iVar6 = FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8))" (identifier "iVar6") (= "=") (call_expression "FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8))" (identifier "FUN_000c3d10") (argument_list "(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),\n                           *(undefined4 *)(iVar5 + 8))" (( "(") (identifier "iVar5") (, ",") (binary_expression "unaff_EDI + 0x327bd" (identifier "unaff_EDI") (+ "+") (number_literal "0x327bd")) (, ",") (pointer_expression "*(undefined4 *)(iVar5 + 4)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 4)" (( "(") (binary_expression "iVar5 + 4" (identifier "iVar5") (+ "+") (number_literal "4")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar5 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 8)" (( "(") (binary_expression "iVar5 + 8" (identifier "iVar5") (+ "+") (number_literal "8")) () ")")))) () ")")))) (; ";")) (expression_statement "*(int *)(iVar5 + 0x14) = iVar6;" (assignment_expression "*(int *)(iVar5 + 0x14) = iVar6" (pointer_expression "*(int *)(iVar5 + 0x14)" (* "*") (cast_expression "(int *)(iVar5 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x14)" (( "(") (binary_expression "iVar5 + 0x14" (identifier "iVar5") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (if_statement "if (*(int *)(iVar5 + 0x28) != 0) {\n        return;\n      }" (if "if") (parenthesized_expression "(*(int *)(iVar5 + 0x28) != 0)" (( "(") (binary_expression "*(int *)(iVar5 + 0x28) != 0" (pointer_expression "*(int *)(iVar5 + 0x28)" (* "*") (cast_expression "(int *)(iVar5 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x28)" (( "(") (binary_expression "iVar5 + 0x28" (identifier "iVar5") (+ "+") (number_literal "0x28")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (expression_statement "__n = 0;" (assignment_expression "__n = 0" (identifier "__n") (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_00057c50(iVar6,1,param_1,param_2);" (call_expression "FUN_00057c50(iVar6,1,param_1,param_2)" (identifier "FUN_00057c50") (argument_list "(iVar6,1,param_1,param_2)" (( "(") (identifier "iVar6") (, ",") (number_literal "1") (, ",") (identifier "param_1") (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "iVar6 = FUN_000ae4d0(*(undefined4 *)(iVar5 + 0x14));" (assignment_expression "iVar6 = FUN_000ae4d0(*(undefined4 *)(iVar5 + 0x14))" (identifier "iVar6") (= "=") (call_expression "FUN_000ae4d0(*(undefined4 *)(iVar5 + 0x14))" (identifier "FUN_000ae4d0") (argument_list "(*(undefined4 *)(iVar5 + 0x14))" (( "(") (pointer_expression "*(undefined4 *)(iVar5 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x14)" (( "(") (binary_expression "iVar5 + 0x14" (identifier "iVar5") (+ "+") (number_literal "0x14")) () ")")))) () ")")))) (; ";")) (expression_statement "local_3c = (undefined1 *)0x0;" (assignment_expression "local_3c = (undefined1 *)0x0" (identifier "local_3c") (= "=") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (iVar6 == 100) {\n      __n = FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0);\n      __src = (void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0);\n      local_3c = (undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f);\n      if (local_3c == (undefined1 *)0x0) {\n        *(undefined4 *)(iVar5 + 0x28) = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }\n    }" (if "if") (parenthesized_expression "(iVar6 == 100)" (( "(") (binary_expression "iVar6 == 100" (identifier "iVar6") (== "==") (number_literal "100")) () ")")) (compound_statement "{\n      __n = FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0);\n      __src = (void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0);\n      local_3c = (undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f);\n      if (local_3c == (undefined1 *)0x0) {\n        *(undefined4 *)(iVar5 + 0x28) = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }\n    }" ({ "{") (expression_statement "__n = FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0);" (assignment_expression "__n = FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0)" (identifier "__n") (= "=") (call_expression "FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0)" (identifier "FUN_0004e4d0") (argument_list "(*(undefined4 *)(iVar5 + 0x14),0)" (( "(") (pointer_expression "*(undefined4 *)(iVar5 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x14)" (( "(") (binary_expression "iVar5 + 0x14" (identifier "iVar5") (+ "+") (number_literal "0x14")) () ")")))) (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "__src = (void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0);" (assignment_expression "__src = (void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0)" (identifier "__src") (= "=") (cast_expression "(void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0)" (identifier "FUN_0004e800") (argument_list "(*(undefined4 *)(iVar5 + 0x14),0)" (( "(") (pointer_expression "*(undefined4 *)(iVar5 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x14)" (( "(") (binary_expression "iVar5 + 0x14" (identifier "iVar5") (+ "+") (number_literal "0x14")) () ")")))) (, ",") (number_literal "0") () ")"))))) (; ";")) (expression_statement "local_3c = (undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f);" (assignment_expression "local_3c = (undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f)" (identifier "local_3c") (= "=") (cast_expression "(undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000408d0(__n,(int)__n >> 0x1f)" (identifier "FUN_000408d0") (argument_list "(__n,(int)__n >> 0x1f)" (( "(") (identifier "__n") (, ",") (binary_expression "(int)__n >> 0x1f" (cast_expression "(int)__n" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__n")) (>> ">>") (number_literal "0x1f")) () ")"))))) (; ";")) (if_statement "if (local_3c == (undefined1 *)0x0) {\n        *(undefined4 *)(iVar5 + 0x28) = 7;\n        __n = 0;\n      }\n      else {\n        memcpy(local_3c,__src,__n);\n      }" (if "if") (parenthesized_expression "(local_3c == (undefined1 *)0x0)" (( "(") (binary_expression "local_3c == (undefined1 *)0x0" (identifier "local_3c") (== "==") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        *(undefined4 *)(iVar5 + 0x28) = 7;\n        __n = 0;\n      }" ({ "{") (expression_statement "*(undefined4 *)(iVar5 + 0x28) = 7;" (assignment_expression "*(undefined4 *)(iVar5 + 0x28) = 7" (pointer_expression "*(undefined4 *)(iVar5 + 0x28)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x28)" (( "(") (binary_expression "iVar5 + 0x28" (identifier "iVar5") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (number_literal "7")) (; ";")) (expression_statement "__n = 0;" (assignment_expression "__n = 0" (identifier "__n") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n        memcpy(local_3c,__src,__n);\n      }" (else "else") (compound_statement "{\n        memcpy(local_3c,__src,__n);\n      }" ({ "{") (expression_statement "memcpy(local_3c,__src,__n);" (call_expression "memcpy(local_3c,__src,__n)" (identifier "memcpy") (argument_list "(local_3c,__src,__n)" (( "(") (identifier "local_3c") (, ",") (identifier "__src") (, ",") (identifier "__n") () ")"))) (; ";")) (} "}")))) (} "}"))) (expression_statement "iVar6 = FUN_0008fe60(*(undefined4 *)(iVar5 + 0x14));" (assignment_expression "iVar6 = FUN_0008fe60(*(undefined4 *)(iVar5 + 0x14))" (identifier "iVar6") (= "=") (call_expression "FUN_0008fe60(*(undefined4 *)(iVar5 + 0x14))" (identifier "FUN_0008fe60") (argument_list "(*(undefined4 *)(iVar5 + 0x14))" (( "(") (pointer_expression "*(undefined4 *)(iVar5 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x14)" (( "(") (binary_expression "iVar5 + 0x14" (identifier "iVar5") (+ "+") (number_literal "0x14")) () ")")))) () ")")))) (; ";")) (if_statement "if ((*(int *)(iVar5 + 0x28) == 0) && (*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0)) {\n      if (local_3c == (undefined1 *)0x0) {\n        FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);\n        return;\n      }\n    }\n    else if (local_3c == (undefined1 *)0x0) {\n      return;\n    }" (if "if") (parenthesized_expression "((*(int *)(iVar5 + 0x28) == 0) && (*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0))" (( "(") (binary_expression "(*(int *)(iVar5 + 0x28) == 0) && (*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0)" (parenthesized_expression "(*(int *)(iVar5 + 0x28) == 0)" (( "(") (binary_expression "*(int *)(iVar5 + 0x28) == 0" (pointer_expression "*(int *)(iVar5 + 0x28)" (* "*") (cast_expression "(int *)(iVar5 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x28)" (( "(") (binary_expression "iVar5 + 0x28" (identifier "iVar5") (+ "+") (number_literal "0x28")) () ")")))) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0)" (( "(") (comma_expression "*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0" (assignment_expression "*(int *)(iVar5 + 0x28) = iVar6" (pointer_expression "*(int *)(iVar5 + 0x28)" (* "*") (cast_expression "(int *)(iVar5 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x28)" (( "(") (binary_expression "iVar5 + 0x28" (identifier "iVar5") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (identifier "iVar6")) (, ",") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      if (local_3c == (undefined1 *)0x0) {\n        FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);\n        return;\n      }\n    }" ({ "{") (if_statement "if (local_3c == (undefined1 *)0x0) {\n        FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);\n        return;\n      }" (if "if") (parenthesized_expression "(local_3c == (undefined1 *)0x0)" (( "(") (binary_expression "local_3c == (undefined1 *)0x0" (identifier "local_3c") (== "==") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);\n        return;\n      }" ({ "{") (expression_statement "FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);" (call_expression "FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2)" (identifier "FUN_000789a0") (argument_list "(iVar5,unaff_EDI + 0x327ed,param_1,param_2)" (( "(") (identifier "iVar5") (, ",") (binary_expression "unaff_EDI + 0x327ed" (identifier "unaff_EDI") (+ "+") (number_literal "0x327ed")) (, ",") (identifier "param_1") (, ",") (identifier "param_2") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (else_clause "else if (local_3c == (undefined1 *)0x0) {\n      return;\n    }" (else "else") (if_statement "if (local_3c == (undefined1 *)0x0) {\n      return;\n    }" (if "if") (parenthesized_expression "(local_3c == (undefined1 *)0x0)" (( "(") (binary_expression "local_3c == (undefined1 *)0x0" (identifier "local_3c") (== "==") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))))) (if_statement "if ((int)__n < 4) {\n      FUN_000789a0(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n);\n    }\n    else {\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);\n        FUN_000264d0(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar7 = *(int *)(iVar5 + 0x10);\n      iVar6 = iVar7 + 1;\n      if (iVar1 * iVar6 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }\n      }\n      else {\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }\n    }" (if "if") (parenthesized_expression "((int)__n < 4)" (( "(") (binary_expression "(int)__n < 4" (cast_expression "(int)__n" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__n")) (< "<") (number_literal "4")) () ")")) (compound_statement "{\n      FUN_000789a0(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n);\n    }" ({ "{") (expression_statement "FUN_000789a0(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n);" (call_expression "FUN_000789a0(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n)" (identifier "FUN_000789a0") (argument_list "(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n)" (( "(") (identifier "iVar5") (, ",") (binary_expression "unaff_EDI + 0x3280d" (identifier "unaff_EDI") (+ "+") (number_literal "0x3280d")) (, ",") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "__n") () ")"))) (; ";")) (} "}")) (else_clause "else {\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);\n        FUN_000264d0(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar7 = *(int *)(iVar5 + 0x10);\n      iVar6 = iVar7 + 1;\n      if (iVar1 * iVar6 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }\n      }\n      else {\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }\n    }" (else "else") (compound_statement "{\n      if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);\n        FUN_000264d0(local_3c);\n        return;\n      }\n      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];\n      iVar7 = *(int *)(iVar5 + 0x10);\n      iVar6 = iVar7 + 1;\n      if (iVar1 * iVar6 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }\n      }\n      else {\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }\n    }" ({ "{") (if_statement "if ((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))\n      {\n        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);\n        FUN_000264d0(local_3c);\n        return;\n      }" (if "if") (parenthesized_expression "((extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))" (( "(") (binary_expression "(extraout_ECX == 0) &&\n         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1]))" (parenthesized_expression "(extraout_ECX == 0)" (( "(") (binary_expression "extraout_ECX == 0" (identifier "extraout_ECX") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1]))" (( "(") (comma_expression "local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])" (assignment_expression "local_38 = (uint)CONCAT11(*local_3c,local_3c[1])" (identifier "local_38") (= "=") (cast_expression "(uint)CONCAT11(*local_3c,local_3c[1])" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CONCAT11(*local_3c,local_3c[1])" (identifier "CONCAT11") (argument_list "(*local_3c,local_3c[1])" (( "(") (pointer_expression "*local_3c" (* "*") (identifier "local_3c")) (, ",") (subscript_expression "local_3c[1]" (identifier "local_3c") ([ "[") (number_literal "1") (] "]")) () ")"))))) (, ",") (binary_expression "0x28 < CONCAT11(*local_3c,local_3c[1])" (number_literal "0x28") (< "<") (call_expression "CONCAT11(*local_3c,local_3c[1])" (identifier "CONCAT11") (argument_list "(*local_3c,local_3c[1])" (( "(") (pointer_expression "*local_3c" (* "*") (identifier "local_3c")) (, ",") (subscript_expression "local_3c[1]" (identifier "local_3c") ([ "[") (number_literal "1") (] "]")) () ")"))))) () ")"))) () ")")) (compound_statement "{\n        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);\n        FUN_000264d0(local_3c);\n        return;\n      }" ({ "{") (expression_statement "FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);" (call_expression "FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38)" (identifier "FUN_000789a0") (argument_list "(iVar5,unaff_EDI + 0x23c8c,local_38)" (( "(") (identifier "iVar5") (, ",") (binary_expression "unaff_EDI + 0x23c8c" (identifier "unaff_EDI") (+ "+") (number_literal "0x23c8c")) (, ",") (identifier "local_38") () ")"))) (; ";")) (expression_statement "FUN_000264d0(local_3c);" (call_expression "FUN_000264d0(local_3c)" (identifier "FUN_000264d0") (argument_list "(local_3c)" (( "(") (identifier "local_3c") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];" (assignment_expression "iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3]" (identifier "iVar1") (= "=") (binary_expression "(uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3]" (binary_expression "(uint)(byte)local_3c[2] * 0x100" (cast_expression "(uint)(byte)local_3c[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(byte)local_3c[2]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "local_3c[2]" (identifier "local_3c") ([ "[") (number_literal "2") (] "]")))) (* "*") (number_literal "0x100")) (+ "+") (cast_expression "(uint)(byte)local_3c[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(byte)local_3c[3]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "local_3c[3]" (identifier "local_3c") ([ "[") (number_literal "3") (] "]")))))) (; ";")) (expression_statement "iVar7 = *(int *)(iVar5 + 0x10);" (assignment_expression "iVar7 = *(int *)(iVar5 + 0x10)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(iVar5 + 0x10)" (* "*") (cast_expression "(int *)(iVar5 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x10)" (( "(") (binary_expression "iVar5 + 0x10" (identifier "iVar5") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "iVar6 = iVar7 + 1;" (assignment_expression "iVar6 = iVar7 + 1" (identifier "iVar6") (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar1 * iVar6 * 8 + 3 < (int)__n) {\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }\n      }\n      else {\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }" (if "if") (parenthesized_expression "(iVar1 * iVar6 * 8 + 3 < (int)__n)" (( "(") (binary_expression "iVar1 * iVar6 * 8 + 3 < (int)__n" (binary_expression "iVar1 * iVar6 * 8 + 3" (binary_expression "iVar1 * iVar6 * 8" (binary_expression "iVar1 * iVar6" (identifier "iVar1") (* "*") (identifier "iVar6")) (* "*") (number_literal "8")) (+ "+") (number_literal "3")) (< "<") (cast_expression "(int)__n" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__n"))) () ")")) (compound_statement "{\n        if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }\n      }" ({ "{") (if_statement "if (iVar1 != 0) {\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          local_4c = 0;\n          do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );\n        }" ({ "{") (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" (identifier "local_4c") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          } while( true );" (do "do") (compound_statement "{\n            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);\n            uVar9 = *puVar2;\n            uVar11 = puVar2[1];\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n            iVar6 = 0;\n            if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }\n            if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }\n            local_4c = local_4c + 1;\n            if (local_4c == iVar1) break;\n            iVar7 = *(int *)(iVar5 + 0x10);\n            iVar6 = iVar7 + 1;\n          }" ({ "{") (expression_statement "puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);" (assignment_expression "puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4)" (identifier "puVar2") (= "=") (cast_expression "(uint *)(local_3c + iVar6 * local_4c * 8 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_3c + iVar6 * local_4c * 8 + 4)" (( "(") (binary_expression "local_3c + iVar6 * local_4c * 8 + 4" (binary_expression "local_3c + iVar6 * local_4c * 8" (identifier "local_3c") (+ "+") (binary_expression "iVar6 * local_4c * 8" (binary_expression "iVar6 * local_4c" (identifier "iVar6") (* "*") (identifier "local_4c")) (* "*") (number_literal "8"))) (+ "+") (number_literal "4")) () ")")))) (; ";")) (expression_statement "uVar9 = *puVar2;" (assignment_expression "uVar9 = *puVar2" (identifier "uVar9") (= "=") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) (; ";")) (expression_statement "uVar11 = puVar2[1];" (assignment_expression "uVar11 = puVar2[1]" (identifier "uVar11") (= "=") (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;" (assignment_expression "uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18" (identifier "uVar11") (= "=") (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8" (binary_expression "uVar11 >> 0x18" (identifier "uVar11") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar11 & 0xff0000) >> 8" (parenthesized_expression "(uVar11 & 0xff0000)" (( "(") (binary_expression "uVar11 & 0xff0000" (identifier "uVar11") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar11 & 0xff00) << 8" (parenthesized_expression "(uVar11 & 0xff00)" (( "(") (binary_expression "uVar11 & 0xff00" (identifier "uVar11") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar11 << 0x18" (identifier "uVar11") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (identifier "uVar9") (= "=") (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" (identifier "uVar9") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" (( "(") (binary_expression "uVar9 & 0xff0000" (identifier "uVar9") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" (( "(") (binary_expression "uVar9 & 0xff00" (identifier "uVar9") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar9 << 0x18" (identifier "uVar9") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0 < iVar7) {\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }" (if "if") (parenthesized_expression "(0 < iVar7)" (( "(") (binary_expression "0 < iVar7" (number_literal "0") (< "<") (identifier "iVar7")) () ")")) (compound_statement "{\nLAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));\n            }" ({ "{") (labeled_statement "LAB_000d69c9:\n              do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));" (statement_identifier "LAB_000d69c9") (: ":") (do_statement "do {\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              } while (iVar6 < *(int *)(iVar5 + 0x10));" (do "do") (compound_statement "{\n                uVar3 = puVar2[iVar6 * 2 + 2];\n                uVar4 = puVar2[iVar6 * 2 + 3];\n                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;\n                if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }\n                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);\n                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);\n                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);\n                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);\n                if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }\n                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }\n                iVar6 = iVar6 + 1;\n              }" ({ "{") (expression_statement "uVar3 = puVar2[iVar6 * 2 + 2];" (assignment_expression "uVar3 = puVar2[iVar6 * 2 + 2]" (identifier "uVar3") (= "=") (subscript_expression "puVar2[iVar6 * 2 + 2]" (identifier "puVar2") ([ "[") (binary_expression "iVar6 * 2 + 2" (binary_expression "iVar6 * 2" (identifier "iVar6") (* "*") (number_literal "2")) (+ "+") (number_literal "2")) (] "]"))) (; ";")) (expression_statement "uVar4 = puVar2[iVar6 * 2 + 3];" (assignment_expression "uVar4 = puVar2[iVar6 * 2 + 3]" (identifier "uVar4") (= "=") (subscript_expression "puVar2[iVar6 * 2 + 3]" (identifier "puVar2") ([ "[") (binary_expression "iVar6 * 2 + 3" (binary_expression "iVar6 * 2" (identifier "iVar6") (* "*") (number_literal "2")) (+ "+") (number_literal "3")) (] "]"))) (; ";")) (expression_statement "fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);" (assignment_expression "fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18)" (identifier "fVar12") (= "=") (cast_expression "(float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18)" (( "(") (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" (identifier "uVar3") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" (( "(") (binary_expression "uVar3 & 0xff0000" (identifier "uVar3") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" (( "(") (binary_expression "uVar3 & 0xff00" (identifier "uVar3") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar3 << 0x18" (identifier "uVar3") (<< "<<") (number_literal "0x18"))) () ")")))) (; ";")) (expression_statement "fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18);" (assignment_expression "fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18)" (identifier "fVar13") (= "=") (cast_expression "(float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18)" (( "(") (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                                uVar4 << 0x18" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" (identifier "uVar4") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" (( "(") (binary_expression "uVar4 & 0xff0000" (identifier "uVar4") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" (( "(") (binary_expression "uVar4 & 0xff00" (identifier "uVar4") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar4 << 0x18" (identifier "uVar4") (<< "<<") (number_literal "0x18"))) () ")")))) (; ";")) (if_statement "if (*(int *)(iVar5 + 0xc) == 0) {\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }\n                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;" (if "if") (parenthesized_expression "(*(int *)(iVar5 + 0xc) == 0)" (( "(") (binary_expression "*(int *)(iVar5 + 0xc) == 0" (pointer_expression "*(int *)(iVar5 + 0xc)" (* "*") (cast_expression "(int *)(iVar5 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0xc)" (( "(") (binary_expression "iVar5 + 0xc" (identifier "iVar5") (+ "+") (number_literal "0xc")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }\n                }" ({ "{") (if_statement "if (fVar13 < fVar12) {\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }" (if "if") (parenthesized_expression "(fVar13 < fVar12)" (( "(") (binary_expression "fVar13 < fVar12" (identifier "fVar13") (< "<") (identifier "fVar12")) () ")")) (compound_statement "{\nLAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);\n                  }" ({ "{") (labeled_statement "LAB_000d69ff:\n                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);" (statement_identifier "LAB_000d69ff") (: ":") (expression_statement "FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);" (call_expression "FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2)" (identifier "FUN_000789a0") (argument_list "(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2)" (( "(") (identifier "iVar5") (, ",") (binary_expression "&UNK_00032869 + unaff_EDI" (pointer_expression "&UNK_00032869" (& "&") (identifier "UNK_00032869")) (+ "+") (identifier "unaff_EDI")) (, ",") (identifier "iVar6") (, ",") (identifier "local_4c") (, ",") (identifier "param_1") (, ",") (identifier "param_2") () ")"))) (; ";"))) (} "}"))) (} "}")) (else_clause "else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;" (else "else") (if_statement "if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;" (if "if") (parenthesized_expression "((int)fVar13 < (int)fVar12)" (( "(") (binary_expression "(int)fVar13 < (int)fVar12" (cast_expression "(int)fVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "fVar13")) (< "<") (cast_expression "(int)fVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "fVar12"))) () ")")) (goto_statement "goto LAB_000d69ff;" (goto "goto") (statement_identifier "LAB_000d69ff") (; ";"))))) (if_statement "if (extraout_ECX == 0) {\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }" (if "if") (parenthesized_expression "(extraout_ECX == 0)" (( "(") (binary_expression "extraout_ECX == 0" (identifier "extraout_ECX") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000d69bd:\n                  iVar6 = iVar6 + 1;\n                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;\n                  goto LAB_000d69c9;\n                }" ({ "{") (labeled_statement "LAB_000d69bd:\n                  iVar6 = iVar6 + 1;" (statement_identifier "LAB_000d69bd") (: ":") (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" (identifier "iVar6") (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";"))) (if_statement "if (*(int *)(iVar5 + 0x10) <= iVar6) break;" (if "if") (parenthesized_expression "(*(int *)(iVar5 + 0x10) <= iVar6)" (( "(") (binary_expression "*(int *)(iVar5 + 0x10) <= iVar6" (pointer_expression "*(int *)(iVar5 + 0x10)" (* "*") (cast_expression "(int *)(iVar5 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x10)" (( "(") (binary_expression "iVar5 + 0x10" (identifier "iVar5") (+ "+") (number_literal "0x10")) () ")")))) (<= "<=") (identifier "iVar6")) () ")")) (break_statement "break;" (break "break") (; ";"))) (goto_statement "goto LAB_000d69c9;" (goto "goto") (statement_identifier "LAB_000d69c9") (; ";")) (} "}"))) (expression_statement "uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);" (assignment_expression "uVar3 = *(uint *)(extraout_ECX + iVar6 * 8)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(extraout_ECX + iVar6 * 8)" (* "*") (cast_expression "(uint *)(extraout_ECX + iVar6 * 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_ECX + iVar6 * 8)" (( "(") (binary_expression "extraout_ECX + iVar6 * 8" (identifier "extraout_ECX") (+ "+") (binary_expression "iVar6 * 8" (identifier "iVar6") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);" (assignment_expression "uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(extraout_ECX + 4 + iVar6 * 8)" (* "*") (cast_expression "(uint *)(extraout_ECX + 4 + iVar6 * 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_ECX + 4 + iVar6 * 8)" (( "(") (binary_expression "extraout_ECX + 4 + iVar6 * 8" (binary_expression "extraout_ECX + 4" (identifier "extraout_ECX") (+ "+") (number_literal "4")) (+ "+") (binary_expression "iVar6 * 8" (identifier "iVar6") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18);" (assignment_expression "fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18)" (identifier "fVar10") (= "=") (cast_expression "(float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18)" (( "(") (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                                uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" (identifier "uVar3") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" (( "(") (binary_expression "uVar3 & 0xff0000" (identifier "uVar3") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" (( "(") (binary_expression "uVar3 & 0xff00" (identifier "uVar3") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar3 << 0x18" (identifier "uVar3") (<< "<<") (number_literal "0x18"))) () ")")))) (; ";")) (expression_statement "fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18);" (assignment_expression "fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18)" (identifier "fVar8") (= "=") (cast_expression "(float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18)" (( "(") (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n                               uVar4 << 0x18" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" (identifier "uVar4") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" (( "(") (binary_expression "uVar4 & 0xff0000" (identifier "uVar4") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" (( "(") (binary_expression "uVar4 & 0xff00" (identifier "uVar4") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar4 << 0x18" (identifier "uVar4") (<< "<<") (number_literal "0x18"))) () ")")))) (; ";")) (if_statement "if (*(int *)(iVar5 + 0xc) == 0) {\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }" (if "if") (parenthesized_expression "(*(int *)(iVar5 + 0xc) == 0)" (( "(") (binary_expression "*(int *)(iVar5 + 0xc) == 0" (pointer_expression "*(int *)(iVar5 + 0xc)" (* "*") (cast_expression "(int *)(iVar5 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0xc)" (( "(") (binary_expression "iVar5 + 0xc" (identifier "iVar5") (+ "+") (number_literal "0xc")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;\n                  goto LAB_000d69bd;\n                }" ({ "{") (if_statement "if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;" (if "if") (parenthesized_expression "((fVar12 < fVar10) || (fVar8 < fVar13))" (( "(") (binary_expression "(fVar12 < fVar10) || (fVar8 < fVar13)" (parenthesized_expression "(fVar12 < fVar10)" (( "(") (binary_expression "fVar12 < fVar10" (identifier "fVar12") (< "<") (identifier "fVar10")) () ")")) (|| "||") (parenthesized_expression "(fVar8 < fVar13)" (( "(") (binary_expression "fVar8 < fVar13" (identifier "fVar8") (< "<") (identifier "fVar13")) () ")"))) () ")")) (goto_statement "goto LAB_000d6998;" (goto "goto") (statement_identifier "LAB_000d6998") (; ";"))) (goto_statement "goto LAB_000d69bd;" (goto "goto") (statement_identifier "LAB_000d69bd") (; ";")) (} "}"))) (if_statement "if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }" (if "if") (parenthesized_expression "(((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10))" (( "(") (binary_expression "((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)" (parenthesized_expression "((int)fVar8 < (int)fVar13)" (( "(") (binary_expression "(int)fVar8 < (int)fVar13" (cast_expression "(int)fVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "fVar8")) (< "<") (cast_expression "(int)fVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "fVar13"))) () ")")) (|| "||") (parenthesized_expression "((int)fVar12 < (int)fVar10)" (( "(") (binary_expression "(int)fVar12 < (int)fVar10" (cast_expression "(int)fVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "fVar12")) (< "<") (cast_expression "(int)fVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "fVar10"))) () ")"))) () ")")) (compound_statement "{\nLAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);\n                  goto LAB_000d69bd;\n                }" ({ "{") (labeled_statement "LAB_000d6998:\n                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);" (statement_identifier "LAB_000d6998") (: ":") (expression_statement "FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);" (call_expression "FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2)" (identifier "FUN_000789a0") (argument_list "(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2)" (( "(") (identifier "iVar5") (, ",") (binary_expression "unaff_EDI + 0x32899" (identifier "unaff_EDI") (+ "+") (number_literal "0x32899")) (, ",") (identifier "iVar6") (, ",") (identifier "local_4c") (, ",") (identifier "param_1") (, ",") (identifier "param_2") () ")"))) (; ";"))) (goto_statement "goto LAB_000d69bd;" (goto "goto") (statement_identifier "LAB_000d69bd") (; ";")) (} "}"))) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" (identifier "iVar6") (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar6 < *(int *)(iVar5 + 0x10))" (( "(") (binary_expression "iVar6 < *(int *)(iVar5 + 0x10)" (identifier "iVar6") (< "<") (pointer_expression "*(int *)(iVar5 + 0x10)" (* "*") (cast_expression "(int *)(iVar5 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x10)" (( "(") (binary_expression "iVar5 + 0x10" (identifier "iVar5") (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (; ";"))) (} "}"))) (if_statement "if (local_38 == 0) {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }\n            else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }" (if "if") (parenthesized_expression "(local_38 == 0)" (( "(") (binary_expression "local_38 == 0" (identifier "local_38") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;\n            }" ({ "{") (expression_statement "FUN_000d3db0(uVar11,uVar9,param_1,param_2);" (call_expression "FUN_000d3db0(uVar11,uVar9,param_1,param_2)" (identifier "FUN_000d3db0") (argument_list "(uVar11,uVar9,param_1,param_2)" (( "(") (identifier "uVar11") (, ",") (identifier "uVar9") (, ",") (identifier "param_1") (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "*(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;" (assignment_expression "*(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1" (pointer_expression "*(int *)(iVar5 + 0x20)" (* "*") (cast_expression "(int *)(iVar5 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x20)" (( "(") (binary_expression "iVar5 + 0x20" (identifier "iVar5") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (binary_expression "*(int *)(iVar5 + 0x20) + 1" (pointer_expression "*(int *)(iVar5 + 0x20)" (* "*") (cast_expression "(int *)(iVar5 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x20)" (( "(") (binary_expression "iVar5 + 0x20" (identifier "iVar5") (+ "+") (number_literal "0x20")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }" (else "else") (compound_statement "{\n              FUN_000d3db0(uVar11,uVar9,param_1,param_2);\n              FUN_000d67f0(uVar11,uVar9);\n              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;\n            }" ({ "{") (expression_statement "FUN_000d3db0(uVar11,uVar9,param_1,param_2);" (call_expression "FUN_000d3db0(uVar11,uVar9,param_1,param_2)" (identifier "FUN_000d3db0") (argument_list "(uVar11,uVar9,param_1,param_2)" (( "(") (identifier "uVar11") (, ",") (identifier "uVar9") (, ",") (identifier "param_1") (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "FUN_000d67f0(uVar11,uVar9);" (call_expression "FUN_000d67f0(uVar11,uVar9)" (identifier "FUN_000d67f0") (argument_list "(uVar11,uVar9)" (( "(") (identifier "uVar11") (, ",") (identifier "uVar9") () ")"))) (; ";")) (expression_statement "*(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;" (assignment_expression "*(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1" (pointer_expression "*(int *)(iVar5 + 0x24)" (* "*") (cast_expression "(int *)(iVar5 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x24)" (( "(") (binary_expression "iVar5 + 0x24" (identifier "iVar5") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (binary_expression "*(int *)(iVar5 + 0x24) + 1" (pointer_expression "*(int *)(iVar5 + 0x24)" (* "*") (cast_expression "(int *)(iVar5 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x24)" (( "(") (binary_expression "iVar5 + 0x24" (identifier "iVar5") (+ "+") (number_literal "0x24")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "local_4c = local_4c + 1;" (assignment_expression "local_4c = local_4c + 1" (identifier "local_4c") (= "=") (binary_expression "local_4c + 1" (identifier "local_4c") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (local_4c == iVar1) break;" (if "if") (parenthesized_expression "(local_4c == iVar1)" (( "(") (binary_expression "local_4c == iVar1" (identifier "local_4c") (== "==") (identifier "iVar1")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar7 = *(int *)(iVar5 + 0x10);" (assignment_expression "iVar7 = *(int *)(iVar5 + 0x10)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(iVar5 + 0x10)" (* "*") (cast_expression "(int *)(iVar5 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x10)" (( "(") (binary_expression "iVar5 + 0x10" (identifier "iVar5") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "iVar6 = iVar7 + 1;" (assignment_expression "iVar6 = iVar7 + 1" (identifier "iVar6") (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }" (else "else") (compound_statement "{\n        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);\n      }" ({ "{") (expression_statement "FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);" (call_expression "FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n)" (identifier "FUN_000789a0") (argument_list "(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n)" (( "(") (identifier "iVar5") (, ",") (binary_expression "unaff_EDI + 0x32831" (identifier "unaff_EDI") (+ "+") (number_literal "0x32831")) (, ",") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "iVar1") (, ",") (identifier "__n") () ")"))) (; ";")) (} "}")))) (} "}")))) (expression_statement "FUN_000264d0(local_3c);" (call_expression "FUN_000264d0(local_3c)" (identifier "FUN_000264d0") (argument_list "(local_3c)" (( "(") (identifier "local_3c") () ")"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 *pCheck,int iDepth,type_2 *aParent,type_3 iNode)

{
  int var_20;
  type_4 *puVar2;
  type_4 var_22;
  type_4 var_24;
  type_1 *pCheck_00;
  int var_8;
  int var_19;
  float var_28;
  void *__src;
  type_5 *var_2;
  int var_16;
  type_4 var_23;
  float var_27;
  type_1 *pCheck_01;
  float var_26;
  size_t __n;
  float var_25;
  int var_4;
  type_6 uVar12;
  type_1 *aParent_00;
  type_7 in_stack_ffffffa4;
  int var_21;
  type_8 *var_12;
  type_4 var_29;
  
  uVar12 = var_1();
  var_29 = (type_4)((type_9)uVar12 >> 0x20);
  pCheck_00 = (type_1 *)uVar12;
  if (pCheck_00->rc == 0) {
    var_2 = pCheck_00->pGetNode;
    if (var_2 == (type_5 *)0x0) {
      var_2 = var_3(pCheck_00,(char *)(var_4 + 0x327bd),pCheck_00->zDb,
                                pCheck_00->zTab);
      pCheck_00->pGetNode = var_2;
      if (pCheck_00->rc != 0) {
        return;
      }
    }
    __n = 0;
    var_5(var_2,1,var_6(iDepth,pCheck));
    var_8 = var_7(pCheck_00->pGetNode);
    var_12 = (type_8 *)0x0;
    if (var_8 == 100) {
      __n = var_9(pCheck_00->pGetNode,0);
      __src = var_10(pCheck_00->pGetNode,0);
      var_12 = (type_8 *)var_11((type_10)(int)__n);
      if (var_12 == (type_8 *)0x0) {
        pCheck_00->rc = 7;
        __n = 0;
      }
      else {
        var_13(var_12,__src,__n);
      }
    }
    var_8 = var_14(pCheck_00->pGetNode);
    if ((pCheck_00->rc == 0) && (pCheck_00->rc = var_8, var_8 == 0)) {
      if (var_12 == (type_8 *)0x0) {
        var_15(pCheck_00,(char *)(var_4 + 0x327ed),pCheck,iDepth);
        return;
      }
    }
    else if (var_12 == (type_8 *)0x0) {
      return;
    }
    if ((int)__n < 4) {
      var_15(pCheck_00,(char *)(var_4 + 0x3280d),pCheck,iDepth,__n);
    }
    else {
      if ((var_16 == 0) &&
         (var_29 = (type_4)var_17(*var_12,var_12[1]), 0x28 < var_17(*var_12,var_12[1])))
      {
        var_15(pCheck_00,(char *)(var_4 + 0x23c8c),var_29);
        var_18(var_12);
        return;
      }
      var_20 = (type_4)(type_11)var_12[2] * 0x100 + (type_4)(type_11)var_12[3];
      var_19 = pCheck_00->nDim;
      var_8 = var_19 + 1;
      if (var_20 * var_8 * 8 + 3 < (int)__n) {
        if (var_20 != 0) {
          var_21 = 0;
          do {
            puVar2 = (type_4 *)(var_12 + var_8 * var_21 * 8 + 4);
            var_23 = *puVar2;
            var_22 = puVar2[1];
            pCheck_01 = (type_1 *)
                        (var_22 >> 0x18 | (var_22 & 0xff0000) >> 8 | (var_22 & 0xff00) << 8 |
                        var_22 << 0x18);
            var_23 = var_23 >> 0x18 | (var_23 & 0xff0000) >> 8 | (var_23 & 0xff00) << 8 | var_23 << 0x18;
            var_8 = 0;
            if (0 < var_19) {
LAB_000d69c9:
              do {
                var_22 = puVar2[var_8 * 2 + 2];
                var_24 = puVar2[var_8 * 2 + 3];
                var_26 = (float)(var_22 >> 0x18 | (var_22 & 0xff0000) >> 8 | (var_22 & 0xff00) << 8 |
                                var_22 << 0x18);
                var_25 = (float)(var_24 >> 0x18 | (var_24 & 0xff0000) >> 8 | (var_24 & 0xff00) << 8 |
                                var_24 << 0x18);
                if (pCheck_00->bInt == 0) {
                  if (var_25 < var_26) {
LAB_000d69ff:
                    var_15(pCheck_00,&UNK_00032869 + var_4,var_8,var_21,pCheck,
                                        iDepth);
                  }
                }
                else if ((int)var_25 < (int)var_26) goto LAB_000d69ff;
                if (var_16 == 0) {
LAB_000d69bd:
                  var_8 = var_8 + 1;
                  if (pCheck_00->nDim <= var_8) break;
                  goto LAB_000d69c9;
                }
                var_22 = *(type_4 *)(var_16 + var_8 * 8);
                var_24 = *(type_4 *)(var_16 + 4 + var_8 * 8);
                var_27 = (float)(var_22 >> 0x18 | (var_22 & 0xff0000) >> 8 | (var_22 & 0xff00) << 8 |
                               var_22 << 0x18);
                var_28 = (float)(var_24 >> 0x18 | (var_24 & 0xff0000) >> 8 | (var_24 & 0xff00) << 8 |
                               var_24 << 0x18);
                if (pCheck_00->bInt == 0) {
                  if ((var_26 < var_27) || (var_28 < var_25)) goto LAB_000d6998;
                  goto LAB_000d69bd;
                }
                if (((int)var_28 < (int)var_25) || ((int)var_26 < (int)var_27)) {
LAB_000d6998:
                  var_15(pCheck_00,(char *)(var_4 + 0x32899),var_8,var_21,pCheck,
                                      iDepth);
                  goto LAB_000d69bd;
                }
                var_8 = var_8 + 1;
              } while (var_8 < pCheck_00->nDim);
            }
            if (var_29 == 0) {
              var_30(pCheck_00,1,var_6(var_23,pCheck_01),var_6(iDepth,pCheck));
              pCheck_00->nLeaf = pCheck_00->nLeaf + 1;
            }
            else {
              aParent_00 = pCheck;
              var_8 = iDepth;
              var_30(pCheck_00,0,var_6(var_23,pCheck_01),var_6(iDepth,pCheck));
              function_1(pCheck_01,var_23,(type_2 *)aParent_00,var_6(in_stack_ffffffa4,var_8));
              pCheck_00->nNonLeaf = pCheck_00->nNonLeaf + 1;
            }
            var_21 = var_21 + 1;
            if (var_21 == var_20) break;
            var_19 = pCheck_00->nDim;
            var_8 = var_19 + 1;
          } while( true );
        }
      }
      else {
        var_15(pCheck_00,(char *)(var_4 + 0x32831),pCheck,iDepth,var_20,__n);
      }
    }
    var_18(var_12);
  }
  return;
}


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

void MASKED(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  uint *puVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  float fVar8;
  void *__src;
  int extraout_ECX;
  uint uVar9;
  float fVar10;
  uint uVar11;
  float fVar12;
  size_t __n;
  float fVar13;
  int unaff_EDI;
  undefined8 uVar14;
  int local_4c;
  undefined1 *local_3c;
  uint local_38;
  
  uVar14 = FUN_0001af1a();
  local_38 = (uint)((ulonglong)uVar14 >> 0x20);
  iVar5 = (int)uVar14;
  if (*(int *)(iVar5 + 0x28) == 0) {
    iVar6 = *(int *)(iVar5 + 0x14);
    if (iVar6 == 0) {
      iVar6 = FUN_000c3d10(iVar5,unaff_EDI + 0x327bd,*(undefined4 *)(iVar5 + 4),
                           *(undefined4 *)(iVar5 + 8));
      *(int *)(iVar5 + 0x14) = iVar6;
      if (*(int *)(iVar5 + 0x28) != 0) {
        return;
      }
    }
    __n = 0;
    FUN_00057c50(iVar6,1,param_1,param_2);
    iVar6 = FUN_000ae4d0(*(undefined4 *)(iVar5 + 0x14));
    local_3c = (undefined1 *)0x0;
    if (iVar6 == 100) {
      __n = FUN_0004e4d0(*(undefined4 *)(iVar5 + 0x14),0);
      __src = (void *)FUN_0004e800(*(undefined4 *)(iVar5 + 0x14),0);
      local_3c = (undefined1 *)FUN_000408d0(__n,(int)__n >> 0x1f);
      if (local_3c == (undefined1 *)0x0) {
        *(undefined4 *)(iVar5 + 0x28) = 7;
        __n = 0;
      }
      else {
        memcpy(local_3c,__src,__n);
      }
    }
    iVar6 = FUN_0008fe60(*(undefined4 *)(iVar5 + 0x14));
    if ((*(int *)(iVar5 + 0x28) == 0) && (*(int *)(iVar5 + 0x28) = iVar6, iVar6 == 0)) {
      if (local_3c == (undefined1 *)0x0) {
        FUN_000789a0(iVar5,unaff_EDI + 0x327ed,param_1,param_2);
        return;
      }
    }
    else if (local_3c == (undefined1 *)0x0) {
      return;
    }
    if ((int)__n < 4) {
      FUN_000789a0(iVar5,unaff_EDI + 0x3280d,param_1,param_2,__n);
    }
    else {
      if ((extraout_ECX == 0) &&
         (local_38 = (uint)CONCAT11(*local_3c,local_3c[1]), 0x28 < CONCAT11(*local_3c,local_3c[1])))
      {
        FUN_000789a0(iVar5,unaff_EDI + 0x23c8c,local_38);
        FUN_000264d0(local_3c);
        return;
      }
      iVar1 = (uint)(byte)local_3c[2] * 0x100 + (uint)(byte)local_3c[3];
      iVar7 = *(int *)(iVar5 + 0x10);
      iVar6 = iVar7 + 1;
      if (iVar1 * iVar6 * 8 + 3 < (int)__n) {
        if (iVar1 != 0) {
          local_4c = 0;
          do {
            puVar2 = (uint *)(local_3c + iVar6 * local_4c * 8 + 4);
            uVar9 = *puVar2;
            uVar11 = puVar2[1];
            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |
                     uVar11 << 0x18;
            uVar9 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;
            iVar6 = 0;
            if (0 < iVar7) {
LAB_000d69c9:
              do {
                uVar3 = puVar2[iVar6 * 2 + 2];
                uVar4 = puVar2[iVar6 * 2 + 3];
                fVar12 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |
                                uVar3 << 0x18);
                fVar13 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |
                                uVar4 << 0x18);
                if (*(int *)(iVar5 + 0xc) == 0) {
                  if (fVar13 < fVar12) {
LAB_000d69ff:
                    FUN_000789a0(iVar5,&UNK_00032869 + unaff_EDI,iVar6,local_4c,param_1,param_2);
                  }
                }
                else if ((int)fVar13 < (int)fVar12) goto LAB_000d69ff;
                if (extraout_ECX == 0) {
LAB_000d69bd:
                  iVar6 = iVar6 + 1;
                  if (*(int *)(iVar5 + 0x10) <= iVar6) break;
                  goto LAB_000d69c9;
                }
                uVar3 = *(uint *)(extraout_ECX + iVar6 * 8);
                uVar4 = *(uint *)(extraout_ECX + 4 + iVar6 * 8);
                fVar10 = (float)(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |
                                uVar3 << 0x18);
                fVar8 = (float)(uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |
                               uVar4 << 0x18);
                if (*(int *)(iVar5 + 0xc) == 0) {
                  if ((fVar12 < fVar10) || (fVar8 < fVar13)) goto LAB_000d6998;
                  goto LAB_000d69bd;
                }
                if (((int)fVar8 < (int)fVar13) || ((int)fVar12 < (int)fVar10)) {
LAB_000d6998:
                  FUN_000789a0(iVar5,unaff_EDI + 0x32899,iVar6,local_4c,param_1,param_2);
                  goto LAB_000d69bd;
                }
                iVar6 = iVar6 + 1;
              } while (iVar6 < *(int *)(iVar5 + 0x10));
            }
            if (local_38 == 0) {
              FUN_000d3db0(uVar11,uVar9,param_1,param_2);
              *(int *)(iVar5 + 0x20) = *(int *)(iVar5 + 0x20) + 1;
            }
            else {
              FUN_000d3db0(uVar11,uVar9,param_1,param_2);
              MASKED(uVar11,uVar9);
              *(int *)(iVar5 + 0x24) = *(int *)(iVar5 + 0x24) + 1;
            }
            local_4c = local_4c + 1;
            if (local_4c == iVar1) break;
            iVar7 = *(int *)(iVar5 + 0x10);
            iVar6 = iVar7 + 1;
          } while( true );
        }
      }
      else {
        FUN_000789a0(iVar5,unaff_EDI + 0x32831,param_1,param_2,iVar1,__n);
      }
    }
    FUN_000264d0(local_3c);
  }
  return;
}

