
/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */
/* WARNING: Removing unreachable block (ram,0x0003cf18) */
/* WARNING: Enum "GravityType": Some values do not have unique names */
/* WARNING: Enum "DisposeType": Some values do not have unique names */
/* WARNING: Enum "ChannelType": Some values do not have unique names */
/* WARNING: Enum "PixelChannel": Some values do not have unique names */
/* WARNING: Enum "ExceptionType": Some values do not have unique names */
/* DWARF original prototype: void GetImageDepth._omp_fn.2(anon_struct_20_5_8a8fa108 * param_0) */

void __thiscall GetImageDepth__omp_fn_2(anon_struct_20_5_8a8fa108 *this)

{
  uint *puVar1;
  double dVar2;
  ulonglong uVar3;
  longlong lVar4;
  Image *pIVar5;
  size_t *psVar6;
  CacheView *cache_view;
  ExceptionInfo *exception;
  PixelChannelMap *pPVar7;
  byte bVar8;
  double dVar9;
  double dVar10;
  double dVar11;
  uint uVar12;
  double dVar13;
  int iVar14;
  int iVar15;
  uint uVar16;
  uint uVar17;
  size_t sVar18;
  byte bVar19;
  int iVar20;
  int iVar21;
  uint uVar22;
  Quantum *local_44;
  int local_40;
  int local_3c;
  undefined4 local_2c;
  int iStack_28;
  
  pIVar5 = this->image;
  local_3c = omp_get_num_threads();
  iVar14 = omp_get_thread_num();
  iVar15 = (int)pIVar5->rows / local_3c;
  local_3c = (int)pIVar5->rows % local_3c;
  if (iVar14 < local_3c) {
    iVar15 = iVar15 + 1;
    local_3c = 0;
  }
  local_3c = local_3c + iVar14 * iVar15;
  iVar15 = iVar15 + local_3c;
  if (local_3c < iVar15) {
    psVar6 = this->current_depth;
    cache_view = this->image_view;
    exception = this->exception;
    do {
      iVar14 = omp_get_thread_num();
      if ((this->status != MagickFalse) &&
         (local_44 = GetCacheViewVirtualPixels(cache_view,0,local_3c,pIVar5->columns,1,exception),
         local_44 != (Quantum *)0x0)) {
        puVar1 = psVar6 + iVar14;
        uVar22 = *puVar1;
        if (0 < (int)pIVar5->columns) {
          local_40 = 0;
          do {
            sVar18 = pIVar5->number_channels;
            if (0 < (int)sVar18) {
              pPVar7 = pIVar5->channel_map;
              iVar14 = 0;
              do {
                dVar13 = DAT_0029f738;
                if (((pPVar7[pPVar7[iVar14].channel].traits & UpdatePixelTrait) !=
                     UndefinedPixelTrait) && (uVar22 < 0x10)) {
                  dVar2 = local_44[iVar14];
                  do {
                    if (uVar22 == 0) {
                      if (NAN(dVar2)) {
                        dVar9 = 0.0;
                      }
                      else {
                        if (0.0 < dVar2) {
                          dVar10 = 0.0;
                          iVar20 = 0;
                          iVar21 = 0;
                          goto LAB_0003ce0c;
                        }
                        dVar9 = dVar13 * 0.0 * (double)DAT_0029f710;
                      }
                    }
                    else {
                      bVar19 = (byte)(uVar22 - 1);
                      bVar8 = bVar19 & 0x1f;
                      uVar16 = 2 << (bVar19 & 0x1f);
                      uVar17 = uVar16;
                      uVar12 = 0 << bVar8 | 2U >> 0x20 - bVar8;
                      if ((uVar22 - 1 & 0x20) != 0) {
                        uVar17 = 0;
                        uVar12 = uVar16;
                      }
                      iVar20 = uVar17 - 1;
                      dVar10 = (double)(short)iVar20;
                      iVar21 = (uVar12 - 1) + (uint)(uVar17 != 0);
                      if (dVar2 <= 0.0) {
                        if (DAT_0029f138 <= dVar10) {
                          dVar9 = 0.0;
LAB_0003cea2:
                          dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;
                        }
                        else {
                          dVar9 = 0.0;
LAB_0003cfe6:
                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;
                        }
                      }
                      else {
LAB_0003ce0c:
                        dVar9 = (double)DAT_0029f710;
                        dVar11 = (dVar2 * dVar10) / dVar9;
                        if (dVar11 < (double)DAT_0029f714) {
                          dVar11 = dVar11 + (double)DAT_0029f124;
                          if ((double)DAT_0029f134 <= dVar11) {
                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);
                            local_2c = (undefined4)lVar4;
                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);
                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);
                          }
                          else {
                            uVar3 = (ulonglong)ROUND(dVar11);
                          }
                          if (uVar3 <= CONCAT44(iVar21,iVar20)) {
                            dVar9 = (double)(short)uVar3;
                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;
                            goto LAB_0003cea2;
                          }
                          dVar9 = (double)DAT_0029f710;
                        }
                      }
                    }
                    if (dVar9 == dVar2) {
                      uVar22 = *puVar1;
                      break;
                    }
                    uVar22 = uVar22 + 1;
                    *puVar1 = uVar22;
                  } while (uVar22 != 0x10);
                }
                iVar14 = iVar14 + 1;
                sVar18 = pIVar5->number_channels;
              } while (iVar14 < (int)sVar18);
            }
            local_40 = local_40 + 1;
            local_44 = local_44 + sVar18;
          } while (local_40 < (int)pIVar5->columns);
        }
        if (uVar22 == 0x10) {
          this->status = MagickFalse;
        }
      }
      local_3c = local_3c + 1;
    } while (iVar15 != local_3c);
  }
  return;
}



/* WARNING: Removing unreachable block (ram,0x0003cf18) */

void FUN_0003cc70(int *param_1)

{
  uint *puVar1;
  double dVar2;
  double dVar3;
  ulonglong uVar4;
  longlong lVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  byte bVar10;
  double dVar11;
  double dVar12;
  double dVar13;
  uint uVar14;
  int iVar15;
  int iVar16;
  int iVar17;
  uint uVar18;
  uint uVar19;
  byte bVar20;
  int iVar21;
  int unaff_EBP;
  uint uVar22;
  int iVar23;
  int local_44;
  int local_40;
  int local_3c;
  undefined4 local_2c;
  int iStack_28;
  
  FUN_00042799();
  iVar6 = *param_1;
  local_3c = omp_get_num_threads();
  iVar15 = omp_get_thread_num();
  iVar16 = *(int *)(iVar6 + 0x1c) / local_3c;
  local_3c = *(int *)(iVar6 + 0x1c) % local_3c;
  if (iVar15 < local_3c) {
    iVar16 = iVar16 + 1;
    local_3c = 0;
  }
  local_3c = local_3c + iVar15 * iVar16;
  iVar16 = iVar16 + local_3c;
  if (local_3c < iVar16) {
    iVar15 = param_1[3];
    iVar7 = param_1[2];
    iVar8 = param_1[1];
    do {
      iVar17 = omp_get_thread_num();
      if ((param_1[4] != 0) &&
         (local_44 = GetCacheViewVirtualPixels
                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),
         local_44 != 0)) {
        puVar1 = (uint *)(iVar15 + iVar17 * 4);
        uVar22 = *puVar1;
        if (0 < *(int *)(iVar6 + 0x18)) {
          local_40 = 0;
          do {
            iVar17 = *(int *)(iVar6 + 0x298);
            if (0 < iVar17) {
              iVar9 = *(int *)(iVar6 + 0x2a8);
              iVar23 = 0;
              do {
                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&
                   (uVar22 < 0x10)) {
                  dVar2 = *(double *)(local_44 + iVar23 * 8);
                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);
                  do {
                    if (uVar22 == 0) {
                      if (NAN(dVar2)) {
                        dVar11 = 0.0;
                      }
                      else {
                        if (0.0 < dVar2) {
                          dVar12 = 0.0;
                          iVar17 = 0;
                          iVar21 = 0;
                          goto LAB_0003ce0c;
                        }
                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);
                      }
                    }
                    else {
                      bVar20 = (byte)(uVar22 - 1);
                      bVar10 = bVar20 & 0x1f;
                      uVar18 = 2 << (bVar20 & 0x1f);
                      uVar19 = uVar18;
                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;
                      if ((uVar22 - 1 & 0x20) != 0) {
                        uVar19 = 0;
                        uVar14 = uVar18;
                      }
                      iVar17 = uVar19 - 1;
                      dVar12 = (double)(short)iVar17;
                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);
                      if (dVar2 <= 0.0) {
                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {
                          dVar11 = 0.0;
LAB_0003cea2:
                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *
                                   (double)*(float *)(unaff_EBP + 0x262a9a);
                        }
                        else {
                          dVar11 = 0.0;
LAB_0003cfe6:
                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);
                        }
                      }
                      else {
LAB_0003ce0c:
                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);
                        dVar13 = (dVar2 * dVar12) / dVar11;
                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {
                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);
                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {
                            lVar5 = (longlong)
                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));
                            local_2c = (undefined4)lVar5;
                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);
                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);
                          }
                          else {
                            uVar4 = (ulonglong)ROUND(dVar13);
                          }
                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {
                            dVar11 = (double)(short)uVar4;
                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;
                            goto LAB_0003cea2;
                          }
                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);
                        }
                      }
                    }
                    if (dVar11 == dVar2) {
                      uVar22 = *puVar1;
                      break;
                    }
                    uVar22 = uVar22 + 1;
                    *puVar1 = uVar22;
                  } while (uVar22 != 0x10);
                }
                iVar23 = iVar23 + 1;
                iVar17 = *(int *)(iVar6 + 0x298);
              } while (iVar23 < iVar17);
            }
            local_40 = local_40 + 1;
            local_44 = local_44 + iVar17 * 8;
          } while (local_40 < *(int *)(iVar6 + 0x18));
        }
        if (uVar22 == 0x10) {
          param_1[4] = 0;
        }
      }
      local_3c = local_3c + 1;
    } while (iVar16 != local_3c);
  }
  return;
}


PUSH EBP
CALL 0x00042799
ADD EBP,0x39c38a
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x4c
MOV EAX,dword ptr [ESP + 0x60]
MOV EBX,EBP
MOV EAX,dword ptr [EAX]
MOV EDI,EAX
MOV dword ptr [ESP + 0xc],EAX
CALL 0x00030850
MOV ESI,EAX
CALL 0x000317c0
MOV ECX,EAX
MOV EAX,dword ptr [EDI + 0x1c]
CDQ
IDIV ESI
CMP ECX,EDX
JGE 0x0003ccad
ADD EAX,0x1
XOR EDX,EDX
IMUL ECX,EAX
MOV EDI,EAX
ADD EDX,ECX
ADD EDI,EDX
MOV dword ptr [ESP + 0x20],EDX
CMP EDX,EDI
MOV dword ptr [ESP + 0x24],EDI
JGE 0x0003cfb3
MOV EAX,dword ptr [ESP + 0x60]
MOV EAX,dword ptr [EAX + 0xc]
MOV dword ptr [ESP + 0x38],EAX
MOV EAX,dword ptr [ESP + 0x60]
MOV EAX,dword ptr [EAX + 0x8]
MOV dword ptr [ESP + 0x28],EAX
MOV EAX,dword ptr [ESP + 0x60]
MOV EAX,dword ptr [EAX + 0x4]
MOV dword ptr [ESP + 0x2c],EAX
MOV ESI,ESI
LEA EDI,[EDI]
MOV EBX,EBP
CALL 0x000317c0
MOV ESI,EAX
MOV EAX,dword ptr [ESP + 0x60]
MOV EDI,dword ptr [EAX + 0x10]
TEST EDI,EDI
JZ 0x0003cfa0
SUB ESP,0x8
PUSH dword ptr [ESP + 0x34]
PUSH 0x1
MOV EAX,dword ptr [ESP + 0x1c]
PUSH dword ptr [EAX + 0x18]
PUSH dword ptr [ESP + 0x34]
PUSH 0x0
PUSH dword ptr [ESP + 0x44]
CALL 0x00031280
MOV dword ptr [ESP + 0x38],EAX
ADD ESP,0x20
TEST EAX,EAX
JZ 0x0003cfa0
MOV EDX,dword ptr [ESP + 0x38]
MOV EAX,dword ptr [ESP + 0xc]
LEA EDX,[EDX + ESI*0x4]
MOV ESI,dword ptr [EAX + 0x18]
MOV dword ptr [ESP + 0x4],EDX
MOV EDI,dword ptr [EDX]
TEST ESI,ESI
JLE 0x0003cf8c
MOV dword ptr [ESP + 0x1c],0x0
LEA ESI,[ESI]
MOV EAX,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [EAX + 0x298]
TEST EAX,EAX
JLE 0x0003cf6b
MOV EAX,dword ptr [ESP + 0xc]
XOR ESI,ESI
MOV EAX,dword ptr [EAX + 0x2a8]
MOV dword ptr [ESP + 0x14],EAX
MOV EAX,ESI
MOV ESI,EDI
MOV EDI,EAX
NOP
LEA ESI,[ESI]
MOV EBX,dword ptr [ESP + 0x14]
LEA EAX,[EDI + EDI*0x2]
MOV EAX,dword ptr [EBX + EAX*0x4]
LEA EAX,[EAX + EAX*0x2]
TEST byte ptr [EBX + EAX*0x4 + 0x4],0x2
JZ 0x0003cf54
CMP ESI,0xf
JA 0x0003cf54
MOV EAX,dword ptr [ESP + 0x18]
FLD qword ptr [EAX + EDI*0x8]
FLD qword ptr [EBP + 0xffec6738]
JMP 0x0003cee6
LEA ECX,[ESI + -0x1]
MOV EAX,0x2
MOV EDX,0x0
SHLD EDX,EAX,CL
XOR EBX,EBX
SHL EAX,CL
TEST CL,0x20
CMOVNZ EDX,EAX
CMOVNZ EAX,EBX
ADD EAX,-0x1
MOV word ptr [ESP + 0x8],AX
FILD word ptr [ESP + 0x8]
FXCH ST2
ADC EDX,-0x1
MOV ECX,EAX
FUCOMI ST0,ST0
MOV EBX,EDX
JP 0x0003cfc0
FLDZ
FUCOMIP ST0,ST1
JNC 0x0003cfc0
FLD dword ptr [EBP + 0xffec6710]
FLD ST1
FMUL ST4
FDIV ST0,ST1
FLD dword ptr [EBP + 0xffec6714]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JNC 0x0003cec0
FSTP ST1
FADD dword ptr [EBP + 0xffec6124]
FLD dword ptr [EBP + 0xffec6134]
FXCH
FUCOMI ST0,ST1
JNC 0x0003cff8
FSTP ST1
FNSTCW word ptr [ESP + 0x3e]
MOVZX EAX,word ptr [ESP + 0x3e]
OR AH,0xc
MOV word ptr [ESP + 0x3c],AX
FLDCW word ptr [ESP + 0x3c]
FISTP qword ptr [ESP + 0x30]
FLDCW word ptr [ESP + 0x3e]
MOV EAX,dword ptr [ESP + 0x30]
MOV EDX,dword ptr [ESP + 0x34]
CMP EBX,EDX
JC 0x0003cf30
JBE 0x0003cf18
MOV word ptr [ESP + 0x8],AX
FILD word ptr [ESP + 0x8]
FLD qword ptr [EBP + 0xffec6138]
FXCH ST4
FUCOMI ST0,ST4
FSTP ST4
JC 0x0003cfe0
FXCH ST3
JMP 0x0003cea2
FXCH ST3
FDIVR dword ptr [EBP + 0xffec6718]
FMULP ST3
FXCH ST2
FMUL dword ptr [EBP + 0xffec6710]
FXCH
FXCH ST2
FXCH
JMP 0x0003ced0
FSTP ST0
FSTP ST3
FXCH
FXCH ST2
NOP
LEA ESI,[ESI]
FUCOMIP ST0,ST1
JP 0x0003ced6
JZ 0x0003cf40
MOV EAX,dword ptr [ESP + 0x4]
ADD ESI,0x1
MOV dword ptr [EAX],ESI
CMP ESI,0x10
JZ 0x0003cf50
FXCH
TEST ESI,ESI
JNZ 0x0003cdc8
FXCH
FUCOMI ST0,ST0
JP 0x0003d050
FLDZ
FUCOMIP ST0,ST1
JNC 0x0003d040
FLDZ
FXCH ST2
FXCH
XOR ECX,ECX
XOR EBX,EBX
JMP 0x0003ce0c
CMP ECX,EAX
JNC 0x0003ce77
FSTP ST2
FXCH
JMP 0x0003cf34
FSTP ST2
FXCH
FLD dword ptr [EBP + 0xffec6710]
JMP 0x0003ced0
FSTP ST0
FSTP ST0
MOV EAX,dword ptr [ESP + 0x4]
MOV ESI,dword ptr [EAX]
JMP 0x0003cf54
FSTP ST0
FSTP ST0
MOV EAX,dword ptr [ESP + 0xc]
ADD EDI,0x1
MOV EAX,dword ptr [EAX + 0x298]
CMP EAX,EDI
JG 0x0003cd90
MOV EDI,ESI
MOV EDX,dword ptr [ESP + 0x18]
ADD dword ptr [ESP + 0x1c],0x1
LEA EAX,[EDX + EAX*0x8]
MOV EDX,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,dword ptr [ESP + 0x1c]
CMP dword ptr [EDX + 0x18],EAX
JG 0x0003cd60
CMP EDI,0x10
JNZ 0x0003cfa0
MOV EAX,dword ptr [ESP + 0x60]
MOV dword ptr [EAX + 0x10],0x0
LEA ESI,[ESI]
ADD dword ptr [ESP + 0x20],0x1
MOV EAX,dword ptr [ESP + 0x20]
CMP dword ptr [ESP + 0x24],EAX
JNZ 0x0003ccf0
ADD ESP,0x4c
POP EBX
POP ESI
POP EDI
POP EBP
RET
FLDZ
FLD qword ptr [EBP + 0xffec6138]
FXCH ST4
FUCOMI ST0,ST4
FSTP ST4
JNC 0x0003cea0
FSTP ST3
FXCH
FXCH ST2
JMP 0x0003cfe6
FSTP ST3
FXCH
FXCH ST2
FMUL ST2
FMUL dword ptr [EBP + 0xffec6710]
JMP 0x0003ced0
FNSTCW word ptr [ESP + 0x3e]
FSUBRP
MOVZX EAX,word ptr [ESP + 0x3e]
OR AH,0xc
MOV word ptr [ESP + 0x3c],AX
FLDCW word ptr [ESP + 0x3c]
FISTP qword ptr [ESP + 0x30]
FLDCW word ptr [ESP + 0x3e]
MOV EAX,dword ptr [ESP + 0x30]
MOV EDX,dword ptr [ESP + 0x34]
MOV dword ptr [ESP + 0x8],EAX
LEA EAX,[EDX + 0x80000000]
MOV dword ptr [ESP + 0x10],EAX
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [ESP + 0x10]
JMP 0x0003ce69
FLDZ
FMUL ST2
FMUL dword ptr [EBP + 0xffec6710]
JMP 0x0003ced0
FLDZ
JMP 0x0003ced0
(translation_unit "/* WARNING: Removing unreachable block (ram,0x0003cf18) */\n\nvoid FUN_0003cc70(int *param_1)\n\n{\n  uint *puVar1;\n  double dVar2;\n  double dVar3;\n  ulonglong uVar4;\n  longlong lVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  byte bVar10;\n  double dVar11;\n  double dVar12;\n  double dVar13;\n  uint uVar14;\n  int iVar15;\n  int iVar16;\n  int iVar17;\n  uint uVar18;\n  uint uVar19;\n  byte bVar20;\n  int iVar21;\n  int unaff_EBP;\n  uint uVar22;\n  int iVar23;\n  int local_44;\n  int local_40;\n  int local_3c;\n  undefined4 local_2c;\n  int iStack_28;\n  \n  FUN_00042799();\n  iVar6 = *param_1;\n  local_3c = omp_get_num_threads();\n  iVar15 = omp_get_thread_num();\n  iVar16 = *(int *)(iVar6 + 0x1c) / local_3c;\n  local_3c = *(int *)(iVar6 + 0x1c) % local_3c;\n  if (iVar15 < local_3c) {\n    iVar16 = iVar16 + 1;\n    local_3c = 0;\n  }\n  local_3c = local_3c + iVar15 * iVar16;\n  iVar16 = iVar16 + local_3c;\n  if (local_3c < iVar16) {\n    iVar15 = param_1[3];\n    iVar7 = param_1[2];\n    iVar8 = param_1[1];\n    do {\n      iVar17 = omp_get_thread_num();\n      if ((param_1[4] != 0) &&\n         (local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0)) {\n        puVar1 = (uint *)(iVar15 + iVar17 * 4);\n        uVar22 = *puVar1;\n        if (0 < *(int *)(iVar6 + 0x18)) {\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }\n        if (uVar22 == 0x10) {\n          param_1[4] = 0;\n        }\n      }\n      local_3c = local_3c + 1;\n    } while (iVar16 != local_3c);\n  }\n  return;\n}\n\n" comment (function_definition "void FUN_0003cc70(int *param_1)\n\n{\n  uint *puVar1;\n  double dVar2;\n  double dVar3;\n  ulonglong uVar4;\n  longlong lVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  byte bVar10;\n  double dVar11;\n  double dVar12;\n  double dVar13;\n  uint uVar14;\n  int iVar15;\n  int iVar16;\n  int iVar17;\n  uint uVar18;\n  uint uVar19;\n  byte bVar20;\n  int iVar21;\n  int unaff_EBP;\n  uint uVar22;\n  int iVar23;\n  int local_44;\n  int local_40;\n  int local_3c;\n  undefined4 local_2c;\n  int iStack_28;\n  \n  FUN_00042799();\n  iVar6 = *param_1;\n  local_3c = omp_get_num_threads();\n  iVar15 = omp_get_thread_num();\n  iVar16 = *(int *)(iVar6 + 0x1c) / local_3c;\n  local_3c = *(int *)(iVar6 + 0x1c) % local_3c;\n  if (iVar15 < local_3c) {\n    iVar16 = iVar16 + 1;\n    local_3c = 0;\n  }\n  local_3c = local_3c + iVar15 * iVar16;\n  iVar16 = iVar16 + local_3c;\n  if (local_3c < iVar16) {\n    iVar15 = param_1[3];\n    iVar7 = param_1[2];\n    iVar8 = param_1[1];\n    do {\n      iVar17 = omp_get_thread_num();\n      if ((param_1[4] != 0) &&\n         (local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0)) {\n        puVar1 = (uint *)(iVar15 + iVar17 * 4);\n        uVar22 = *puVar1;\n        if (0 < *(int *)(iVar6 + 0x18)) {\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }\n        if (uVar22 == 0x10) {\n          param_1[4] = 0;\n        }\n      }\n      local_3c = local_3c + 1;\n    } while (iVar16 != local_3c);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0003cc70(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  uint *puVar1;\n  double dVar2;\n  double dVar3;\n  ulonglong uVar4;\n  longlong lVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  byte bVar10;\n  double dVar11;\n  double dVar12;\n  double dVar13;\n  uint uVar14;\n  int iVar15;\n  int iVar16;\n  int iVar17;\n  uint uVar18;\n  uint uVar19;\n  byte bVar20;\n  int iVar21;\n  int unaff_EBP;\n  uint uVar22;\n  int iVar23;\n  int local_44;\n  int local_40;\n  int local_3c;\n  undefined4 local_2c;\n  int iStack_28;\n  \n  FUN_00042799();\n  iVar6 = *param_1;\n  local_3c = omp_get_num_threads();\n  iVar15 = omp_get_thread_num();\n  iVar16 = *(int *)(iVar6 + 0x1c) / local_3c;\n  local_3c = *(int *)(iVar6 + 0x1c) % local_3c;\n  if (iVar15 < local_3c) {\n    iVar16 = iVar16 + 1;\n    local_3c = 0;\n  }\n  local_3c = local_3c + iVar15 * iVar16;\n  iVar16 = iVar16 + local_3c;\n  if (local_3c < iVar16) {\n    iVar15 = param_1[3];\n    iVar7 = param_1[2];\n    iVar8 = param_1[1];\n    do {\n      iVar17 = omp_get_thread_num();\n      if ((param_1[4] != 0) &&\n         (local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0)) {\n        puVar1 = (uint *)(iVar15 + iVar17 * 4);\n        uVar22 = *puVar1;\n        if (0 < *(int *)(iVar6 + 0x18)) {\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }\n        if (uVar22 == 0x10) {\n          param_1[4] = 0;\n        }\n      }\n      local_3c = local_3c + 1;\n    } while (iVar16 != local_3c);\n  }\n  return;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "double dVar2;" primitive_type identifier ;) (declaration "double dVar3;" primitive_type identifier ;) (declaration "ulonglong uVar4;" type_identifier identifier ;) (declaration "longlong lVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "byte bVar10;" type_identifier identifier ;) (declaration "double dVar11;" primitive_type identifier ;) (declaration "double dVar12;" primitive_type identifier ;) (declaration "double dVar13;" primitive_type identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "byte bVar20;" type_identifier identifier ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "uint uVar22;" type_identifier identifier ;) (declaration "int iVar23;" primitive_type identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "int iStack_28;" primitive_type identifier ;) (expression_statement "FUN_00042799();" (call_expression "FUN_00042799()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar6 = *param_1;" (assignment_expression "iVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "local_3c = omp_get_num_threads();" (assignment_expression "local_3c = omp_get_num_threads()" identifier = (call_expression "omp_get_num_threads()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar15 = omp_get_thread_num();" (assignment_expression "iVar15 = omp_get_thread_num()" identifier = (call_expression "omp_get_thread_num()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar16 = *(int *)(iVar6 + 0x1c) / local_3c;" (assignment_expression "iVar16 = *(int *)(iVar6 + 0x1c) / local_3c" identifier = (binary_expression "*(int *)(iVar6 + 0x1c) / local_3c" (pointer_expression "*(int *)(iVar6 + 0x1c)" * (cast_expression "(int *)(iVar6 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1c)" ( (binary_expression "iVar6 + 0x1c" identifier + number_literal) )))) / identifier)) ;) (expression_statement "local_3c = *(int *)(iVar6 + 0x1c) % local_3c;" (assignment_expression "local_3c = *(int *)(iVar6 + 0x1c) % local_3c" identifier = (binary_expression "*(int *)(iVar6 + 0x1c) % local_3c" (pointer_expression "*(int *)(iVar6 + 0x1c)" * (cast_expression "(int *)(iVar6 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1c)" ( (binary_expression "iVar6 + 0x1c" identifier + number_literal) )))) % identifier)) ;) (if_statement "if (iVar15 < local_3c) {\n    iVar16 = iVar16 + 1;\n    local_3c = 0;\n  }" if (parenthesized_expression "(iVar15 < local_3c)" ( (binary_expression "iVar15 < local_3c" identifier < identifier) )) (compound_statement "{\n    iVar16 = iVar16 + 1;\n    local_3c = 0;\n  }" { (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" identifier = (binary_expression "iVar16 + 1" identifier + number_literal)) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) })) (expression_statement "local_3c = local_3c + iVar15 * iVar16;" (assignment_expression "local_3c = local_3c + iVar15 * iVar16" identifier = (binary_expression "local_3c + iVar15 * iVar16" identifier + (binary_expression "iVar15 * iVar16" identifier * identifier))) ;) (expression_statement "iVar16 = iVar16 + local_3c;" (assignment_expression "iVar16 = iVar16 + local_3c" identifier = (binary_expression "iVar16 + local_3c" identifier + identifier)) ;) (if_statement "if (local_3c < iVar16) {\n    iVar15 = param_1[3];\n    iVar7 = param_1[2];\n    iVar8 = param_1[1];\n    do {\n      iVar17 = omp_get_thread_num();\n      if ((param_1[4] != 0) &&\n         (local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0)) {\n        puVar1 = (uint *)(iVar15 + iVar17 * 4);\n        uVar22 = *puVar1;\n        if (0 < *(int *)(iVar6 + 0x18)) {\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }\n        if (uVar22 == 0x10) {\n          param_1[4] = 0;\n        }\n      }\n      local_3c = local_3c + 1;\n    } while (iVar16 != local_3c);\n  }" if (parenthesized_expression "(local_3c < iVar16)" ( (binary_expression "local_3c < iVar16" identifier < identifier) )) (compound_statement "{\n    iVar15 = param_1[3];\n    iVar7 = param_1[2];\n    iVar8 = param_1[1];\n    do {\n      iVar17 = omp_get_thread_num();\n      if ((param_1[4] != 0) &&\n         (local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0)) {\n        puVar1 = (uint *)(iVar15 + iVar17 * 4);\n        uVar22 = *puVar1;\n        if (0 < *(int *)(iVar6 + 0x18)) {\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }\n        if (uVar22 == 0x10) {\n          param_1[4] = 0;\n        }\n      }\n      local_3c = local_3c + 1;\n    } while (iVar16 != local_3c);\n  }" { (expression_statement "iVar15 = param_1[3];" (assignment_expression "iVar15 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "iVar7 = param_1[2];" (assignment_expression "iVar7 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "iVar8 = param_1[1];" (assignment_expression "iVar8 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (do_statement "do {\n      iVar17 = omp_get_thread_num();\n      if ((param_1[4] != 0) &&\n         (local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0)) {\n        puVar1 = (uint *)(iVar15 + iVar17 * 4);\n        uVar22 = *puVar1;\n        if (0 < *(int *)(iVar6 + 0x18)) {\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }\n        if (uVar22 == 0x10) {\n          param_1[4] = 0;\n        }\n      }\n      local_3c = local_3c + 1;\n    } while (iVar16 != local_3c);" do (compound_statement "{\n      iVar17 = omp_get_thread_num();\n      if ((param_1[4] != 0) &&\n         (local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0)) {\n        puVar1 = (uint *)(iVar15 + iVar17 * 4);\n        uVar22 = *puVar1;\n        if (0 < *(int *)(iVar6 + 0x18)) {\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }\n        if (uVar22 == 0x10) {\n          param_1[4] = 0;\n        }\n      }\n      local_3c = local_3c + 1;\n    }" { (expression_statement "iVar17 = omp_get_thread_num();" (assignment_expression "iVar17 = omp_get_thread_num()" identifier = (call_expression "omp_get_thread_num()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((param_1[4] != 0) &&\n         (local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0)) {\n        puVar1 = (uint *)(iVar15 + iVar17 * 4);\n        uVar22 = *puVar1;\n        if (0 < *(int *)(iVar6 + 0x18)) {\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }\n        if (uVar22 == 0x10) {\n          param_1[4] = 0;\n        }\n      }" if (parenthesized_expression "((param_1[4] != 0) &&\n         (local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0))" ( (binary_expression "(param_1[4] != 0) &&\n         (local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0)" (parenthesized_expression "(param_1[4] != 0)" ( (binary_expression "param_1[4] != 0" (subscript_expression "param_1[4]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0)" ( (comma_expression "local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0" (assignment_expression "local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8)" identifier = (call_expression "GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8)" identifier (argument_list "(iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8)" ( identifier , number_literal , identifier , (pointer_expression "*(undefined4 *)(iVar6 + 0x18)" * (cast_expression "(undefined4 *)(iVar6 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) )))) , number_literal , identifier )))) , (binary_expression "local_44 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        puVar1 = (uint *)(iVar15 + iVar17 * 4);\n        uVar22 = *puVar1;\n        if (0 < *(int *)(iVar6 + 0x18)) {\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }\n        if (uVar22 == 0x10) {\n          param_1[4] = 0;\n        }\n      }" { (expression_statement "puVar1 = (uint *)(iVar15 + iVar17 * 4);" (assignment_expression "puVar1 = (uint *)(iVar15 + iVar17 * 4)" identifier = (cast_expression "(uint *)(iVar15 + iVar17 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + iVar17 * 4)" ( (binary_expression "iVar15 + iVar17 * 4" identifier + (binary_expression "iVar17 * 4" identifier * number_literal)) )))) ;) (expression_statement "uVar22 = *puVar1;" (assignment_expression "uVar22 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (if_statement "if (0 < *(int *)(iVar6 + 0x18)) {\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }" if (parenthesized_expression "(0 < *(int *)(iVar6 + 0x18))" ( (binary_expression "0 < *(int *)(iVar6 + 0x18)" number_literal < (pointer_expression "*(int *)(iVar6 + 0x18)" * (cast_expression "(int *)(iVar6 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }" { (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (do_statement "do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));" do (compound_statement "{\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          }" { (expression_statement "iVar17 = *(int *)(iVar6 + 0x298);" (assignment_expression "iVar17 = *(int *)(iVar6 + 0x298)" identifier = (pointer_expression "*(int *)(iVar6 + 0x298)" * (cast_expression "(int *)(iVar6 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x298)" ( (binary_expression "iVar6 + 0x298" identifier + number_literal) ))))) ;) (if_statement "if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }" if (parenthesized_expression "(0 < iVar17)" ( (binary_expression "0 < iVar17" number_literal < identifier) )) (compound_statement "{\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }" { (expression_statement "iVar9 = *(int *)(iVar6 + 0x2a8);" (assignment_expression "iVar9 = *(int *)(iVar6 + 0x2a8)" identifier = (pointer_expression "*(int *)(iVar6 + 0x2a8)" * (cast_expression "(int *)(iVar6 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x2a8)" ( (binary_expression "iVar6 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "iVar23 = 0;" (assignment_expression "iVar23 = 0" identifier = number_literal) ;) (do_statement "do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);" do (compound_statement "{\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              }" { (if_statement "if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }" if (parenthesized_expression "(((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10))" ( (binary_expression "((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)" (parenthesized_expression "((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0)" ( (binary_expression "(*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2)" ( (binary_expression "*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2" (pointer_expression "*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc)" * (cast_expression "(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc)" ( (binary_expression "iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc" (binary_expression "iVar9 + 4" identifier + number_literal) + (binary_expression "*(int *)(iVar9 + iVar23 * 0xc) * 0xc" (pointer_expression "*(int *)(iVar9 + iVar23 * 0xc)" * (cast_expression "(int *)(iVar9 + iVar23 * 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + iVar23 * 0xc)" ( (binary_expression "iVar9 + iVar23 * 0xc" identifier + (binary_expression "iVar23 * 0xc" identifier * number_literal)) )))) * number_literal)) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(uVar22 < 0x10)" ( (binary_expression "uVar22 < 0x10" identifier < number_literal) ))) )) (compound_statement "{\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }" { (expression_statement "dVar2 = *(double *)(local_44 + iVar23 * 8);" (assignment_expression "dVar2 = *(double *)(local_44 + iVar23 * 8)" identifier = (pointer_expression "*(double *)(local_44 + iVar23 * 8)" * (cast_expression "(double *)(local_44 + iVar23 * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + iVar23 * 8)" ( (binary_expression "local_44 + iVar23 * 8" identifier + (binary_expression "iVar23 * 8" identifier * number_literal)) ))))) ;) (expression_statement "dVar3 = *(double *)(unaff_EBP + 0x262ac2);" (assignment_expression "dVar3 = *(double *)(unaff_EBP + 0x262ac2)" identifier = (pointer_expression "*(double *)(unaff_EBP + 0x262ac2)" * (cast_expression "(double *)(unaff_EBP + 0x262ac2)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x262ac2)" ( (binary_expression "unaff_EBP + 0x262ac2" identifier + number_literal) ))))) ;) (do_statement "do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);" do (compound_statement "{\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  }" { (if_statement "if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }" if (parenthesized_expression "(uVar22 == 0)" ( (binary_expression "uVar22 == 0" identifier == number_literal) )) (compound_statement "{\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }" { (if_statement "if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }" if (parenthesized_expression "(NAN(dVar2))" ( (call_expression "NAN(dVar2)" identifier (argument_list "(dVar2)" ( identifier ))) )) (compound_statement "{\n                        dVar11 = 0.0;\n                      }" { (expression_statement "dVar11 = 0.0;" (assignment_expression "dVar11 = 0.0" identifier = number_literal) ;) }) (else_clause "else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }" else (compound_statement "{\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }" { (if_statement "if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }" if (parenthesized_expression "(0.0 < dVar2)" ( (binary_expression "0.0 < dVar2" number_literal < identifier) )) (compound_statement "{\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }" { (expression_statement "dVar12 = 0.0;" (assignment_expression "dVar12 = 0.0" identifier = number_literal) ;) (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) (expression_statement "iVar21 = 0;" (assignment_expression "iVar21 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0003ce0c;" goto statement_identifier ;) })) (expression_statement "dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);" (assignment_expression "dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a)" identifier = (binary_expression "dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a)" (binary_expression "dVar3 * 0.0" identifier * number_literal) * (cast_expression "(double)*(float *)(unaff_EBP + 0x262a9a)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(unaff_EBP + 0x262a9a)" * (cast_expression "(float *)(unaff_EBP + 0x262a9a)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x262a9a)" ( (binary_expression "unaff_EBP + 0x262a9a" identifier + number_literal) ))))))) ;) }))) }) (else_clause "else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }" else (compound_statement "{\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }" { (expression_statement "bVar20 = (byte)(uVar22 - 1);" (assignment_expression "bVar20 = (byte)(uVar22 - 1)" identifier = (call_expression "(byte)(uVar22 - 1)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar22 - 1)" ( (binary_expression "uVar22 - 1" identifier - number_literal) )))) ;) (expression_statement "bVar10 = bVar20 & 0x1f;" (assignment_expression "bVar10 = bVar20 & 0x1f" identifier = (binary_expression "bVar20 & 0x1f" identifier & number_literal)) ;) (expression_statement "uVar18 = 2 << (bVar20 & 0x1f);" (assignment_expression "uVar18 = 2 << (bVar20 & 0x1f)" identifier = (binary_expression "2 << (bVar20 & 0x1f)" number_literal << (parenthesized_expression "(bVar20 & 0x1f)" ( (binary_expression "bVar20 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar19 = uVar18;" (assignment_expression "uVar19 = uVar18" identifier = identifier) ;) (expression_statement "uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;" (assignment_expression "uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10" identifier = (binary_expression "0 << bVar10 | 2U >> 0x20 - bVar10" (binary_expression "0 << bVar10" number_literal << identifier) | (binary_expression "2U >> 0x20 - bVar10" number_literal >> (binary_expression "0x20 - bVar10" number_literal - identifier)))) ;) (if_statement "if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }" if (parenthesized_expression "((uVar22 - 1 & 0x20) != 0)" ( (binary_expression "(uVar22 - 1 & 0x20) != 0" (parenthesized_expression "(uVar22 - 1 & 0x20)" ( (binary_expression "uVar22 - 1 & 0x20" (binary_expression "uVar22 - 1" identifier - number_literal) & number_literal) )) != number_literal) )) (compound_statement "{\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }" { (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (expression_statement "uVar14 = uVar18;" (assignment_expression "uVar14 = uVar18" identifier = identifier) ;) })) (expression_statement "iVar17 = uVar19 - 1;" (assignment_expression "iVar17 = uVar19 - 1" identifier = (binary_expression "uVar19 - 1" identifier - number_literal)) ;) (expression_statement "dVar12 = (double)(short)iVar17;" (assignment_expression "dVar12 = (double)(short)iVar17" identifier = (cast_expression "(double)(short)iVar17" ( (type_descriptor "double" primitive_type) ) (cast_expression "(short)iVar17" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier))) ;) (expression_statement "iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);" (assignment_expression "iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0)" identifier = (binary_expression "(uVar14 - 1) + (uint)(uVar19 != 0)" (parenthesized_expression "(uVar14 - 1)" ( (binary_expression "uVar14 - 1" identifier - number_literal) )) + (call_expression "(uint)(uVar19 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar19 != 0)" ( (binary_expression "uVar19 != 0" identifier != number_literal) ))))) ;) (if_statement "if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }" if (parenthesized_expression "(dVar2 <= 0.0)" ( (binary_expression "dVar2 <= 0.0" identifier <= number_literal) )) (compound_statement "{\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }" { (if_statement "if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }" if (parenthesized_expression "(*(double *)(unaff_EBP + 0x2624c2) <= dVar12)" ( (binary_expression "*(double *)(unaff_EBP + 0x2624c2) <= dVar12" (pointer_expression "*(double *)(unaff_EBP + 0x2624c2)" * (cast_expression "(double *)(unaff_EBP + 0x2624c2)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x2624c2)" ( (binary_expression "unaff_EBP + 0x2624c2" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }" { (expression_statement "dVar11 = 0.0;" (assignment_expression "dVar11 = 0.0" identifier = number_literal) ;) (labeled_statement "LAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);" statement_identifier : (expression_statement "dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);" (assignment_expression "dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a)" identifier = (binary_expression "((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a)" (binary_expression "((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11" (parenthesized_expression "((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12)" ( (binary_expression "(double)*(float *)(unaff_EBP + 0x262aa2) / dVar12" (cast_expression "(double)*(float *)(unaff_EBP + 0x262aa2)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(unaff_EBP + 0x262aa2)" * (cast_expression "(float *)(unaff_EBP + 0x262aa2)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x262aa2)" ( (binary_expression "unaff_EBP + 0x262aa2" identifier + number_literal) ))))) / identifier) )) * identifier) * (cast_expression "(double)*(float *)(unaff_EBP + 0x262a9a)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(unaff_EBP + 0x262a9a)" * (cast_expression "(float *)(unaff_EBP + 0x262a9a)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x262a9a)" ( (binary_expression "unaff_EBP + 0x262a9a" identifier + number_literal) ))))))) ;)) }) (else_clause "else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }" else (compound_statement "{\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }" { (expression_statement "dVar11 = 0.0;" (assignment_expression "dVar11 = 0.0" identifier = number_literal) ;) (labeled_statement "LAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);" statement_identifier : (expression_statement "dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);" (assignment_expression "dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a)" identifier = (binary_expression "dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a)" (binary_expression "dVar11 * dVar3" identifier * identifier) * (cast_expression "(double)*(float *)(unaff_EBP + 0x262a9a)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(unaff_EBP + 0x262a9a)" * (cast_expression "(float *)(unaff_EBP + 0x262a9a)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x262a9a)" ( (binary_expression "unaff_EBP + 0x262a9a" identifier + number_literal) ))))))) ;)) }))) }) (else_clause "else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }" else (compound_statement "{\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }" { (labeled_statement "LAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);" statement_identifier : (expression_statement "dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);" (assignment_expression "dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a)" identifier = (cast_expression "(double)*(float *)(unaff_EBP + 0x262a9a)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(unaff_EBP + 0x262a9a)" * (cast_expression "(float *)(unaff_EBP + 0x262a9a)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x262a9a)" ( (binary_expression "unaff_EBP + 0x262a9a" identifier + number_literal) )))))) ;)) (expression_statement "dVar13 = (dVar2 * dVar12) / dVar11;" (assignment_expression "dVar13 = (dVar2 * dVar12) / dVar11" identifier = (binary_expression "(dVar2 * dVar12) / dVar11" (parenthesized_expression "(dVar2 * dVar12)" ( (binary_expression "dVar2 * dVar12" identifier * identifier) )) / identifier)) ;) (if_statement "if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }" if (parenthesized_expression "(dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e))" ( (binary_expression "dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)" identifier < (cast_expression "(double)*(float *)(unaff_EBP + 0x262a9e)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(unaff_EBP + 0x262a9e)" * (cast_expression "(float *)(unaff_EBP + 0x262a9e)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x262a9e)" ( (binary_expression "unaff_EBP + 0x262a9e" identifier + number_literal) )))))) )) (compound_statement "{\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }" { (expression_statement "dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);" (assignment_expression "dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP)" identifier = (binary_expression "dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP)" identifier + (cast_expression "(double)*(float *)(&DAT_002624ae + unaff_EBP)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(&DAT_002624ae + unaff_EBP)" * (cast_expression "(float *)(&DAT_002624ae + unaff_EBP)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_002624ae + unaff_EBP)" ( (binary_expression "&DAT_002624ae + unaff_EBP" (pointer_expression "&DAT_002624ae" & identifier) + identifier) ))))))) ;) (if_statement "if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }" if (parenthesized_expression "((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13)" ( (binary_expression "(double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13" (cast_expression "(double)*(float *)(&DAT_002624be + unaff_EBP)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(&DAT_002624be + unaff_EBP)" * (cast_expression "(float *)(&DAT_002624be + unaff_EBP)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_002624be + unaff_EBP)" ( (binary_expression "&DAT_002624be + unaff_EBP" (pointer_expression "&DAT_002624be" & identifier) + identifier) ))))) <= identifier) )) (compound_statement "{\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }" { (expression_statement "lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));" (assignment_expression "lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP))" identifier = (cast_expression "(longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP))" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP))" identifier (argument_list "(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP))" ( (binary_expression "dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP)" identifier - (cast_expression "(double)*(float *)(&DAT_002624be + unaff_EBP)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(&DAT_002624be + unaff_EBP)" * (cast_expression "(float *)(&DAT_002624be + unaff_EBP)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_002624be + unaff_EBP)" ( (binary_expression "&DAT_002624be + unaff_EBP" (pointer_expression "&DAT_002624be" & identifier) + identifier) )))))) ))))) ;) (expression_statement "local_2c = (undefined4)lVar5;" (assignment_expression "local_2c = (undefined4)lVar5" identifier = (cast_expression "(undefined4)lVar5" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (expression_statement "iStack_28 = (int)((ulonglong)lVar5 >> 0x20);" (assignment_expression "iStack_28 = (int)((ulonglong)lVar5 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar5 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar5 >> 0x20)" ( (binary_expression "(ulonglong)lVar5 >> 0x20" (cast_expression "(ulonglong)lVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);" (assignment_expression "uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c)" identifier = (call_expression "CONCAT44(iStack_28 + -0x80000000,local_2c)" identifier (argument_list "(iStack_28 + -0x80000000,local_2c)" ( (binary_expression "iStack_28 + -0x80000000" identifier + number_literal) , identifier )))) ;) }) (else_clause "else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }" else (compound_statement "{\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }" { (expression_statement "uVar4 = (ulonglong)ROUND(dVar13);" (assignment_expression "uVar4 = (ulonglong)ROUND(dVar13)" identifier = (cast_expression "(ulonglong)ROUND(dVar13)" ( (type_descriptor "ulonglong" type_identifier) ) (call_expression "ROUND(dVar13)" identifier (argument_list "(dVar13)" ( identifier ))))) ;) }))) (if_statement "if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }" if (parenthesized_expression "(uVar4 <= CONCAT44(iVar21,iVar17))" ( (binary_expression "uVar4 <= CONCAT44(iVar21,iVar17)" identifier <= (call_expression "CONCAT44(iVar21,iVar17)" identifier (argument_list "(iVar21,iVar17)" ( identifier , identifier )))) )) (compound_statement "{\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }" { (expression_statement "dVar11 = (double)(short)uVar4;" (assignment_expression "dVar11 = (double)(short)uVar4" identifier = (cast_expression "(double)(short)uVar4" ( (type_descriptor "double" primitive_type) ) (cast_expression "(short)uVar4" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier))) ;) (if_statement "if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;" if (parenthesized_expression "(dVar12 < *(double *)(unaff_EBP + 0x2624c2))" ( (binary_expression "dVar12 < *(double *)(unaff_EBP + 0x2624c2)" identifier < (pointer_expression "*(double *)(unaff_EBP + 0x2624c2)" * (cast_expression "(double *)(unaff_EBP + 0x2624c2)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x2624c2)" ( (binary_expression "unaff_EBP + 0x2624c2" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0003cfe6;" goto statement_identifier ;)) (goto_statement "goto LAB_0003cea2;" goto statement_identifier ;) })) (expression_statement "dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);" (assignment_expression "dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a)" identifier = (cast_expression "(double)*(float *)(unaff_EBP + 0x262a9a)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(unaff_EBP + 0x262a9a)" * (cast_expression "(float *)(unaff_EBP + 0x262a9a)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x262a9a)" ( (binary_expression "unaff_EBP + 0x262a9a" identifier + number_literal) )))))) ;) })) }))) }))) (if_statement "if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }" if (parenthesized_expression "(dVar11 == dVar2)" ( (binary_expression "dVar11 == dVar2" identifier == identifier) )) (compound_statement "{\n                      uVar22 = *puVar1;\n                      break;\n                    }" { (expression_statement "uVar22 = *puVar1;" (assignment_expression "uVar22 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (break_statement "break;" break ;) })) (expression_statement "uVar22 = uVar22 + 1;" (assignment_expression "uVar22 = uVar22 + 1" identifier = (binary_expression "uVar22 + 1" identifier + number_literal)) ;) (expression_statement "*puVar1 = uVar22;" (assignment_expression "*puVar1 = uVar22" (pointer_expression "*puVar1" * identifier) = identifier) ;) }) while (parenthesized_expression "(uVar22 != 0x10)" ( (binary_expression "uVar22 != 0x10" identifier != number_literal) )) ;) })) (expression_statement "iVar23 = iVar23 + 1;" (assignment_expression "iVar23 = iVar23 + 1" identifier = (binary_expression "iVar23 + 1" identifier + number_literal)) ;) (expression_statement "iVar17 = *(int *)(iVar6 + 0x298);" (assignment_expression "iVar17 = *(int *)(iVar6 + 0x298)" identifier = (pointer_expression "*(int *)(iVar6 + 0x298)" * (cast_expression "(int *)(iVar6 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x298)" ( (binary_expression "iVar6 + 0x298" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(iVar23 < iVar17)" ( (binary_expression "iVar23 < iVar17" identifier < identifier) )) ;) })) (expression_statement "local_40 = local_40 + 1;" (assignment_expression "local_40 = local_40 + 1" identifier = (binary_expression "local_40 + 1" identifier + number_literal)) ;) (expression_statement "local_44 = local_44 + iVar17 * 8;" (assignment_expression "local_44 = local_44 + iVar17 * 8" identifier = (binary_expression "local_44 + iVar17 * 8" identifier + (binary_expression "iVar17 * 8" identifier * number_literal))) ;) }) while (parenthesized_expression "(local_40 < *(int *)(iVar6 + 0x18))" ( (binary_expression "local_40 < *(int *)(iVar6 + 0x18)" identifier < (pointer_expression "*(int *)(iVar6 + 0x18)" * (cast_expression "(int *)(iVar6 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) ))))) )) ;) })) (if_statement "if (uVar22 == 0x10) {\n          param_1[4] = 0;\n        }" if (parenthesized_expression "(uVar22 == 0x10)" ( (binary_expression "uVar22 == 0x10" identifier == number_literal) )) (compound_statement "{\n          param_1[4] = 0;\n        }" { (expression_statement "param_1[4] = 0;" (assignment_expression "param_1[4] = 0" (subscript_expression "param_1[4]" identifier [ number_literal ]) = number_literal) ;) })) })) (expression_statement "local_3c = local_3c + 1;" (assignment_expression "local_3c = local_3c + 1" identifier = (binary_expression "local_3c + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar16 != local_3c)" ( (binary_expression "iVar16 != local_3c" identifier != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */\n/* WARNING: Removing unreachable block (ram,0x0003cf18) */\n/* WARNING: Enum "GravityType": Some values do not have unique names */\n/* WARNING: Enum "DisposeType": Some values do not have unique names */\n/* WARNING: Enum "ChannelType": Some values do not have unique names */\n/* WARNING: Enum "PixelChannel": Some values do not have unique names */\n/* WARNING: Enum "ExceptionType": Some values do not have unique names */\n/* DWARF original prototype: void GetImageDepth._omp_fn.2(anon_struct_20_5_8a8fa108 * param_0) */\n\nvoid __thiscall GetImageDepth__omp_fn_2(anon_struct_20_5_8a8fa108 *this)\n\n{\n  uint *puVar1;\n  double dVar2;\n  ulonglong uVar3;\n  longlong lVar4;\n  Image *pIVar5;\n  size_t *psVar6;\n  CacheView *cache_view;\n  ExceptionInfo *exception;\n  PixelChannelMap *pPVar7;\n  byte bVar8;\n  double dVar9;\n  double dVar10;\n  double dVar11;\n  uint uVar12;\n  double dVar13;\n  int iVar14;\n  int iVar15;\n  uint uVar16;\n  uint uVar17;\n  size_t sVar18;\n  byte bVar19;\n  int iVar20;\n  int iVar21;\n  uint uVar22;\n  Quantum *local_44;\n  int local_40;\n  int local_3c;\n  undefined4 local_2c;\n  int iStack_28;\n  \n  pIVar5 = this->image;\n  local_3c = omp_get_num_threads();\n  iVar14 = omp_get_thread_num();\n  iVar15 = (int)pIVar5->rows / local_3c;\n  local_3c = (int)pIVar5->rows % local_3c;\n  if (iVar14 < local_3c) {\n    iVar15 = iVar15 + 1;\n    local_3c = 0;\n  }\n  local_3c = local_3c + iVar14 * iVar15;\n  iVar15 = iVar15 + local_3c;\n  if (local_3c < iVar15) {\n    psVar6 = this->current_depth;\n    cache_view = this->image_view;\n    exception = this->exception;\n    do {\n      iVar14 = omp_get_thread_num();\n      if ((this->status != MagickFalse) &&\n         (local_44 = GetCacheViewVirtualPixels(cache_view,0,local_3c,pIVar5->columns,1,exception),\n         local_44 != (Quantum *)0x0)) {\n        puVar1 = psVar6 + iVar14;\n        uVar22 = *puVar1;\n        if (0 < (int)pIVar5->columns) {\n          local_40 = 0;\n          do {\n            sVar18 = pIVar5->number_channels;\n            if (0 < (int)sVar18) {\n              pPVar7 = pIVar5->channel_map;\n              iVar14 = 0;\n              do {\n                dVar13 = DAT_0029f738;\n                if (((pPVar7[pPVar7[iVar14].channel].traits & UpdatePixelTrait) !=\n                     UndefinedPixelTrait) && (uVar22 < 0x10)) {\n                  dVar2 = local_44[iVar14];\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar9 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar10 = 0.0;\n                          iVar20 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar9 = dVar13 * 0.0 * (double)DAT_0029f710;\n                      }\n                    }\n                    else {\n                      bVar19 = (byte)(uVar22 - 1);\n                      bVar8 = bVar19 & 0x1f;\n                      uVar16 = 2 << (bVar19 & 0x1f);\n                      uVar17 = uVar16;\n                      uVar12 = 0 << bVar8 | 2U >> 0x20 - bVar8;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar17 = 0;\n                        uVar12 = uVar16;\n                      }\n                      iVar20 = uVar17 - 1;\n                      dVar10 = (double)(short)iVar20;\n                      iVar21 = (uVar12 - 1) + (uint)(uVar17 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (DAT_0029f138 <= dVar10) {\n                          dVar9 = 0.0;\nLAB_0003cea2:\n                          dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;\n                        }\n                        else {\n                          dVar9 = 0.0;\nLAB_0003cfe6:\n                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar9 = (double)DAT_0029f710;\n                        dVar11 = (dVar2 * dVar10) / dVar9;\n                        if (dVar11 < (double)DAT_0029f714) {\n                          dVar11 = dVar11 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar11) {\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }\n                          if (uVar3 <= CONCAT44(iVar21,iVar20)) {\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar9 = (double)DAT_0029f710;\n                        }\n                      }\n                    }\n                    if (dVar9 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar14 = iVar14 + 1;\n                sVar18 = pIVar5->number_channels;\n              } while (iVar14 < (int)sVar18);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + sVar18;\n          } while (local_40 < (int)pIVar5->columns);\n        }\n        if (uVar22 == 0x10) {\n          this->status = MagickFalse;\n        }\n      }\n      local_3c = local_3c + 1;\n    } while (iVar15 != local_3c);\n  }\n  return;\n}\n\n" comment comment comment comment comment comment comment comment (function_definition "void __thiscall GetImageDepth__omp_fn_2(anon_struct_20_5_8a8fa108 *this)\n\n{\n  uint *puVar1;\n  double dVar2;\n  ulonglong uVar3;\n  longlong lVar4;\n  Image *pIVar5;\n  size_t *psVar6;\n  CacheView *cache_view;\n  ExceptionInfo *exception;\n  PixelChannelMap *pPVar7;\n  byte bVar8;\n  double dVar9;\n  double dVar10;\n  double dVar11;\n  uint uVar12;\n  double dVar13;\n  int iVar14;\n  int iVar15;\n  uint uVar16;\n  uint uVar17;\n  size_t sVar18;\n  byte bVar19;\n  int iVar20;\n  int iVar21;\n  uint uVar22;\n  Quantum *local_44;\n  int local_40;\n  int local_3c;\n  undefined4 local_2c;\n  int iStack_28;\n  \n  pIVar5 = this->image;\n  local_3c = omp_get_num_threads();\n  iVar14 = omp_get_thread_num();\n  iVar15 = (int)pIVar5->rows / local_3c;\n  local_3c = (int)pIVar5->rows % local_3c;\n  if (iVar14 < local_3c) {\n    iVar15 = iVar15 + 1;\n    local_3c = 0;\n  }\n  local_3c = local_3c + iVar14 * iVar15;\n  iVar15 = iVar15 + local_3c;\n  if (local_3c < iVar15) {\n    psVar6 = this->current_depth;\n    cache_view = this->image_view;\n    exception = this->exception;\n    do {\n      iVar14 = omp_get_thread_num();\n      if ((this->status != MagickFalse) &&\n         (local_44 = GetCacheViewVirtualPixels(cache_view,0,local_3c,pIVar5->columns,1,exception),\n         local_44 != (Quantum *)0x0)) {\n        puVar1 = psVar6 + iVar14;\n        uVar22 = *puVar1;\n        if (0 < (int)pIVar5->columns) {\n          local_40 = 0;\n          do {\n            sVar18 = pIVar5->number_channels;\n            if (0 < (int)sVar18) {\n              pPVar7 = pIVar5->channel_map;\n              iVar14 = 0;\n              do {\n                dVar13 = DAT_0029f738;\n                if (((pPVar7[pPVar7[iVar14].channel].traits & UpdatePixelTrait) !=\n                     UndefinedPixelTrait) && (uVar22 < 0x10)) {\n                  dVar2 = local_44[iVar14];\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar9 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar10 = 0.0;\n                          iVar20 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar9 = dVar13 * 0.0 * (double)DAT_0029f710;\n                      }\n                    }\n                    else {\n                      bVar19 = (byte)(uVar22 - 1);\n                      bVar8 = bVar19 & 0x1f;\n                      uVar16 = 2 << (bVar19 & 0x1f);\n                      uVar17 = uVar16;\n                      uVar12 = 0 << bVar8 | 2U >> 0x20 - bVar8;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar17 = 0;\n                        uVar12 = uVar16;\n                      }\n                      iVar20 = uVar17 - 1;\n                      dVar10 = (double)(short)iVar20;\n                      iVar21 = (uVar12 - 1) + (uint)(uVar17 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (DAT_0029f138 <= dVar10) {\n                          dVar9 = 0.0;\nLAB_0003cea2:\n                          dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;\n                        }\n                        else {\n                          dVar9 = 0.0;\nLAB_0003cfe6:\n                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar9 = (double)DAT_0029f710;\n                        dVar11 = (dVar2 * dVar10) / dVar9;\n                        if (dVar11 < (double)DAT_0029f714) {\n                          dVar11 = dVar11 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar11) {\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }\n                          if (uVar3 <= CONCAT44(iVar21,iVar20)) {\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar9 = (double)DAT_0029f710;\n                        }\n                      }\n                    }\n                    if (dVar9 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar14 = iVar14 + 1;\n                sVar18 = pIVar5->number_channels;\n              } while (iVar14 < (int)sVar18);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + sVar18;\n          } while (local_40 < (int)pIVar5->columns);\n        }\n        if (uVar22 == 0x10) {\n          this->status = MagickFalse;\n        }\n      }\n      local_3c = local_3c + 1;\n    } while (iVar15 != local_3c);\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (function_declarator "GetImageDepth__omp_fn_2(anon_struct_20_5_8a8fa108 *this)" identifier (parameter_list "(anon_struct_20_5_8a8fa108 *this)" ( (parameter_declaration "anon_struct_20_5_8a8fa108 *this" type_identifier (pointer_declarator "*this" * identifier)) ))) (compound_statement "{\n  uint *puVar1;\n  double dVar2;\n  ulonglong uVar3;\n  longlong lVar4;\n  Image *pIVar5;\n  size_t *psVar6;\n  CacheView *cache_view;\n  ExceptionInfo *exception;\n  PixelChannelMap *pPVar7;\n  byte bVar8;\n  double dVar9;\n  double dVar10;\n  double dVar11;\n  uint uVar12;\n  double dVar13;\n  int iVar14;\n  int iVar15;\n  uint uVar16;\n  uint uVar17;\n  size_t sVar18;\n  byte bVar19;\n  int iVar20;\n  int iVar21;\n  uint uVar22;\n  Quantum *local_44;\n  int local_40;\n  int local_3c;\n  undefined4 local_2c;\n  int iStack_28;\n  \n  pIVar5 = this->image;\n  local_3c = omp_get_num_threads();\n  iVar14 = omp_get_thread_num();\n  iVar15 = (int)pIVar5->rows / local_3c;\n  local_3c = (int)pIVar5->rows % local_3c;\n  if (iVar14 < local_3c) {\n    iVar15 = iVar15 + 1;\n    local_3c = 0;\n  }\n  local_3c = local_3c + iVar14 * iVar15;\n  iVar15 = iVar15 + local_3c;\n  if (local_3c < iVar15) {\n    psVar6 = this->current_depth;\n    cache_view = this->image_view;\n    exception = this->exception;\n    do {\n      iVar14 = omp_get_thread_num();\n      if ((this->status != MagickFalse) &&\n         (local_44 = GetCacheViewVirtualPixels(cache_view,0,local_3c,pIVar5->columns,1,exception),\n         local_44 != (Quantum *)0x0)) {\n        puVar1 = psVar6 + iVar14;\n        uVar22 = *puVar1;\n        if (0 < (int)pIVar5->columns) {\n          local_40 = 0;\n          do {\n            sVar18 = pIVar5->number_channels;\n            if (0 < (int)sVar18) {\n              pPVar7 = pIVar5->channel_map;\n              iVar14 = 0;\n              do {\n                dVar13 = DAT_0029f738;\n                if (((pPVar7[pPVar7[iVar14].channel].traits & UpdatePixelTrait) !=\n                     UndefinedPixelTrait) && (uVar22 < 0x10)) {\n                  dVar2 = local_44[iVar14];\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar9 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar10 = 0.0;\n                          iVar20 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar9 = dVar13 * 0.0 * (double)DAT_0029f710;\n                      }\n                    }\n                    else {\n                      bVar19 = (byte)(uVar22 - 1);\n                      bVar8 = bVar19 & 0x1f;\n                      uVar16 = 2 << (bVar19 & 0x1f);\n                      uVar17 = uVar16;\n                      uVar12 = 0 << bVar8 | 2U >> 0x20 - bVar8;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar17 = 0;\n                        uVar12 = uVar16;\n                      }\n                      iVar20 = uVar17 - 1;\n                      dVar10 = (double)(short)iVar20;\n                      iVar21 = (uVar12 - 1) + (uint)(uVar17 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (DAT_0029f138 <= dVar10) {\n                          dVar9 = 0.0;\nLAB_0003cea2:\n                          dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;\n                        }\n                        else {\n                          dVar9 = 0.0;\nLAB_0003cfe6:\n                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar9 = (double)DAT_0029f710;\n                        dVar11 = (dVar2 * dVar10) / dVar9;\n                        if (dVar11 < (double)DAT_0029f714) {\n                          dVar11 = dVar11 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar11) {\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }\n                          if (uVar3 <= CONCAT44(iVar21,iVar20)) {\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar9 = (double)DAT_0029f710;\n                        }\n                      }\n                    }\n                    if (dVar9 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar14 = iVar14 + 1;\n                sVar18 = pIVar5->number_channels;\n              } while (iVar14 < (int)sVar18);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + sVar18;\n          } while (local_40 < (int)pIVar5->columns);\n        }\n        if (uVar22 == 0x10) {\n          this->status = MagickFalse;\n        }\n      }\n      local_3c = local_3c + 1;\n    } while (iVar15 != local_3c);\n  }\n  return;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "double dVar2;" primitive_type identifier ;) (declaration "ulonglong uVar3;" type_identifier identifier ;) (declaration "longlong lVar4;" type_identifier identifier ;) (declaration "Image *pIVar5;" type_identifier (pointer_declarator "*pIVar5" * identifier) ;) (declaration "size_t *psVar6;" primitive_type (pointer_declarator "*psVar6" * identifier) ;) (declaration "CacheView *cache_view;" type_identifier (pointer_declarator "*cache_view" * identifier) ;) (declaration "ExceptionInfo *exception;" type_identifier (pointer_declarator "*exception" * identifier) ;) (declaration "PixelChannelMap *pPVar7;" type_identifier (pointer_declarator "*pPVar7" * identifier) ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "double dVar9;" primitive_type identifier ;) (declaration "double dVar10;" primitive_type identifier ;) (declaration "double dVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "double dVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "size_t sVar18;" primitive_type identifier ;) (declaration "byte bVar19;" type_identifier identifier ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "uint uVar22;" type_identifier identifier ;) (declaration "Quantum *local_44;" type_identifier (pointer_declarator "*local_44" * identifier) ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "int iStack_28;" primitive_type identifier ;) (expression_statement "pIVar5 = this->image;" (assignment_expression "pIVar5 = this->image" identifier = (field_expression "this->image" identifier -> field_identifier)) ;) (expression_statement "local_3c = omp_get_num_threads();" (assignment_expression "local_3c = omp_get_num_threads()" identifier = (call_expression "omp_get_num_threads()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar14 = omp_get_thread_num();" (assignment_expression "iVar14 = omp_get_thread_num()" identifier = (call_expression "omp_get_thread_num()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar15 = (int)pIVar5->rows / local_3c;" (assignment_expression "iVar15 = (int)pIVar5->rows / local_3c" identifier = (binary_expression "(int)pIVar5->rows / local_3c" (cast_expression "(int)pIVar5->rows" ( (type_descriptor "int" primitive_type) ) (field_expression "pIVar5->rows" identifier -> field_identifier)) / identifier)) ;) (expression_statement "local_3c = (int)pIVar5->rows % local_3c;" (assignment_expression "local_3c = (int)pIVar5->rows % local_3c" identifier = (binary_expression "(int)pIVar5->rows % local_3c" (cast_expression "(int)pIVar5->rows" ( (type_descriptor "int" primitive_type) ) (field_expression "pIVar5->rows" identifier -> field_identifier)) % identifier)) ;) (if_statement "if (iVar14 < local_3c) {\n    iVar15 = iVar15 + 1;\n    local_3c = 0;\n  }" if (parenthesized_expression "(iVar14 < local_3c)" ( (binary_expression "iVar14 < local_3c" identifier < identifier) )) (compound_statement "{\n    iVar15 = iVar15 + 1;\n    local_3c = 0;\n  }" { (expression_statement "iVar15 = iVar15 + 1;" (assignment_expression "iVar15 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) })) (expression_statement "local_3c = local_3c + iVar14 * iVar15;" (assignment_expression "local_3c = local_3c + iVar14 * iVar15" identifier = (binary_expression "local_3c + iVar14 * iVar15" identifier + (binary_expression "iVar14 * iVar15" identifier * identifier))) ;) (expression_statement "iVar15 = iVar15 + local_3c;" (assignment_expression "iVar15 = iVar15 + local_3c" identifier = (binary_expression "iVar15 + local_3c" identifier + identifier)) ;) (if_statement "if (local_3c < iVar15) {\n    psVar6 = this->current_depth;\n    cache_view = this->image_view;\n    exception = this->exception;\n    do {\n      iVar14 = omp_get_thread_num();\n      if ((this->status != MagickFalse) &&\n         (local_44 = GetCacheViewVirtualPixels(cache_view,0,local_3c,pIVar5->columns,1,exception),\n         local_44 != (Quantum *)0x0)) {\n        puVar1 = psVar6 + iVar14;\n        uVar22 = *puVar1;\n        if (0 < (int)pIVar5->columns) {\n          local_40 = 0;\n          do {\n            sVar18 = pIVar5->number_channels;\n            if (0 < (int)sVar18) {\n              pPVar7 = pIVar5->channel_map;\n              iVar14 = 0;\n              do {\n                dVar13 = DAT_0029f738;\n                if (((pPVar7[pPVar7[iVar14].channel].traits & UpdatePixelTrait) !=\n                     UndefinedPixelTrait) && (uVar22 < 0x10)) {\n                  dVar2 = local_44[iVar14];\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar9 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar10 = 0.0;\n                          iVar20 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar9 = dVar13 * 0.0 * (double)DAT_0029f710;\n                      }\n                    }\n                    else {\n                      bVar19 = (byte)(uVar22 - 1);\n                      bVar8 = bVar19 & 0x1f;\n                      uVar16 = 2 << (bVar19 & 0x1f);\n                      uVar17 = uVar16;\n                      uVar12 = 0 << bVar8 | 2U >> 0x20 - bVar8;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar17 = 0;\n                        uVar12 = uVar16;\n                      }\n                      iVar20 = uVar17 - 1;\n                      dVar10 = (double)(short)iVar20;\n                      iVar21 = (uVar12 - 1) + (uint)(uVar17 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (DAT_0029f138 <= dVar10) {\n                          dVar9 = 0.0;\nLAB_0003cea2:\n                          dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;\n                        }\n                        else {\n                          dVar9 = 0.0;\nLAB_0003cfe6:\n                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar9 = (double)DAT_0029f710;\n                        dVar11 = (dVar2 * dVar10) / dVar9;\n                        if (dVar11 < (double)DAT_0029f714) {\n                          dVar11 = dVar11 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar11) {\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }\n                          if (uVar3 <= CONCAT44(iVar21,iVar20)) {\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar9 = (double)DAT_0029f710;\n                        }\n                      }\n                    }\n                    if (dVar9 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar14 = iVar14 + 1;\n                sVar18 = pIVar5->number_channels;\n              } while (iVar14 < (int)sVar18);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + sVar18;\n          } while (local_40 < (int)pIVar5->columns);\n        }\n        if (uVar22 == 0x10) {\n          this->status = MagickFalse;\n        }\n      }\n      local_3c = local_3c + 1;\n    } while (iVar15 != local_3c);\n  }" if (parenthesized_expression "(local_3c < iVar15)" ( (binary_expression "local_3c < iVar15" identifier < identifier) )) (compound_statement "{\n    psVar6 = this->current_depth;\n    cache_view = this->image_view;\n    exception = this->exception;\n    do {\n      iVar14 = omp_get_thread_num();\n      if ((this->status != MagickFalse) &&\n         (local_44 = GetCacheViewVirtualPixels(cache_view,0,local_3c,pIVar5->columns,1,exception),\n         local_44 != (Quantum *)0x0)) {\n        puVar1 = psVar6 + iVar14;\n        uVar22 = *puVar1;\n        if (0 < (int)pIVar5->columns) {\n          local_40 = 0;\n          do {\n            sVar18 = pIVar5->number_channels;\n            if (0 < (int)sVar18) {\n              pPVar7 = pIVar5->channel_map;\n              iVar14 = 0;\n              do {\n                dVar13 = DAT_0029f738;\n                if (((pPVar7[pPVar7[iVar14].channel].traits & UpdatePixelTrait) !=\n                     UndefinedPixelTrait) && (uVar22 < 0x10)) {\n                  dVar2 = local_44[iVar14];\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar9 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar10 = 0.0;\n                          iVar20 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar9 = dVar13 * 0.0 * (double)DAT_0029f710;\n                      }\n                    }\n                    else {\n                      bVar19 = (byte)(uVar22 - 1);\n                      bVar8 = bVar19 & 0x1f;\n                      uVar16 = 2 << (bVar19 & 0x1f);\n                      uVar17 = uVar16;\n                      uVar12 = 0 << bVar8 | 2U >> 0x20 - bVar8;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar17 = 0;\n                        uVar12 = uVar16;\n                      }\n                      iVar20 = uVar17 - 1;\n                      dVar10 = (double)(short)iVar20;\n                      iVar21 = (uVar12 - 1) + (uint)(uVar17 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (DAT_0029f138 <= dVar10) {\n                          dVar9 = 0.0;\nLAB_0003cea2:\n                          dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;\n                        }\n                        else {\n                          dVar9 = 0.0;\nLAB_0003cfe6:\n                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar9 = (double)DAT_0029f710;\n                        dVar11 = (dVar2 * dVar10) / dVar9;\n                        if (dVar11 < (double)DAT_0029f714) {\n                          dVar11 = dVar11 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar11) {\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }\n                          if (uVar3 <= CONCAT44(iVar21,iVar20)) {\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar9 = (double)DAT_0029f710;\n                        }\n                      }\n                    }\n                    if (dVar9 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar14 = iVar14 + 1;\n                sVar18 = pIVar5->number_channels;\n              } while (iVar14 < (int)sVar18);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + sVar18;\n          } while (local_40 < (int)pIVar5->columns);\n        }\n        if (uVar22 == 0x10) {\n          this->status = MagickFalse;\n        }\n      }\n      local_3c = local_3c + 1;\n    } while (iVar15 != local_3c);\n  }" { (expression_statement "psVar6 = this->current_depth;" (assignment_expression "psVar6 = this->current_depth" identifier = (field_expression "this->current_depth" identifier -> field_identifier)) ;) (expression_statement "cache_view = this->image_view;" (assignment_expression "cache_view = this->image_view" identifier = (field_expression "this->image_view" identifier -> field_identifier)) ;) (expression_statement "exception = this->exception;" (assignment_expression "exception = this->exception" identifier = (field_expression "this->exception" identifier -> field_identifier)) ;) (do_statement "do {\n      iVar14 = omp_get_thread_num();\n      if ((this->status != MagickFalse) &&\n         (local_44 = GetCacheViewVirtualPixels(cache_view,0,local_3c,pIVar5->columns,1,exception),\n         local_44 != (Quantum *)0x0)) {\n        puVar1 = psVar6 + iVar14;\n        uVar22 = *puVar1;\n        if (0 < (int)pIVar5->columns) {\n          local_40 = 0;\n          do {\n            sVar18 = pIVar5->number_channels;\n            if (0 < (int)sVar18) {\n              pPVar7 = pIVar5->channel_map;\n              iVar14 = 0;\n              do {\n                dVar13 = DAT_0029f738;\n                if (((pPVar7[pPVar7[iVar14].channel].traits & UpdatePixelTrait) !=\n                     UndefinedPixelTrait) && (uVar22 < 0x10)) {\n                  dVar2 = local_44[iVar14];\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar9 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar10 = 0.0;\n                          iVar20 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar9 = dVar13 * 0.0 * (double)DAT_0029f710;\n                      }\n                    }\n                    else {\n                      bVar19 = (byte)(uVar22 - 1);\n                      bVar8 = bVar19 & 0x1f;\n                      uVar16 = 2 << (bVar19 & 0x1f);\n                      uVar17 = uVar16;\n                      uVar12 = 0 << bVar8 | 2U >> 0x20 - bVar8;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar17 = 0;\n                        uVar12 = uVar16;\n                      }\n                      iVar20 = uVar17 - 1;\n                      dVar10 = (double)(short)iVar20;\n                      iVar21 = (uVar12 - 1) + (uint)(uVar17 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (DAT_0029f138 <= dVar10) {\n                          dVar9 = 0.0;\nLAB_0003cea2:\n                          dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;\n                        }\n                        else {\n                          dVar9 = 0.0;\nLAB_0003cfe6:\n                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar9 = (double)DAT_0029f710;\n                        dVar11 = (dVar2 * dVar10) / dVar9;\n                        if (dVar11 < (double)DAT_0029f714) {\n                          dVar11 = dVar11 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar11) {\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }\n                          if (uVar3 <= CONCAT44(iVar21,iVar20)) {\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar9 = (double)DAT_0029f710;\n                        }\n                      }\n                    }\n                    if (dVar9 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar14 = iVar14 + 1;\n                sVar18 = pIVar5->number_channels;\n              } while (iVar14 < (int)sVar18);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + sVar18;\n          } while (local_40 < (int)pIVar5->columns);\n        }\n        if (uVar22 == 0x10) {\n          this->status = MagickFalse;\n        }\n      }\n      local_3c = local_3c + 1;\n    } while (iVar15 != local_3c);" do (compound_statement "{\n      iVar14 = omp_get_thread_num();\n      if ((this->status != MagickFalse) &&\n         (local_44 = GetCacheViewVirtualPixels(cache_view,0,local_3c,pIVar5->columns,1,exception),\n         local_44 != (Quantum *)0x0)) {\n        puVar1 = psVar6 + iVar14;\n        uVar22 = *puVar1;\n        if (0 < (int)pIVar5->columns) {\n          local_40 = 0;\n          do {\n            sVar18 = pIVar5->number_channels;\n            if (0 < (int)sVar18) {\n              pPVar7 = pIVar5->channel_map;\n              iVar14 = 0;\n              do {\n                dVar13 = DAT_0029f738;\n                if (((pPVar7[pPVar7[iVar14].channel].traits & UpdatePixelTrait) !=\n                     UndefinedPixelTrait) && (uVar22 < 0x10)) {\n                  dVar2 = local_44[iVar14];\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar9 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar10 = 0.0;\n                          iVar20 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar9 = dVar13 * 0.0 * (double)DAT_0029f710;\n                      }\n                    }\n                    else {\n                      bVar19 = (byte)(uVar22 - 1);\n                      bVar8 = bVar19 & 0x1f;\n                      uVar16 = 2 << (bVar19 & 0x1f);\n                      uVar17 = uVar16;\n                      uVar12 = 0 << bVar8 | 2U >> 0x20 - bVar8;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar17 = 0;\n                        uVar12 = uVar16;\n                      }\n                      iVar20 = uVar17 - 1;\n                      dVar10 = (double)(short)iVar20;\n                      iVar21 = (uVar12 - 1) + (uint)(uVar17 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (DAT_0029f138 <= dVar10) {\n                          dVar9 = 0.0;\nLAB_0003cea2:\n                          dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;\n                        }\n                        else {\n                          dVar9 = 0.0;\nLAB_0003cfe6:\n                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar9 = (double)DAT_0029f710;\n                        dVar11 = (dVar2 * dVar10) / dVar9;\n                        if (dVar11 < (double)DAT_0029f714) {\n                          dVar11 = dVar11 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar11) {\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }\n                          if (uVar3 <= CONCAT44(iVar21,iVar20)) {\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar9 = (double)DAT_0029f710;\n                        }\n                      }\n                    }\n                    if (dVar9 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar14 = iVar14 + 1;\n                sVar18 = pIVar5->number_channels;\n              } while (iVar14 < (int)sVar18);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + sVar18;\n          } while (local_40 < (int)pIVar5->columns);\n        }\n        if (uVar22 == 0x10) {\n          this->status = MagickFalse;\n        }\n      }\n      local_3c = local_3c + 1;\n    }" { (expression_statement "iVar14 = omp_get_thread_num();" (assignment_expression "iVar14 = omp_get_thread_num()" identifier = (call_expression "omp_get_thread_num()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((this->status != MagickFalse) &&\n         (local_44 = GetCacheViewVirtualPixels(cache_view,0,local_3c,pIVar5->columns,1,exception),\n         local_44 != (Quantum *)0x0)) {\n        puVar1 = psVar6 + iVar14;\n        uVar22 = *puVar1;\n        if (0 < (int)pIVar5->columns) {\n          local_40 = 0;\n          do {\n            sVar18 = pIVar5->number_channels;\n            if (0 < (int)sVar18) {\n              pPVar7 = pIVar5->channel_map;\n              iVar14 = 0;\n              do {\n                dVar13 = DAT_0029f738;\n                if (((pPVar7[pPVar7[iVar14].channel].traits & UpdatePixelTrait) !=\n                     UndefinedPixelTrait) && (uVar22 < 0x10)) {\n                  dVar2 = local_44[iVar14];\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar9 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar10 = 0.0;\n                          iVar20 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar9 = dVar13 * 0.0 * (double)DAT_0029f710;\n                      }\n                    }\n                    else {\n                      bVar19 = (byte)(uVar22 - 1);\n                      bVar8 = bVar19 & 0x1f;\n                      uVar16 = 2 << (bVar19 & 0x1f);\n                      uVar17 = uVar16;\n                      uVar12 = 0 << bVar8 | 2U >> 0x20 - bVar8;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar17 = 0;\n                        uVar12 = uVar16;\n                      }\n                      iVar20 = uVar17 - 1;\n                      dVar10 = (double)(short)iVar20;\n                      iVar21 = (uVar12 - 1) + (uint)(uVar17 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (DAT_0029f138 <= dVar10) {\n                          dVar9 = 0.0;\nLAB_0003cea2:\n                          dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;\n                        }\n                        else {\n                          dVar9 = 0.0;\nLAB_0003cfe6:\n                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar9 = (double)DAT_0029f710;\n                        dVar11 = (dVar2 * dVar10) / dVar9;\n                        if (dVar11 < (double)DAT_0029f714) {\n                          dVar11 = dVar11 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar11) {\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }\n                          if (uVar3 <= CONCAT44(iVar21,iVar20)) {\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar9 = (double)DAT_0029f710;\n                        }\n                      }\n                    }\n                    if (dVar9 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar14 = iVar14 + 1;\n                sVar18 = pIVar5->number_channels;\n              } while (iVar14 < (int)sVar18);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + sVar18;\n          } while (local_40 < (int)pIVar5->columns);\n        }\n        if (uVar22 == 0x10) {\n          this->status = MagickFalse;\n        }\n      }" if (parenthesized_expression "((this->status != MagickFalse) &&\n         (local_44 = GetCacheViewVirtualPixels(cache_view,0,local_3c,pIVar5->columns,1,exception),\n         local_44 != (Quantum *)0x0))" ( (binary_expression "(this->status != MagickFalse) &&\n         (local_44 = GetCacheViewVirtualPixels(cache_view,0,local_3c,pIVar5->columns,1,exception),\n         local_44 != (Quantum *)0x0)" (parenthesized_expression "(this->status != MagickFalse)" ( (binary_expression "this->status != MagickFalse" (field_expression "this->status" identifier -> field_identifier) != identifier) )) && (parenthesized_expression "(local_44 = GetCacheViewVirtualPixels(cache_view,0,local_3c,pIVar5->columns,1,exception),\n         local_44 != (Quantum *)0x0)" ( (comma_expression "local_44 = GetCacheViewVirtualPixels(cache_view,0,local_3c,pIVar5->columns,1,exception),\n         local_44 != (Quantum *)0x0" (assignment_expression "local_44 = GetCacheViewVirtualPixels(cache_view,0,local_3c,pIVar5->columns,1,exception)" identifier = (call_expression "GetCacheViewVirtualPixels(cache_view,0,local_3c,pIVar5->columns,1,exception)" identifier (argument_list "(cache_view,0,local_3c,pIVar5->columns,1,exception)" ( identifier , number_literal , identifier , (field_expression "pIVar5->columns" identifier -> field_identifier) , number_literal , identifier )))) , (binary_expression "local_44 != (Quantum *)0x0" identifier != (cast_expression "(Quantum *)0x0" ( (type_descriptor "Quantum *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n        puVar1 = psVar6 + iVar14;\n        uVar22 = *puVar1;\n        if (0 < (int)pIVar5->columns) {\n          local_40 = 0;\n          do {\n            sVar18 = pIVar5->number_channels;\n            if (0 < (int)sVar18) {\n              pPVar7 = pIVar5->channel_map;\n              iVar14 = 0;\n              do {\n                dVar13 = DAT_0029f738;\n                if (((pPVar7[pPVar7[iVar14].channel].traits & UpdatePixelTrait) !=\n                     UndefinedPixelTrait) && (uVar22 < 0x10)) {\n                  dVar2 = local_44[iVar14];\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar9 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar10 = 0.0;\n                          iVar20 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar9 = dVar13 * 0.0 * (double)DAT_0029f710;\n                      }\n                    }\n                    else {\n                      bVar19 = (byte)(uVar22 - 1);\n                      bVar8 = bVar19 & 0x1f;\n                      uVar16 = 2 << (bVar19 & 0x1f);\n                      uVar17 = uVar16;\n                      uVar12 = 0 << bVar8 | 2U >> 0x20 - bVar8;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar17 = 0;\n                        uVar12 = uVar16;\n                      }\n                      iVar20 = uVar17 - 1;\n                      dVar10 = (double)(short)iVar20;\n                      iVar21 = (uVar12 - 1) + (uint)(uVar17 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (DAT_0029f138 <= dVar10) {\n                          dVar9 = 0.0;\nLAB_0003cea2:\n                          dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;\n                        }\n                        else {\n                          dVar9 = 0.0;\nLAB_0003cfe6:\n                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar9 = (double)DAT_0029f710;\n                        dVar11 = (dVar2 * dVar10) / dVar9;\n                        if (dVar11 < (double)DAT_0029f714) {\n                          dVar11 = dVar11 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar11) {\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }\n                          if (uVar3 <= CONCAT44(iVar21,iVar20)) {\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar9 = (double)DAT_0029f710;\n                        }\n                      }\n                    }\n                    if (dVar9 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar14 = iVar14 + 1;\n                sVar18 = pIVar5->number_channels;\n              } while (iVar14 < (int)sVar18);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + sVar18;\n          } while (local_40 < (int)pIVar5->columns);\n        }\n        if (uVar22 == 0x10) {\n          this->status = MagickFalse;\n        }\n      }" { (expression_statement "puVar1 = psVar6 + iVar14;" (assignment_expression "puVar1 = psVar6 + iVar14" identifier = (binary_expression "psVar6 + iVar14" identifier + identifier)) ;) (expression_statement "uVar22 = *puVar1;" (assignment_expression "uVar22 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (if_statement "if (0 < (int)pIVar5->columns) {\n          local_40 = 0;\n          do {\n            sVar18 = pIVar5->number_channels;\n            if (0 < (int)sVar18) {\n              pPVar7 = pIVar5->channel_map;\n              iVar14 = 0;\n              do {\n                dVar13 = DAT_0029f738;\n                if (((pPVar7[pPVar7[iVar14].channel].traits & UpdatePixelTrait) !=\n                     UndefinedPixelTrait) && (uVar22 < 0x10)) {\n                  dVar2 = local_44[iVar14];\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar9 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar10 = 0.0;\n                          iVar20 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar9 = dVar13 * 0.0 * (double)DAT_0029f710;\n                      }\n                    }\n                    else {\n                      bVar19 = (byte)(uVar22 - 1);\n                      bVar8 = bVar19 & 0x1f;\n                      uVar16 = 2 << (bVar19 & 0x1f);\n                      uVar17 = uVar16;\n                      uVar12 = 0 << bVar8 | 2U >> 0x20 - bVar8;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar17 = 0;\n                        uVar12 = uVar16;\n                      }\n                      iVar20 = uVar17 - 1;\n                      dVar10 = (double)(short)iVar20;\n                      iVar21 = (uVar12 - 1) + (uint)(uVar17 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (DAT_0029f138 <= dVar10) {\n                          dVar9 = 0.0;\nLAB_0003cea2:\n                          dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;\n                        }\n                        else {\n                          dVar9 = 0.0;\nLAB_0003cfe6:\n                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar9 = (double)DAT_0029f710;\n                        dVar11 = (dVar2 * dVar10) / dVar9;\n                        if (dVar11 < (double)DAT_0029f714) {\n                          dVar11 = dVar11 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar11) {\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }\n                          if (uVar3 <= CONCAT44(iVar21,iVar20)) {\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar9 = (double)DAT_0029f710;\n                        }\n                      }\n                    }\n                    if (dVar9 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar14 = iVar14 + 1;\n                sVar18 = pIVar5->number_channels;\n              } while (iVar14 < (int)sVar18);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + sVar18;\n          } while (local_40 < (int)pIVar5->columns);\n        }" if (parenthesized_expression "(0 < (int)pIVar5->columns)" ( (binary_expression "0 < (int)pIVar5->columns" number_literal < (cast_expression "(int)pIVar5->columns" ( (type_descriptor "int" primitive_type) ) (field_expression "pIVar5->columns" identifier -> field_identifier))) )) (compound_statement "{\n          local_40 = 0;\n          do {\n            sVar18 = pIVar5->number_channels;\n            if (0 < (int)sVar18) {\n              pPVar7 = pIVar5->channel_map;\n              iVar14 = 0;\n              do {\n                dVar13 = DAT_0029f738;\n                if (((pPVar7[pPVar7[iVar14].channel].traits & UpdatePixelTrait) !=\n                     UndefinedPixelTrait) && (uVar22 < 0x10)) {\n                  dVar2 = local_44[iVar14];\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar9 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar10 = 0.0;\n                          iVar20 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar9 = dVar13 * 0.0 * (double)DAT_0029f710;\n                      }\n                    }\n                    else {\n                      bVar19 = (byte)(uVar22 - 1);\n                      bVar8 = bVar19 & 0x1f;\n                      uVar16 = 2 << (bVar19 & 0x1f);\n                      uVar17 = uVar16;\n                      uVar12 = 0 << bVar8 | 2U >> 0x20 - bVar8;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar17 = 0;\n                        uVar12 = uVar16;\n                      }\n                      iVar20 = uVar17 - 1;\n                      dVar10 = (double)(short)iVar20;\n                      iVar21 = (uVar12 - 1) + (uint)(uVar17 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (DAT_0029f138 <= dVar10) {\n                          dVar9 = 0.0;\nLAB_0003cea2:\n                          dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;\n                        }\n                        else {\n                          dVar9 = 0.0;\nLAB_0003cfe6:\n                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar9 = (double)DAT_0029f710;\n                        dVar11 = (dVar2 * dVar10) / dVar9;\n                        if (dVar11 < (double)DAT_0029f714) {\n                          dVar11 = dVar11 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar11) {\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }\n                          if (uVar3 <= CONCAT44(iVar21,iVar20)) {\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar9 = (double)DAT_0029f710;\n                        }\n                      }\n                    }\n                    if (dVar9 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar14 = iVar14 + 1;\n                sVar18 = pIVar5->number_channels;\n              } while (iVar14 < (int)sVar18);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + sVar18;\n          } while (local_40 < (int)pIVar5->columns);\n        }" { (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (do_statement "do {\n            sVar18 = pIVar5->number_channels;\n            if (0 < (int)sVar18) {\n              pPVar7 = pIVar5->channel_map;\n              iVar14 = 0;\n              do {\n                dVar13 = DAT_0029f738;\n                if (((pPVar7[pPVar7[iVar14].channel].traits & UpdatePixelTrait) !=\n                     UndefinedPixelTrait) && (uVar22 < 0x10)) {\n                  dVar2 = local_44[iVar14];\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar9 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar10 = 0.0;\n                          iVar20 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar9 = dVar13 * 0.0 * (double)DAT_0029f710;\n                      }\n                    }\n                    else {\n                      bVar19 = (byte)(uVar22 - 1);\n                      bVar8 = bVar19 & 0x1f;\n                      uVar16 = 2 << (bVar19 & 0x1f);\n                      uVar17 = uVar16;\n                      uVar12 = 0 << bVar8 | 2U >> 0x20 - bVar8;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar17 = 0;\n                        uVar12 = uVar16;\n                      }\n                      iVar20 = uVar17 - 1;\n                      dVar10 = (double)(short)iVar20;\n                      iVar21 = (uVar12 - 1) + (uint)(uVar17 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (DAT_0029f138 <= dVar10) {\n                          dVar9 = 0.0;\nLAB_0003cea2:\n                          dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;\n                        }\n                        else {\n                          dVar9 = 0.0;\nLAB_0003cfe6:\n                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar9 = (double)DAT_0029f710;\n                        dVar11 = (dVar2 * dVar10) / dVar9;\n                        if (dVar11 < (double)DAT_0029f714) {\n                          dVar11 = dVar11 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar11) {\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }\n                          if (uVar3 <= CONCAT44(iVar21,iVar20)) {\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar9 = (double)DAT_0029f710;\n                        }\n                      }\n                    }\n                    if (dVar9 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar14 = iVar14 + 1;\n                sVar18 = pIVar5->number_channels;\n              } while (iVar14 < (int)sVar18);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + sVar18;\n          } while (local_40 < (int)pIVar5->columns);" do (compound_statement "{\n            sVar18 = pIVar5->number_channels;\n            if (0 < (int)sVar18) {\n              pPVar7 = pIVar5->channel_map;\n              iVar14 = 0;\n              do {\n                dVar13 = DAT_0029f738;\n                if (((pPVar7[pPVar7[iVar14].channel].traits & UpdatePixelTrait) !=\n                     UndefinedPixelTrait) && (uVar22 < 0x10)) {\n                  dVar2 = local_44[iVar14];\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar9 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar10 = 0.0;\n                          iVar20 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar9 = dVar13 * 0.0 * (double)DAT_0029f710;\n                      }\n                    }\n                    else {\n                      bVar19 = (byte)(uVar22 - 1);\n                      bVar8 = bVar19 & 0x1f;\n                      uVar16 = 2 << (bVar19 & 0x1f);\n                      uVar17 = uVar16;\n                      uVar12 = 0 << bVar8 | 2U >> 0x20 - bVar8;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar17 = 0;\n                        uVar12 = uVar16;\n                      }\n                      iVar20 = uVar17 - 1;\n                      dVar10 = (double)(short)iVar20;\n                      iVar21 = (uVar12 - 1) + (uint)(uVar17 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (DAT_0029f138 <= dVar10) {\n                          dVar9 = 0.0;\nLAB_0003cea2:\n                          dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;\n                        }\n                        else {\n                          dVar9 = 0.0;\nLAB_0003cfe6:\n                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar9 = (double)DAT_0029f710;\n                        dVar11 = (dVar2 * dVar10) / dVar9;\n                        if (dVar11 < (double)DAT_0029f714) {\n                          dVar11 = dVar11 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar11) {\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }\n                          if (uVar3 <= CONCAT44(iVar21,iVar20)) {\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar9 = (double)DAT_0029f710;\n                        }\n                      }\n                    }\n                    if (dVar9 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar14 = iVar14 + 1;\n                sVar18 = pIVar5->number_channels;\n              } while (iVar14 < (int)sVar18);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + sVar18;\n          }" { (expression_statement "sVar18 = pIVar5->number_channels;" (assignment_expression "sVar18 = pIVar5->number_channels" identifier = (field_expression "pIVar5->number_channels" identifier -> field_identifier)) ;) (if_statement "if (0 < (int)sVar18) {\n              pPVar7 = pIVar5->channel_map;\n              iVar14 = 0;\n              do {\n                dVar13 = DAT_0029f738;\n                if (((pPVar7[pPVar7[iVar14].channel].traits & UpdatePixelTrait) !=\n                     UndefinedPixelTrait) && (uVar22 < 0x10)) {\n                  dVar2 = local_44[iVar14];\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar9 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar10 = 0.0;\n                          iVar20 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar9 = dVar13 * 0.0 * (double)DAT_0029f710;\n                      }\n                    }\n                    else {\n                      bVar19 = (byte)(uVar22 - 1);\n                      bVar8 = bVar19 & 0x1f;\n                      uVar16 = 2 << (bVar19 & 0x1f);\n                      uVar17 = uVar16;\n                      uVar12 = 0 << bVar8 | 2U >> 0x20 - bVar8;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar17 = 0;\n                        uVar12 = uVar16;\n                      }\n                      iVar20 = uVar17 - 1;\n                      dVar10 = (double)(short)iVar20;\n                      iVar21 = (uVar12 - 1) + (uint)(uVar17 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (DAT_0029f138 <= dVar10) {\n                          dVar9 = 0.0;\nLAB_0003cea2:\n                          dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;\n                        }\n                        else {\n                          dVar9 = 0.0;\nLAB_0003cfe6:\n                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar9 = (double)DAT_0029f710;\n                        dVar11 = (dVar2 * dVar10) / dVar9;\n                        if (dVar11 < (double)DAT_0029f714) {\n                          dVar11 = dVar11 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar11) {\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }\n                          if (uVar3 <= CONCAT44(iVar21,iVar20)) {\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar9 = (double)DAT_0029f710;\n                        }\n                      }\n                    }\n                    if (dVar9 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar14 = iVar14 + 1;\n                sVar18 = pIVar5->number_channels;\n              } while (iVar14 < (int)sVar18);\n            }" if (parenthesized_expression "(0 < (int)sVar18)" ( (binary_expression "0 < (int)sVar18" number_literal < (cast_expression "(int)sVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              pPVar7 = pIVar5->channel_map;\n              iVar14 = 0;\n              do {\n                dVar13 = DAT_0029f738;\n                if (((pPVar7[pPVar7[iVar14].channel].traits & UpdatePixelTrait) !=\n                     UndefinedPixelTrait) && (uVar22 < 0x10)) {\n                  dVar2 = local_44[iVar14];\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar9 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar10 = 0.0;\n                          iVar20 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar9 = dVar13 * 0.0 * (double)DAT_0029f710;\n                      }\n                    }\n                    else {\n                      bVar19 = (byte)(uVar22 - 1);\n                      bVar8 = bVar19 & 0x1f;\n                      uVar16 = 2 << (bVar19 & 0x1f);\n                      uVar17 = uVar16;\n                      uVar12 = 0 << bVar8 | 2U >> 0x20 - bVar8;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar17 = 0;\n                        uVar12 = uVar16;\n                      }\n                      iVar20 = uVar17 - 1;\n                      dVar10 = (double)(short)iVar20;\n                      iVar21 = (uVar12 - 1) + (uint)(uVar17 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (DAT_0029f138 <= dVar10) {\n                          dVar9 = 0.0;\nLAB_0003cea2:\n                          dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;\n                        }\n                        else {\n                          dVar9 = 0.0;\nLAB_0003cfe6:\n                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar9 = (double)DAT_0029f710;\n                        dVar11 = (dVar2 * dVar10) / dVar9;\n                        if (dVar11 < (double)DAT_0029f714) {\n                          dVar11 = dVar11 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar11) {\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }\n                          if (uVar3 <= CONCAT44(iVar21,iVar20)) {\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar9 = (double)DAT_0029f710;\n                        }\n                      }\n                    }\n                    if (dVar9 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar14 = iVar14 + 1;\n                sVar18 = pIVar5->number_channels;\n              } while (iVar14 < (int)sVar18);\n            }" { (expression_statement "pPVar7 = pIVar5->channel_map;" (assignment_expression "pPVar7 = pIVar5->channel_map" identifier = (field_expression "pIVar5->channel_map" identifier -> field_identifier)) ;) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (do_statement "do {\n                dVar13 = DAT_0029f738;\n                if (((pPVar7[pPVar7[iVar14].channel].traits & UpdatePixelTrait) !=\n                     UndefinedPixelTrait) && (uVar22 < 0x10)) {\n                  dVar2 = local_44[iVar14];\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar9 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar10 = 0.0;\n                          iVar20 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar9 = dVar13 * 0.0 * (double)DAT_0029f710;\n                      }\n                    }\n                    else {\n                      bVar19 = (byte)(uVar22 - 1);\n                      bVar8 = bVar19 & 0x1f;\n                      uVar16 = 2 << (bVar19 & 0x1f);\n                      uVar17 = uVar16;\n                      uVar12 = 0 << bVar8 | 2U >> 0x20 - bVar8;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar17 = 0;\n                        uVar12 = uVar16;\n                      }\n                      iVar20 = uVar17 - 1;\n                      dVar10 = (double)(short)iVar20;\n                      iVar21 = (uVar12 - 1) + (uint)(uVar17 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (DAT_0029f138 <= dVar10) {\n                          dVar9 = 0.0;\nLAB_0003cea2:\n                          dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;\n                        }\n                        else {\n                          dVar9 = 0.0;\nLAB_0003cfe6:\n                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar9 = (double)DAT_0029f710;\n                        dVar11 = (dVar2 * dVar10) / dVar9;\n                        if (dVar11 < (double)DAT_0029f714) {\n                          dVar11 = dVar11 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar11) {\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }\n                          if (uVar3 <= CONCAT44(iVar21,iVar20)) {\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar9 = (double)DAT_0029f710;\n                        }\n                      }\n                    }\n                    if (dVar9 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar14 = iVar14 + 1;\n                sVar18 = pIVar5->number_channels;\n              } while (iVar14 < (int)sVar18);" do (compound_statement "{\n                dVar13 = DAT_0029f738;\n                if (((pPVar7[pPVar7[iVar14].channel].traits & UpdatePixelTrait) !=\n                     UndefinedPixelTrait) && (uVar22 < 0x10)) {\n                  dVar2 = local_44[iVar14];\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar9 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar10 = 0.0;\n                          iVar20 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar9 = dVar13 * 0.0 * (double)DAT_0029f710;\n                      }\n                    }\n                    else {\n                      bVar19 = (byte)(uVar22 - 1);\n                      bVar8 = bVar19 & 0x1f;\n                      uVar16 = 2 << (bVar19 & 0x1f);\n                      uVar17 = uVar16;\n                      uVar12 = 0 << bVar8 | 2U >> 0x20 - bVar8;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar17 = 0;\n                        uVar12 = uVar16;\n                      }\n                      iVar20 = uVar17 - 1;\n                      dVar10 = (double)(short)iVar20;\n                      iVar21 = (uVar12 - 1) + (uint)(uVar17 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (DAT_0029f138 <= dVar10) {\n                          dVar9 = 0.0;\nLAB_0003cea2:\n                          dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;\n                        }\n                        else {\n                          dVar9 = 0.0;\nLAB_0003cfe6:\n                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar9 = (double)DAT_0029f710;\n                        dVar11 = (dVar2 * dVar10) / dVar9;\n                        if (dVar11 < (double)DAT_0029f714) {\n                          dVar11 = dVar11 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar11) {\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }\n                          if (uVar3 <= CONCAT44(iVar21,iVar20)) {\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar9 = (double)DAT_0029f710;\n                        }\n                      }\n                    }\n                    if (dVar9 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar14 = iVar14 + 1;\n                sVar18 = pIVar5->number_channels;\n              }" { (expression_statement "dVar13 = DAT_0029f738;" (assignment_expression "dVar13 = DAT_0029f738" identifier = identifier) ;) (if_statement "if (((pPVar7[pPVar7[iVar14].channel].traits & UpdatePixelTrait) !=\n                     UndefinedPixelTrait) && (uVar22 < 0x10)) {\n                  dVar2 = local_44[iVar14];\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar9 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar10 = 0.0;\n                          iVar20 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar9 = dVar13 * 0.0 * (double)DAT_0029f710;\n                      }\n                    }\n                    else {\n                      bVar19 = (byte)(uVar22 - 1);\n                      bVar8 = bVar19 & 0x1f;\n                      uVar16 = 2 << (bVar19 & 0x1f);\n                      uVar17 = uVar16;\n                      uVar12 = 0 << bVar8 | 2U >> 0x20 - bVar8;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar17 = 0;\n                        uVar12 = uVar16;\n                      }\n                      iVar20 = uVar17 - 1;\n                      dVar10 = (double)(short)iVar20;\n                      iVar21 = (uVar12 - 1) + (uint)(uVar17 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (DAT_0029f138 <= dVar10) {\n                          dVar9 = 0.0;\nLAB_0003cea2:\n                          dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;\n                        }\n                        else {\n                          dVar9 = 0.0;\nLAB_0003cfe6:\n                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar9 = (double)DAT_0029f710;\n                        dVar11 = (dVar2 * dVar10) / dVar9;\n                        if (dVar11 < (double)DAT_0029f714) {\n                          dVar11 = dVar11 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar11) {\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }\n                          if (uVar3 <= CONCAT44(iVar21,iVar20)) {\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar9 = (double)DAT_0029f710;\n                        }\n                      }\n                    }\n                    if (dVar9 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }" if (parenthesized_expression "(((pPVar7[pPVar7[iVar14].channel].traits & UpdatePixelTrait) !=\n                     UndefinedPixelTrait) && (uVar22 < 0x10))" ( (binary_expression "((pPVar7[pPVar7[iVar14].channel].traits & UpdatePixelTrait) !=\n                     UndefinedPixelTrait) && (uVar22 < 0x10)" (parenthesized_expression "((pPVar7[pPVar7[iVar14].channel].traits & UpdatePixelTrait) !=\n                     UndefinedPixelTrait)" ( (binary_expression "(pPVar7[pPVar7[iVar14].channel].traits & UpdatePixelTrait) !=\n                     UndefinedPixelTrait" (parenthesized_expression "(pPVar7[pPVar7[iVar14].channel].traits & UpdatePixelTrait)" ( (binary_expression "pPVar7[pPVar7[iVar14].channel].traits & UpdatePixelTrait" (field_expression "pPVar7[pPVar7[iVar14].channel].traits" (subscript_expression "pPVar7[pPVar7[iVar14].channel]" identifier [ (field_expression "pPVar7[iVar14].channel" (subscript_expression "pPVar7[iVar14]" identifier [ identifier ]) . field_identifier) ]) . field_identifier) & identifier) )) != identifier) )) && (parenthesized_expression "(uVar22 < 0x10)" ( (binary_expression "uVar22 < 0x10" identifier < number_literal) ))) )) (compound_statement "{\n                  dVar2 = local_44[iVar14];\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar9 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar10 = 0.0;\n                          iVar20 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar9 = dVar13 * 0.0 * (double)DAT_0029f710;\n                      }\n                    }\n                    else {\n                      bVar19 = (byte)(uVar22 - 1);\n                      bVar8 = bVar19 & 0x1f;\n                      uVar16 = 2 << (bVar19 & 0x1f);\n                      uVar17 = uVar16;\n                      uVar12 = 0 << bVar8 | 2U >> 0x20 - bVar8;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar17 = 0;\n                        uVar12 = uVar16;\n                      }\n                      iVar20 = uVar17 - 1;\n                      dVar10 = (double)(short)iVar20;\n                      iVar21 = (uVar12 - 1) + (uint)(uVar17 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (DAT_0029f138 <= dVar10) {\n                          dVar9 = 0.0;\nLAB_0003cea2:\n                          dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;\n                        }\n                        else {\n                          dVar9 = 0.0;\nLAB_0003cfe6:\n                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar9 = (double)DAT_0029f710;\n                        dVar11 = (dVar2 * dVar10) / dVar9;\n                        if (dVar11 < (double)DAT_0029f714) {\n                          dVar11 = dVar11 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar11) {\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }\n                          if (uVar3 <= CONCAT44(iVar21,iVar20)) {\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar9 = (double)DAT_0029f710;\n                        }\n                      }\n                    }\n                    if (dVar9 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }" { (expression_statement "dVar2 = local_44[iVar14];" (assignment_expression "dVar2 = local_44[iVar14]" identifier = (subscript_expression "local_44[iVar14]" identifier [ identifier ])) ;) (do_statement "do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar9 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar10 = 0.0;\n                          iVar20 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar9 = dVar13 * 0.0 * (double)DAT_0029f710;\n                      }\n                    }\n                    else {\n                      bVar19 = (byte)(uVar22 - 1);\n                      bVar8 = bVar19 & 0x1f;\n                      uVar16 = 2 << (bVar19 & 0x1f);\n                      uVar17 = uVar16;\n                      uVar12 = 0 << bVar8 | 2U >> 0x20 - bVar8;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar17 = 0;\n                        uVar12 = uVar16;\n                      }\n                      iVar20 = uVar17 - 1;\n                      dVar10 = (double)(short)iVar20;\n                      iVar21 = (uVar12 - 1) + (uint)(uVar17 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (DAT_0029f138 <= dVar10) {\n                          dVar9 = 0.0;\nLAB_0003cea2:\n                          dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;\n                        }\n                        else {\n                          dVar9 = 0.0;\nLAB_0003cfe6:\n                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar9 = (double)DAT_0029f710;\n                        dVar11 = (dVar2 * dVar10) / dVar9;\n                        if (dVar11 < (double)DAT_0029f714) {\n                          dVar11 = dVar11 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar11) {\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }\n                          if (uVar3 <= CONCAT44(iVar21,iVar20)) {\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar9 = (double)DAT_0029f710;\n                        }\n                      }\n                    }\n                    if (dVar9 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);" do (compound_statement "{\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar9 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar10 = 0.0;\n                          iVar20 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar9 = dVar13 * 0.0 * (double)DAT_0029f710;\n                      }\n                    }\n                    else {\n                      bVar19 = (byte)(uVar22 - 1);\n                      bVar8 = bVar19 & 0x1f;\n                      uVar16 = 2 << (bVar19 & 0x1f);\n                      uVar17 = uVar16;\n                      uVar12 = 0 << bVar8 | 2U >> 0x20 - bVar8;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar17 = 0;\n                        uVar12 = uVar16;\n                      }\n                      iVar20 = uVar17 - 1;\n                      dVar10 = (double)(short)iVar20;\n                      iVar21 = (uVar12 - 1) + (uint)(uVar17 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (DAT_0029f138 <= dVar10) {\n                          dVar9 = 0.0;\nLAB_0003cea2:\n                          dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;\n                        }\n                        else {\n                          dVar9 = 0.0;\nLAB_0003cfe6:\n                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar9 = (double)DAT_0029f710;\n                        dVar11 = (dVar2 * dVar10) / dVar9;\n                        if (dVar11 < (double)DAT_0029f714) {\n                          dVar11 = dVar11 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar11) {\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }\n                          if (uVar3 <= CONCAT44(iVar21,iVar20)) {\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar9 = (double)DAT_0029f710;\n                        }\n                      }\n                    }\n                    if (dVar9 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  }" { (if_statement "if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar9 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar10 = 0.0;\n                          iVar20 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar9 = dVar13 * 0.0 * (double)DAT_0029f710;\n                      }\n                    }\n                    else {\n                      bVar19 = (byte)(uVar22 - 1);\n                      bVar8 = bVar19 & 0x1f;\n                      uVar16 = 2 << (bVar19 & 0x1f);\n                      uVar17 = uVar16;\n                      uVar12 = 0 << bVar8 | 2U >> 0x20 - bVar8;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar17 = 0;\n                        uVar12 = uVar16;\n                      }\n                      iVar20 = uVar17 - 1;\n                      dVar10 = (double)(short)iVar20;\n                      iVar21 = (uVar12 - 1) + (uint)(uVar17 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (DAT_0029f138 <= dVar10) {\n                          dVar9 = 0.0;\nLAB_0003cea2:\n                          dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;\n                        }\n                        else {\n                          dVar9 = 0.0;\nLAB_0003cfe6:\n                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar9 = (double)DAT_0029f710;\n                        dVar11 = (dVar2 * dVar10) / dVar9;\n                        if (dVar11 < (double)DAT_0029f714) {\n                          dVar11 = dVar11 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar11) {\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }\n                          if (uVar3 <= CONCAT44(iVar21,iVar20)) {\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar9 = (double)DAT_0029f710;\n                        }\n                      }\n                    }" if (parenthesized_expression "(uVar22 == 0)" ( (binary_expression "uVar22 == 0" identifier == number_literal) )) (compound_statement "{\n                      if (NAN(dVar2)) {\n                        dVar9 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar10 = 0.0;\n                          iVar20 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar9 = dVar13 * 0.0 * (double)DAT_0029f710;\n                      }\n                    }" { (if_statement "if (NAN(dVar2)) {\n                        dVar9 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar10 = 0.0;\n                          iVar20 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar9 = dVar13 * 0.0 * (double)DAT_0029f710;\n                      }" if (parenthesized_expression "(NAN(dVar2))" ( (call_expression "NAN(dVar2)" identifier (argument_list "(dVar2)" ( identifier ))) )) (compound_statement "{\n                        dVar9 = 0.0;\n                      }" { (expression_statement "dVar9 = 0.0;" (assignment_expression "dVar9 = 0.0" identifier = number_literal) ;) }) (else_clause "else {\n                        if (0.0 < dVar2) {\n                          dVar10 = 0.0;\n                          iVar20 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar9 = dVar13 * 0.0 * (double)DAT_0029f710;\n                      }" else (compound_statement "{\n                        if (0.0 < dVar2) {\n                          dVar10 = 0.0;\n                          iVar20 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar9 = dVar13 * 0.0 * (double)DAT_0029f710;\n                      }" { (if_statement "if (0.0 < dVar2) {\n                          dVar10 = 0.0;\n                          iVar20 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }" if (parenthesized_expression "(0.0 < dVar2)" ( (binary_expression "0.0 < dVar2" number_literal < identifier) )) (compound_statement "{\n                          dVar10 = 0.0;\n                          iVar20 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }" { (expression_statement "dVar10 = 0.0;" (assignment_expression "dVar10 = 0.0" identifier = number_literal) ;) (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" identifier = number_literal) ;) (expression_statement "iVar21 = 0;" (assignment_expression "iVar21 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0003ce0c;" goto statement_identifier ;) })) (expression_statement "dVar9 = dVar13 * 0.0 * (double)DAT_0029f710;" (assignment_expression "dVar9 = dVar13 * 0.0 * (double)DAT_0029f710" identifier = (binary_expression "dVar13 * 0.0 * (double)DAT_0029f710" (binary_expression "dVar13 * 0.0" identifier * number_literal) * (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;) }))) }) (else_clause "else {\n                      bVar19 = (byte)(uVar22 - 1);\n                      bVar8 = bVar19 & 0x1f;\n                      uVar16 = 2 << (bVar19 & 0x1f);\n                      uVar17 = uVar16;\n                      uVar12 = 0 << bVar8 | 2U >> 0x20 - bVar8;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar17 = 0;\n                        uVar12 = uVar16;\n                      }\n                      iVar20 = uVar17 - 1;\n                      dVar10 = (double)(short)iVar20;\n                      iVar21 = (uVar12 - 1) + (uint)(uVar17 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (DAT_0029f138 <= dVar10) {\n                          dVar9 = 0.0;\nLAB_0003cea2:\n                          dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;\n                        }\n                        else {\n                          dVar9 = 0.0;\nLAB_0003cfe6:\n                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar9 = (double)DAT_0029f710;\n                        dVar11 = (dVar2 * dVar10) / dVar9;\n                        if (dVar11 < (double)DAT_0029f714) {\n                          dVar11 = dVar11 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar11) {\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }\n                          if (uVar3 <= CONCAT44(iVar21,iVar20)) {\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar9 = (double)DAT_0029f710;\n                        }\n                      }\n                    }" else (compound_statement "{\n                      bVar19 = (byte)(uVar22 - 1);\n                      bVar8 = bVar19 & 0x1f;\n                      uVar16 = 2 << (bVar19 & 0x1f);\n                      uVar17 = uVar16;\n                      uVar12 = 0 << bVar8 | 2U >> 0x20 - bVar8;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar17 = 0;\n                        uVar12 = uVar16;\n                      }\n                      iVar20 = uVar17 - 1;\n                      dVar10 = (double)(short)iVar20;\n                      iVar21 = (uVar12 - 1) + (uint)(uVar17 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (DAT_0029f138 <= dVar10) {\n                          dVar9 = 0.0;\nLAB_0003cea2:\n                          dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;\n                        }\n                        else {\n                          dVar9 = 0.0;\nLAB_0003cfe6:\n                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar9 = (double)DAT_0029f710;\n                        dVar11 = (dVar2 * dVar10) / dVar9;\n                        if (dVar11 < (double)DAT_0029f714) {\n                          dVar11 = dVar11 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar11) {\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }\n                          if (uVar3 <= CONCAT44(iVar21,iVar20)) {\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar9 = (double)DAT_0029f710;\n                        }\n                      }\n                    }" { (expression_statement "bVar19 = (byte)(uVar22 - 1);" (assignment_expression "bVar19 = (byte)(uVar22 - 1)" identifier = (call_expression "(byte)(uVar22 - 1)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar22 - 1)" ( (binary_expression "uVar22 - 1" identifier - number_literal) )))) ;) (expression_statement "bVar8 = bVar19 & 0x1f;" (assignment_expression "bVar8 = bVar19 & 0x1f" identifier = (binary_expression "bVar19 & 0x1f" identifier & number_literal)) ;) (expression_statement "uVar16 = 2 << (bVar19 & 0x1f);" (assignment_expression "uVar16 = 2 << (bVar19 & 0x1f)" identifier = (binary_expression "2 << (bVar19 & 0x1f)" number_literal << (parenthesized_expression "(bVar19 & 0x1f)" ( (binary_expression "bVar19 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar17 = uVar16;" (assignment_expression "uVar17 = uVar16" identifier = identifier) ;) (expression_statement "uVar12 = 0 << bVar8 | 2U >> 0x20 - bVar8;" (assignment_expression "uVar12 = 0 << bVar8 | 2U >> 0x20 - bVar8" identifier = (binary_expression "0 << bVar8 | 2U >> 0x20 - bVar8" (binary_expression "0 << bVar8" number_literal << identifier) | (binary_expression "2U >> 0x20 - bVar8" number_literal >> (binary_expression "0x20 - bVar8" number_literal - identifier)))) ;) (if_statement "if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar17 = 0;\n                        uVar12 = uVar16;\n                      }" if (parenthesized_expression "((uVar22 - 1 & 0x20) != 0)" ( (binary_expression "(uVar22 - 1 & 0x20) != 0" (parenthesized_expression "(uVar22 - 1 & 0x20)" ( (binary_expression "uVar22 - 1 & 0x20" (binary_expression "uVar22 - 1" identifier - number_literal) & number_literal) )) != number_literal) )) (compound_statement "{\n                        uVar17 = 0;\n                        uVar12 = uVar16;\n                      }" { (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "uVar12 = uVar16;" (assignment_expression "uVar12 = uVar16" identifier = identifier) ;) })) (expression_statement "iVar20 = uVar17 - 1;" (assignment_expression "iVar20 = uVar17 - 1" identifier = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (expression_statement "dVar10 = (double)(short)iVar20;" (assignment_expression "dVar10 = (double)(short)iVar20" identifier = (cast_expression "(double)(short)iVar20" ( (type_descriptor "double" primitive_type) ) (cast_expression "(short)iVar20" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier))) ;) (expression_statement "iVar21 = (uVar12 - 1) + (uint)(uVar17 != 0);" (assignment_expression "iVar21 = (uVar12 - 1) + (uint)(uVar17 != 0)" identifier = (binary_expression "(uVar12 - 1) + (uint)(uVar17 != 0)" (parenthesized_expression "(uVar12 - 1)" ( (binary_expression "uVar12 - 1" identifier - number_literal) )) + (call_expression "(uint)(uVar17 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar17 != 0)" ( (binary_expression "uVar17 != 0" identifier != number_literal) ))))) ;) (if_statement "if (dVar2 <= 0.0) {\n                        if (DAT_0029f138 <= dVar10) {\n                          dVar9 = 0.0;\nLAB_0003cea2:\n                          dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;\n                        }\n                        else {\n                          dVar9 = 0.0;\nLAB_0003cfe6:\n                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar9 = (double)DAT_0029f710;\n                        dVar11 = (dVar2 * dVar10) / dVar9;\n                        if (dVar11 < (double)DAT_0029f714) {\n                          dVar11 = dVar11 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar11) {\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }\n                          if (uVar3 <= CONCAT44(iVar21,iVar20)) {\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar9 = (double)DAT_0029f710;\n                        }\n                      }" if (parenthesized_expression "(dVar2 <= 0.0)" ( (binary_expression "dVar2 <= 0.0" identifier <= number_literal) )) (compound_statement "{\n                        if (DAT_0029f138 <= dVar10) {\n                          dVar9 = 0.0;\nLAB_0003cea2:\n                          dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;\n                        }\n                        else {\n                          dVar9 = 0.0;\nLAB_0003cfe6:\n                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;\n                        }\n                      }" { (if_statement "if (DAT_0029f138 <= dVar10) {\n                          dVar9 = 0.0;\nLAB_0003cea2:\n                          dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;\n                        }\n                        else {\n                          dVar9 = 0.0;\nLAB_0003cfe6:\n                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;\n                        }" if (parenthesized_expression "(DAT_0029f138 <= dVar10)" ( (binary_expression "DAT_0029f138 <= dVar10" identifier <= identifier) )) (compound_statement "{\n                          dVar9 = 0.0;\nLAB_0003cea2:\n                          dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;\n                        }" { (expression_statement "dVar9 = 0.0;" (assignment_expression "dVar9 = 0.0" identifier = number_literal) ;) (labeled_statement "LAB_0003cea2:\n                          dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;" statement_identifier : (expression_statement "dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710;" (assignment_expression "dVar9 = ((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710" identifier = (binary_expression "((double)DAT_0029f718 / dVar10) * dVar9 * (double)DAT_0029f710" (binary_expression "((double)DAT_0029f718 / dVar10) * dVar9" (parenthesized_expression "((double)DAT_0029f718 / dVar10)" ( (binary_expression "(double)DAT_0029f718 / dVar10" (cast_expression "(double)DAT_0029f718" ( (type_descriptor "double" primitive_type) ) identifier) / identifier) )) * identifier) * (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;)) }) (else_clause "else {\n                          dVar9 = 0.0;\nLAB_0003cfe6:\n                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;\n                        }" else (compound_statement "{\n                          dVar9 = 0.0;\nLAB_0003cfe6:\n                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;\n                        }" { (expression_statement "dVar9 = 0.0;" (assignment_expression "dVar9 = 0.0" identifier = number_literal) ;) (labeled_statement "LAB_0003cfe6:\n                          dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;" statement_identifier : (expression_statement "dVar9 = dVar9 * dVar13 * (double)DAT_0029f710;" (assignment_expression "dVar9 = dVar9 * dVar13 * (double)DAT_0029f710" identifier = (binary_expression "dVar9 * dVar13 * (double)DAT_0029f710" (binary_expression "dVar9 * dVar13" identifier * identifier) * (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier))) ;)) }))) }) (else_clause "else {\nLAB_0003ce0c:\n                        dVar9 = (double)DAT_0029f710;\n                        dVar11 = (dVar2 * dVar10) / dVar9;\n                        if (dVar11 < (double)DAT_0029f714) {\n                          dVar11 = dVar11 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar11) {\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }\n                          if (uVar3 <= CONCAT44(iVar21,iVar20)) {\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar9 = (double)DAT_0029f710;\n                        }\n                      }" else (compound_statement "{\nLAB_0003ce0c:\n                        dVar9 = (double)DAT_0029f710;\n                        dVar11 = (dVar2 * dVar10) / dVar9;\n                        if (dVar11 < (double)DAT_0029f714) {\n                          dVar11 = dVar11 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar11) {\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }\n                          if (uVar3 <= CONCAT44(iVar21,iVar20)) {\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar9 = (double)DAT_0029f710;\n                        }\n                      }" { (labeled_statement "LAB_0003ce0c:\n                        dVar9 = (double)DAT_0029f710;" statement_identifier : (expression_statement "dVar9 = (double)DAT_0029f710;" (assignment_expression "dVar9 = (double)DAT_0029f710" identifier = (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier)) ;)) (expression_statement "dVar11 = (dVar2 * dVar10) / dVar9;" (assignment_expression "dVar11 = (dVar2 * dVar10) / dVar9" identifier = (binary_expression "(dVar2 * dVar10) / dVar9" (parenthesized_expression "(dVar2 * dVar10)" ( (binary_expression "dVar2 * dVar10" identifier * identifier) )) / identifier)) ;) (if_statement "if (dVar11 < (double)DAT_0029f714) {\n                          dVar11 = dVar11 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar11) {\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }\n                          if (uVar3 <= CONCAT44(iVar21,iVar20)) {\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar9 = (double)DAT_0029f710;\n                        }" if (parenthesized_expression "(dVar11 < (double)DAT_0029f714)" ( (binary_expression "dVar11 < (double)DAT_0029f714" identifier < (cast_expression "(double)DAT_0029f714" ( (type_descriptor "double" primitive_type) ) identifier)) )) (compound_statement "{\n                          dVar11 = dVar11 + (double)DAT_0029f124;\n                          if ((double)DAT_0029f134 <= dVar11) {\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }\n                          if (uVar3 <= CONCAT44(iVar21,iVar20)) {\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar9 = (double)DAT_0029f710;\n                        }" { (expression_statement "dVar11 = dVar11 + (double)DAT_0029f124;" (assignment_expression "dVar11 = dVar11 + (double)DAT_0029f124" identifier = (binary_expression "dVar11 + (double)DAT_0029f124" identifier + (cast_expression "(double)DAT_0029f124" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if ((double)DAT_0029f134 <= dVar11) {\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }" if (parenthesized_expression "((double)DAT_0029f134 <= dVar11)" ( (binary_expression "(double)DAT_0029f134 <= dVar11" (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n                            lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);\n                            local_2c = (undefined4)lVar4;\n                            iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n                            uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }" { (expression_statement "lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134);" (assignment_expression "lVar4 = (longlong)ROUND(dVar11 - (double)DAT_0029f134)" identifier = (cast_expression "(longlong)ROUND(dVar11 - (double)DAT_0029f134)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar11 - (double)DAT_0029f134)" identifier (argument_list "(dVar11 - (double)DAT_0029f134)" ( (binary_expression "dVar11 - (double)DAT_0029f134" identifier - (cast_expression "(double)DAT_0029f134" ( (type_descriptor "double" primitive_type) ) identifier)) ))))) ;) (expression_statement "local_2c = (undefined4)lVar4;" (assignment_expression "local_2c = (undefined4)lVar4" identifier = (cast_expression "(undefined4)lVar4" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (expression_statement "iStack_28 = (int)((ulonglong)lVar4 >> 0x20);" (assignment_expression "iStack_28 = (int)((ulonglong)lVar4 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar4 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar4 >> 0x20)" ( (binary_expression "(ulonglong)lVar4 >> 0x20" (cast_expression "(ulonglong)lVar4" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c);" (assignment_expression "uVar3 = CONCAT44(iStack_28 + -0x80000000,local_2c)" identifier = (call_expression "CONCAT44(iStack_28 + -0x80000000,local_2c)" identifier (argument_list "(iStack_28 + -0x80000000,local_2c)" ( (binary_expression "iStack_28 + -0x80000000" identifier + number_literal) , identifier )))) ;) }) (else_clause "else {\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }" else (compound_statement "{\n                            uVar3 = (ulonglong)ROUND(dVar11);\n                          }" { (expression_statement "uVar3 = (ulonglong)ROUND(dVar11);" (assignment_expression "uVar3 = (ulonglong)ROUND(dVar11)" identifier = (cast_expression "(ulonglong)ROUND(dVar11)" ( (type_descriptor "ulonglong" type_identifier) ) (call_expression "ROUND(dVar11)" identifier (argument_list "(dVar11)" ( identifier ))))) ;) }))) (if_statement "if (uVar3 <= CONCAT44(iVar21,iVar20)) {\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }" if (parenthesized_expression "(uVar3 <= CONCAT44(iVar21,iVar20))" ( (binary_expression "uVar3 <= CONCAT44(iVar21,iVar20)" identifier <= (call_expression "CONCAT44(iVar21,iVar20)" identifier (argument_list "(iVar21,iVar20)" ( identifier , identifier )))) )) (compound_statement "{\n                            dVar9 = (double)(short)uVar3;\n                            if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }" { (expression_statement "dVar9 = (double)(short)uVar3;" (assignment_expression "dVar9 = (double)(short)uVar3" identifier = (cast_expression "(double)(short)uVar3" ( (type_descriptor "double" primitive_type) ) (cast_expression "(short)uVar3" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier))) ;) (if_statement "if (dVar10 < DAT_0029f138) goto LAB_0003cfe6;" if (parenthesized_expression "(dVar10 < DAT_0029f138)" ( (binary_expression "dVar10 < DAT_0029f138" identifier < identifier) )) (goto_statement "goto LAB_0003cfe6;" goto statement_identifier ;)) (goto_statement "goto LAB_0003cea2;" goto statement_identifier ;) })) (expression_statement "dVar9 = (double)DAT_0029f710;" (assignment_expression "dVar9 = (double)DAT_0029f710" identifier = (cast_expression "(double)DAT_0029f710" ( (type_descriptor "double" primitive_type) ) identifier)) ;) })) }))) }))) (if_statement "if (dVar9 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }" if (parenthesized_expression "(dVar9 == dVar2)" ( (binary_expression "dVar9 == dVar2" identifier == identifier) )) (compound_statement "{\n                      uVar22 = *puVar1;\n                      break;\n                    }" { (expression_statement "uVar22 = *puVar1;" (assignment_expression "uVar22 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (break_statement "break;" break ;) })) (expression_statement "uVar22 = uVar22 + 1;" (assignment_expression "uVar22 = uVar22 + 1" identifier = (binary_expression "uVar22 + 1" identifier + number_literal)) ;) (expression_statement "*puVar1 = uVar22;" (assignment_expression "*puVar1 = uVar22" (pointer_expression "*puVar1" * identifier) = identifier) ;) }) while (parenthesized_expression "(uVar22 != 0x10)" ( (binary_expression "uVar22 != 0x10" identifier != number_literal) )) ;) })) (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) (expression_statement "sVar18 = pIVar5->number_channels;" (assignment_expression "sVar18 = pIVar5->number_channels" identifier = (field_expression "pIVar5->number_channels" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(iVar14 < (int)sVar18)" ( (binary_expression "iVar14 < (int)sVar18" identifier < (cast_expression "(int)sVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (expression_statement "local_40 = local_40 + 1;" (assignment_expression "local_40 = local_40 + 1" identifier = (binary_expression "local_40 + 1" identifier + number_literal)) ;) (expression_statement "local_44 = local_44 + sVar18;" (assignment_expression "local_44 = local_44 + sVar18" identifier = (binary_expression "local_44 + sVar18" identifier + identifier)) ;) }) while (parenthesized_expression "(local_40 < (int)pIVar5->columns)" ( (binary_expression "local_40 < (int)pIVar5->columns" identifier < (cast_expression "(int)pIVar5->columns" ( (type_descriptor "int" primitive_type) ) (field_expression "pIVar5->columns" identifier -> field_identifier))) )) ;) })) (if_statement "if (uVar22 == 0x10) {\n          this->status = MagickFalse;\n        }" if (parenthesized_expression "(uVar22 == 0x10)" ( (binary_expression "uVar22 == 0x10" identifier == number_literal) )) (compound_statement "{\n          this->status = MagickFalse;\n        }" { (expression_statement "this->status = MagickFalse;" (assignment_expression "this->status = MagickFalse" (field_expression "this->status" identifier -> field_identifier) = identifier) ;) })) })) (expression_statement "local_3c = local_3c + 1;" (assignment_expression "local_3c = local_3c + 1" identifier = (binary_expression "local_3c + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar15 != local_3c)" ( (binary_expression "iVar15 != local_3c" identifier != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0003cc70(int *param_1)\n\n{\n  uint *puVar1;\n  double dVar2;\n  double dVar3;\n  ulonglong uVar4;\n  longlong lVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  byte bVar10;\n  double dVar11;\n  double dVar12;\n  double dVar13;\n  uint uVar14;\n  int iVar15;\n  int iVar16;\n  int iVar17;\n  uint uVar18;\n  uint uVar19;\n  byte bVar20;\n  int iVar21;\n  int unaff_EBP;\n  uint uVar22;\n  int iVar23;\n  int local_44;\n  int local_40;\n  int local_3c;\n  undefined4 local_2c;\n  int iStack_28;\n  \n  FUN_00042799();\n  iVar6 = *param_1;\n  local_3c = omp_get_num_threads();\n  iVar15 = omp_get_thread_num();\n  iVar16 = *(int *)(iVar6 + 0x1c) / local_3c;\n  local_3c = *(int *)(iVar6 + 0x1c) % local_3c;\n  if (iVar15 < local_3c) {\n    iVar16 = iVar16 + 1;\n    local_3c = 0;\n  }\n  local_3c = local_3c + iVar15 * iVar16;\n  iVar16 = iVar16 + local_3c;\n  if (local_3c < iVar16) {\n    iVar15 = param_1[3];\n    iVar7 = param_1[2];\n    iVar8 = param_1[1];\n    do {\n      iVar17 = omp_get_thread_num();\n      if ((param_1[4] != 0) &&\n         (local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0)) {\n        puVar1 = (uint *)(iVar15 + iVar17 * 4);\n        uVar22 = *puVar1;\n        if (0 < *(int *)(iVar6 + 0x18)) {\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }\n        if (uVar22 == 0x10) {\n          param_1[4] = 0;\n        }\n      }\n      local_3c = local_3c + 1;\n    } while (iVar16 != local_3c);\n  }\n  return;\n}\n\n" (function_definition "void FUN_0003cc70(int *param_1)\n\n{\n  uint *puVar1;\n  double dVar2;\n  double dVar3;\n  ulonglong uVar4;\n  longlong lVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  byte bVar10;\n  double dVar11;\n  double dVar12;\n  double dVar13;\n  uint uVar14;\n  int iVar15;\n  int iVar16;\n  int iVar17;\n  uint uVar18;\n  uint uVar19;\n  byte bVar20;\n  int iVar21;\n  int unaff_EBP;\n  uint uVar22;\n  int iVar23;\n  int local_44;\n  int local_40;\n  int local_3c;\n  undefined4 local_2c;\n  int iStack_28;\n  \n  FUN_00042799();\n  iVar6 = *param_1;\n  local_3c = omp_get_num_threads();\n  iVar15 = omp_get_thread_num();\n  iVar16 = *(int *)(iVar6 + 0x1c) / local_3c;\n  local_3c = *(int *)(iVar6 + 0x1c) % local_3c;\n  if (iVar15 < local_3c) {\n    iVar16 = iVar16 + 1;\n    local_3c = 0;\n  }\n  local_3c = local_3c + iVar15 * iVar16;\n  iVar16 = iVar16 + local_3c;\n  if (local_3c < iVar16) {\n    iVar15 = param_1[3];\n    iVar7 = param_1[2];\n    iVar8 = param_1[1];\n    do {\n      iVar17 = omp_get_thread_num();\n      if ((param_1[4] != 0) &&\n         (local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0)) {\n        puVar1 = (uint *)(iVar15 + iVar17 * 4);\n        uVar22 = *puVar1;\n        if (0 < *(int *)(iVar6 + 0x18)) {\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }\n        if (uVar22 == 0x10) {\n          param_1[4] = 0;\n        }\n      }\n      local_3c = local_3c + 1;\n    } while (iVar16 != local_3c);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0003cc70(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  uint *puVar1;\n  double dVar2;\n  double dVar3;\n  ulonglong uVar4;\n  longlong lVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  byte bVar10;\n  double dVar11;\n  double dVar12;\n  double dVar13;\n  uint uVar14;\n  int iVar15;\n  int iVar16;\n  int iVar17;\n  uint uVar18;\n  uint uVar19;\n  byte bVar20;\n  int iVar21;\n  int unaff_EBP;\n  uint uVar22;\n  int iVar23;\n  int local_44;\n  int local_40;\n  int local_3c;\n  undefined4 local_2c;\n  int iStack_28;\n  \n  FUN_00042799();\n  iVar6 = *param_1;\n  local_3c = omp_get_num_threads();\n  iVar15 = omp_get_thread_num();\n  iVar16 = *(int *)(iVar6 + 0x1c) / local_3c;\n  local_3c = *(int *)(iVar6 + 0x1c) % local_3c;\n  if (iVar15 < local_3c) {\n    iVar16 = iVar16 + 1;\n    local_3c = 0;\n  }\n  local_3c = local_3c + iVar15 * iVar16;\n  iVar16 = iVar16 + local_3c;\n  if (local_3c < iVar16) {\n    iVar15 = param_1[3];\n    iVar7 = param_1[2];\n    iVar8 = param_1[1];\n    do {\n      iVar17 = omp_get_thread_num();\n      if ((param_1[4] != 0) &&\n         (local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0)) {\n        puVar1 = (uint *)(iVar15 + iVar17 * 4);\n        uVar22 = *puVar1;\n        if (0 < *(int *)(iVar6 + 0x18)) {\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }\n        if (uVar22 == 0x10) {\n          param_1[4] = 0;\n        }\n      }\n      local_3c = local_3c + 1;\n    } while (iVar16 != local_3c);\n  }\n  return;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "double dVar2;" primitive_type identifier ;) (declaration "double dVar3;" primitive_type identifier ;) (declaration "ulonglong uVar4;" type_identifier identifier ;) (declaration "longlong lVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "byte bVar10;" type_identifier identifier ;) (declaration "double dVar11;" primitive_type identifier ;) (declaration "double dVar12;" primitive_type identifier ;) (declaration "double dVar13;" primitive_type identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "byte bVar20;" type_identifier identifier ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "uint uVar22;" type_identifier identifier ;) (declaration "int iVar23;" primitive_type identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "int iStack_28;" primitive_type identifier ;) (expression_statement "FUN_00042799();" (call_expression "FUN_00042799()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar6 = *param_1;" (assignment_expression "iVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "local_3c = omp_get_num_threads();" (assignment_expression "local_3c = omp_get_num_threads()" identifier = (call_expression "omp_get_num_threads()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar15 = omp_get_thread_num();" (assignment_expression "iVar15 = omp_get_thread_num()" identifier = (call_expression "omp_get_thread_num()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar16 = *(int *)(iVar6 + 0x1c) / local_3c;" (assignment_expression "iVar16 = *(int *)(iVar6 + 0x1c) / local_3c" identifier = (binary_expression "*(int *)(iVar6 + 0x1c) / local_3c" (pointer_expression "*(int *)(iVar6 + 0x1c)" * (cast_expression "(int *)(iVar6 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1c)" ( (binary_expression "iVar6 + 0x1c" identifier + number_literal) )))) / identifier)) ;) (expression_statement "local_3c = *(int *)(iVar6 + 0x1c) % local_3c;" (assignment_expression "local_3c = *(int *)(iVar6 + 0x1c) % local_3c" identifier = (binary_expression "*(int *)(iVar6 + 0x1c) % local_3c" (pointer_expression "*(int *)(iVar6 + 0x1c)" * (cast_expression "(int *)(iVar6 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1c)" ( (binary_expression "iVar6 + 0x1c" identifier + number_literal) )))) % identifier)) ;) (if_statement "if (iVar15 < local_3c) {\n    iVar16 = iVar16 + 1;\n    local_3c = 0;\n  }" if (parenthesized_expression "(iVar15 < local_3c)" ( (binary_expression "iVar15 < local_3c" identifier < identifier) )) (compound_statement "{\n    iVar16 = iVar16 + 1;\n    local_3c = 0;\n  }" { (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" identifier = (binary_expression "iVar16 + 1" identifier + number_literal)) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) })) (expression_statement "local_3c = local_3c + iVar15 * iVar16;" (assignment_expression "local_3c = local_3c + iVar15 * iVar16" identifier = (binary_expression "local_3c + iVar15 * iVar16" identifier + (binary_expression "iVar15 * iVar16" identifier * identifier))) ;) (expression_statement "iVar16 = iVar16 + local_3c;" (assignment_expression "iVar16 = iVar16 + local_3c" identifier = (binary_expression "iVar16 + local_3c" identifier + identifier)) ;) (if_statement "if (local_3c < iVar16) {\n    iVar15 = param_1[3];\n    iVar7 = param_1[2];\n    iVar8 = param_1[1];\n    do {\n      iVar17 = omp_get_thread_num();\n      if ((param_1[4] != 0) &&\n         (local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0)) {\n        puVar1 = (uint *)(iVar15 + iVar17 * 4);\n        uVar22 = *puVar1;\n        if (0 < *(int *)(iVar6 + 0x18)) {\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }\n        if (uVar22 == 0x10) {\n          param_1[4] = 0;\n        }\n      }\n      local_3c = local_3c + 1;\n    } while (iVar16 != local_3c);\n  }" if (parenthesized_expression "(local_3c < iVar16)" ( (binary_expression "local_3c < iVar16" identifier < identifier) )) (compound_statement "{\n    iVar15 = param_1[3];\n    iVar7 = param_1[2];\n    iVar8 = param_1[1];\n    do {\n      iVar17 = omp_get_thread_num();\n      if ((param_1[4] != 0) &&\n         (local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0)) {\n        puVar1 = (uint *)(iVar15 + iVar17 * 4);\n        uVar22 = *puVar1;\n        if (0 < *(int *)(iVar6 + 0x18)) {\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }\n        if (uVar22 == 0x10) {\n          param_1[4] = 0;\n        }\n      }\n      local_3c = local_3c + 1;\n    } while (iVar16 != local_3c);\n  }" { (expression_statement "iVar15 = param_1[3];" (assignment_expression "iVar15 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "iVar7 = param_1[2];" (assignment_expression "iVar7 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "iVar8 = param_1[1];" (assignment_expression "iVar8 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (do_statement "do {\n      iVar17 = omp_get_thread_num();\n      if ((param_1[4] != 0) &&\n         (local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0)) {\n        puVar1 = (uint *)(iVar15 + iVar17 * 4);\n        uVar22 = *puVar1;\n        if (0 < *(int *)(iVar6 + 0x18)) {\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }\n        if (uVar22 == 0x10) {\n          param_1[4] = 0;\n        }\n      }\n      local_3c = local_3c + 1;\n    } while (iVar16 != local_3c);" do (compound_statement "{\n      iVar17 = omp_get_thread_num();\n      if ((param_1[4] != 0) &&\n         (local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0)) {\n        puVar1 = (uint *)(iVar15 + iVar17 * 4);\n        uVar22 = *puVar1;\n        if (0 < *(int *)(iVar6 + 0x18)) {\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }\n        if (uVar22 == 0x10) {\n          param_1[4] = 0;\n        }\n      }\n      local_3c = local_3c + 1;\n    }" { (expression_statement "iVar17 = omp_get_thread_num();" (assignment_expression "iVar17 = omp_get_thread_num()" identifier = (call_expression "omp_get_thread_num()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((param_1[4] != 0) &&\n         (local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0)) {\n        puVar1 = (uint *)(iVar15 + iVar17 * 4);\n        uVar22 = *puVar1;\n        if (0 < *(int *)(iVar6 + 0x18)) {\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }\n        if (uVar22 == 0x10) {\n          param_1[4] = 0;\n        }\n      }" if (parenthesized_expression "((param_1[4] != 0) &&\n         (local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0))" ( (binary_expression "(param_1[4] != 0) &&\n         (local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0)" (parenthesized_expression "(param_1[4] != 0)" ( (binary_expression "param_1[4] != 0" (subscript_expression "param_1[4]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0)" ( (comma_expression "local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0" (assignment_expression "local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8)" identifier = (call_expression "GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8)" identifier (argument_list "(iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8)" ( identifier , number_literal , identifier , (pointer_expression "*(undefined4 *)(iVar6 + 0x18)" * (cast_expression "(undefined4 *)(iVar6 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) )))) , number_literal , identifier )))) , (binary_expression "local_44 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        puVar1 = (uint *)(iVar15 + iVar17 * 4);\n        uVar22 = *puVar1;\n        if (0 < *(int *)(iVar6 + 0x18)) {\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }\n        if (uVar22 == 0x10) {\n          param_1[4] = 0;\n        }\n      }" { (expression_statement "puVar1 = (uint *)(iVar15 + iVar17 * 4);" (assignment_expression "puVar1 = (uint *)(iVar15 + iVar17 * 4)" identifier = (cast_expression "(uint *)(iVar15 + iVar17 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + iVar17 * 4)" ( (binary_expression "iVar15 + iVar17 * 4" identifier + (binary_expression "iVar17 * 4" identifier * number_literal)) )))) ;) (expression_statement "uVar22 = *puVar1;" (assignment_expression "uVar22 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (if_statement "if (0 < *(int *)(iVar6 + 0x18)) {\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }" if (parenthesized_expression "(0 < *(int *)(iVar6 + 0x18))" ( (binary_expression "0 < *(int *)(iVar6 + 0x18)" number_literal < (pointer_expression "*(int *)(iVar6 + 0x18)" * (cast_expression "(int *)(iVar6 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }" { (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (do_statement "do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));" do (compound_statement "{\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          }" { (expression_statement "iVar17 = *(int *)(iVar6 + 0x298);" (assignment_expression "iVar17 = *(int *)(iVar6 + 0x298)" identifier = (pointer_expression "*(int *)(iVar6 + 0x298)" * (cast_expression "(int *)(iVar6 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x298)" ( (binary_expression "iVar6 + 0x298" identifier + number_literal) ))))) ;) (if_statement "if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }" if (parenthesized_expression "(0 < iVar17)" ( (binary_expression "0 < iVar17" number_literal < identifier) )) (compound_statement "{\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }" { (expression_statement "iVar9 = *(int *)(iVar6 + 0x2a8);" (assignment_expression "iVar9 = *(int *)(iVar6 + 0x2a8)" identifier = (pointer_expression "*(int *)(iVar6 + 0x2a8)" * (cast_expression "(int *)(iVar6 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x2a8)" ( (binary_expression "iVar6 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "iVar23 = 0;" (assignment_expression "iVar23 = 0" identifier = number_literal) ;) (do_statement "do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);" do (compound_statement "{\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              }" { (if_statement "if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }" if (parenthesized_expression "(((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10))" ( (binary_expression "((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)" (parenthesized_expression "((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0)" ( (binary_expression "(*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2)" ( (binary_expression "*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2" (pointer_expression "*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc)" * (cast_expression "(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc)" ( (binary_expression "iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc" (binary_expression "iVar9 + 4" identifier + number_literal) + (binary_expression "*(int *)(iVar9 + iVar23 * 0xc) * 0xc" (pointer_expression "*(int *)(iVar9 + iVar23 * 0xc)" * (cast_expression "(int *)(iVar9 + iVar23 * 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + iVar23 * 0xc)" ( (binary_expression "iVar9 + iVar23 * 0xc" identifier + (binary_expression "iVar23 * 0xc" identifier * number_literal)) )))) * number_literal)) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(uVar22 < 0x10)" ( (binary_expression "uVar22 < 0x10" identifier < number_literal) ))) )) (compound_statement "{\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }" { (expression_statement "dVar2 = *(double *)(local_44 + iVar23 * 8);" (assignment_expression "dVar2 = *(double *)(local_44 + iVar23 * 8)" identifier = (pointer_expression "*(double *)(local_44 + iVar23 * 8)" * (cast_expression "(double *)(local_44 + iVar23 * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_44 + iVar23 * 8)" ( (binary_expression "local_44 + iVar23 * 8" identifier + (binary_expression "iVar23 * 8" identifier * number_literal)) ))))) ;) (expression_statement "dVar3 = *(double *)(unaff_EBP + 0x262ac2);" (assignment_expression "dVar3 = *(double *)(unaff_EBP + 0x262ac2)" identifier = (pointer_expression "*(double *)(unaff_EBP + 0x262ac2)" * (cast_expression "(double *)(unaff_EBP + 0x262ac2)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x262ac2)" ( (binary_expression "unaff_EBP + 0x262ac2" identifier + number_literal) ))))) ;) (do_statement "do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);" do (compound_statement "{\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  }" { (if_statement "if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }" if (parenthesized_expression "(uVar22 == 0)" ( (binary_expression "uVar22 == 0" identifier == number_literal) )) (compound_statement "{\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }" { (if_statement "if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }" if (parenthesized_expression "(NAN(dVar2))" ( (call_expression "NAN(dVar2)" identifier (argument_list "(dVar2)" ( identifier ))) )) (compound_statement "{\n                        dVar11 = 0.0;\n                      }" { (expression_statement "dVar11 = 0.0;" (assignment_expression "dVar11 = 0.0" identifier = number_literal) ;) }) (else_clause "else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }" else (compound_statement "{\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }" { (if_statement "if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }" if (parenthesized_expression "(0.0 < dVar2)" ( (binary_expression "0.0 < dVar2" number_literal < identifier) )) (compound_statement "{\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }" { (expression_statement "dVar12 = 0.0;" (assignment_expression "dVar12 = 0.0" identifier = number_literal) ;) (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) (expression_statement "iVar21 = 0;" (assignment_expression "iVar21 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0003ce0c;" goto statement_identifier ;) })) (expression_statement "dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);" (assignment_expression "dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a)" identifier = (binary_expression "dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a)" (binary_expression "dVar3 * 0.0" identifier * number_literal) * (cast_expression "(double)*(float *)(unaff_EBP + 0x262a9a)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(unaff_EBP + 0x262a9a)" * (cast_expression "(float *)(unaff_EBP + 0x262a9a)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x262a9a)" ( (binary_expression "unaff_EBP + 0x262a9a" identifier + number_literal) ))))))) ;) }))) }) (else_clause "else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }" else (compound_statement "{\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }" { (expression_statement "bVar20 = (byte)(uVar22 - 1);" (assignment_expression "bVar20 = (byte)(uVar22 - 1)" identifier = (call_expression "(byte)(uVar22 - 1)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar22 - 1)" ( (binary_expression "uVar22 - 1" identifier - number_literal) )))) ;) (expression_statement "bVar10 = bVar20 & 0x1f;" (assignment_expression "bVar10 = bVar20 & 0x1f" identifier = (binary_expression "bVar20 & 0x1f" identifier & number_literal)) ;) (expression_statement "uVar18 = 2 << (bVar20 & 0x1f);" (assignment_expression "uVar18 = 2 << (bVar20 & 0x1f)" identifier = (binary_expression "2 << (bVar20 & 0x1f)" number_literal << (parenthesized_expression "(bVar20 & 0x1f)" ( (binary_expression "bVar20 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar19 = uVar18;" (assignment_expression "uVar19 = uVar18" identifier = identifier) ;) (expression_statement "uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;" (assignment_expression "uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10" identifier = (binary_expression "0 << bVar10 | 2U >> 0x20 - bVar10" (binary_expression "0 << bVar10" number_literal << identifier) | (binary_expression "2U >> 0x20 - bVar10" number_literal >> (binary_expression "0x20 - bVar10" number_literal - identifier)))) ;) (if_statement "if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }" if (parenthesized_expression "((uVar22 - 1 & 0x20) != 0)" ( (binary_expression "(uVar22 - 1 & 0x20) != 0" (parenthesized_expression "(uVar22 - 1 & 0x20)" ( (binary_expression "uVar22 - 1 & 0x20" (binary_expression "uVar22 - 1" identifier - number_literal) & number_literal) )) != number_literal) )) (compound_statement "{\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }" { (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (expression_statement "uVar14 = uVar18;" (assignment_expression "uVar14 = uVar18" identifier = identifier) ;) })) (expression_statement "iVar17 = uVar19 - 1;" (assignment_expression "iVar17 = uVar19 - 1" identifier = (binary_expression "uVar19 - 1" identifier - number_literal)) ;) (expression_statement "dVar12 = (double)(short)iVar17;" (assignment_expression "dVar12 = (double)(short)iVar17" identifier = (cast_expression "(double)(short)iVar17" ( (type_descriptor "double" primitive_type) ) (cast_expression "(short)iVar17" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier))) ;) (expression_statement "iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);" (assignment_expression "iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0)" identifier = (binary_expression "(uVar14 - 1) + (uint)(uVar19 != 0)" (parenthesized_expression "(uVar14 - 1)" ( (binary_expression "uVar14 - 1" identifier - number_literal) )) + (call_expression "(uint)(uVar19 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar19 != 0)" ( (binary_expression "uVar19 != 0" identifier != number_literal) ))))) ;) (if_statement "if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }" if (parenthesized_expression "(dVar2 <= 0.0)" ( (binary_expression "dVar2 <= 0.0" identifier <= number_literal) )) (compound_statement "{\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }" { (if_statement "if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }" if (parenthesized_expression "(*(double *)(unaff_EBP + 0x2624c2) <= dVar12)" ( (binary_expression "*(double *)(unaff_EBP + 0x2624c2) <= dVar12" (pointer_expression "*(double *)(unaff_EBP + 0x2624c2)" * (cast_expression "(double *)(unaff_EBP + 0x2624c2)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x2624c2)" ( (binary_expression "unaff_EBP + 0x2624c2" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }" { (expression_statement "dVar11 = 0.0;" (assignment_expression "dVar11 = 0.0" identifier = number_literal) ;) (labeled_statement "LAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);" statement_identifier : (expression_statement "dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);" (assignment_expression "dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a)" identifier = (binary_expression "((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a)" (binary_expression "((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11" (parenthesized_expression "((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12)" ( (binary_expression "(double)*(float *)(unaff_EBP + 0x262aa2) / dVar12" (cast_expression "(double)*(float *)(unaff_EBP + 0x262aa2)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(unaff_EBP + 0x262aa2)" * (cast_expression "(float *)(unaff_EBP + 0x262aa2)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x262aa2)" ( (binary_expression "unaff_EBP + 0x262aa2" identifier + number_literal) ))))) / identifier) )) * identifier) * (cast_expression "(double)*(float *)(unaff_EBP + 0x262a9a)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(unaff_EBP + 0x262a9a)" * (cast_expression "(float *)(unaff_EBP + 0x262a9a)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x262a9a)" ( (binary_expression "unaff_EBP + 0x262a9a" identifier + number_literal) ))))))) ;)) }) (else_clause "else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }" else (compound_statement "{\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }" { (expression_statement "dVar11 = 0.0;" (assignment_expression "dVar11 = 0.0" identifier = number_literal) ;) (labeled_statement "LAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);" statement_identifier : (expression_statement "dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);" (assignment_expression "dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a)" identifier = (binary_expression "dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a)" (binary_expression "dVar11 * dVar3" identifier * identifier) * (cast_expression "(double)*(float *)(unaff_EBP + 0x262a9a)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(unaff_EBP + 0x262a9a)" * (cast_expression "(float *)(unaff_EBP + 0x262a9a)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x262a9a)" ( (binary_expression "unaff_EBP + 0x262a9a" identifier + number_literal) ))))))) ;)) }))) }) (else_clause "else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }" else (compound_statement "{\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }" { (labeled_statement "LAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);" statement_identifier : (expression_statement "dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);" (assignment_expression "dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a)" identifier = (cast_expression "(double)*(float *)(unaff_EBP + 0x262a9a)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(unaff_EBP + 0x262a9a)" * (cast_expression "(float *)(unaff_EBP + 0x262a9a)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x262a9a)" ( (binary_expression "unaff_EBP + 0x262a9a" identifier + number_literal) )))))) ;)) (expression_statement "dVar13 = (dVar2 * dVar12) / dVar11;" (assignment_expression "dVar13 = (dVar2 * dVar12) / dVar11" identifier = (binary_expression "(dVar2 * dVar12) / dVar11" (parenthesized_expression "(dVar2 * dVar12)" ( (binary_expression "dVar2 * dVar12" identifier * identifier) )) / identifier)) ;) (if_statement "if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }" if (parenthesized_expression "(dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e))" ( (binary_expression "dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)" identifier < (cast_expression "(double)*(float *)(unaff_EBP + 0x262a9e)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(unaff_EBP + 0x262a9e)" * (cast_expression "(float *)(unaff_EBP + 0x262a9e)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x262a9e)" ( (binary_expression "unaff_EBP + 0x262a9e" identifier + number_literal) )))))) )) (compound_statement "{\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }" { (expression_statement "dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);" (assignment_expression "dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP)" identifier = (binary_expression "dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP)" identifier + (cast_expression "(double)*(float *)(&DAT_002624ae + unaff_EBP)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(&DAT_002624ae + unaff_EBP)" * (cast_expression "(float *)(&DAT_002624ae + unaff_EBP)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_002624ae + unaff_EBP)" ( (binary_expression "&DAT_002624ae + unaff_EBP" (pointer_expression "&DAT_002624ae" & identifier) + identifier) ))))))) ;) (if_statement "if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }" if (parenthesized_expression "((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13)" ( (binary_expression "(double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13" (cast_expression "(double)*(float *)(&DAT_002624be + unaff_EBP)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(&DAT_002624be + unaff_EBP)" * (cast_expression "(float *)(&DAT_002624be + unaff_EBP)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_002624be + unaff_EBP)" ( (binary_expression "&DAT_002624be + unaff_EBP" (pointer_expression "&DAT_002624be" & identifier) + identifier) ))))) <= identifier) )) (compound_statement "{\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }" { (expression_statement "lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));" (assignment_expression "lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP))" identifier = (cast_expression "(longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP))" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP))" identifier (argument_list "(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP))" ( (binary_expression "dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP)" identifier - (cast_expression "(double)*(float *)(&DAT_002624be + unaff_EBP)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(&DAT_002624be + unaff_EBP)" * (cast_expression "(float *)(&DAT_002624be + unaff_EBP)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_002624be + unaff_EBP)" ( (binary_expression "&DAT_002624be + unaff_EBP" (pointer_expression "&DAT_002624be" & identifier) + identifier) )))))) ))))) ;) (expression_statement "local_2c = (undefined4)lVar5;" (assignment_expression "local_2c = (undefined4)lVar5" identifier = (cast_expression "(undefined4)lVar5" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (expression_statement "iStack_28 = (int)((ulonglong)lVar5 >> 0x20);" (assignment_expression "iStack_28 = (int)((ulonglong)lVar5 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar5 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar5 >> 0x20)" ( (binary_expression "(ulonglong)lVar5 >> 0x20" (cast_expression "(ulonglong)lVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);" (assignment_expression "uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c)" identifier = (call_expression "CONCAT44(iStack_28 + -0x80000000,local_2c)" identifier (argument_list "(iStack_28 + -0x80000000,local_2c)" ( (binary_expression "iStack_28 + -0x80000000" identifier + number_literal) , identifier )))) ;) }) (else_clause "else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }" else (compound_statement "{\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }" { (expression_statement "uVar4 = (ulonglong)ROUND(dVar13);" (assignment_expression "uVar4 = (ulonglong)ROUND(dVar13)" identifier = (cast_expression "(ulonglong)ROUND(dVar13)" ( (type_descriptor "ulonglong" type_identifier) ) (call_expression "ROUND(dVar13)" identifier (argument_list "(dVar13)" ( identifier ))))) ;) }))) (if_statement "if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }" if (parenthesized_expression "(uVar4 <= CONCAT44(iVar21,iVar17))" ( (binary_expression "uVar4 <= CONCAT44(iVar21,iVar17)" identifier <= (call_expression "CONCAT44(iVar21,iVar17)" identifier (argument_list "(iVar21,iVar17)" ( identifier , identifier )))) )) (compound_statement "{\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }" { (expression_statement "dVar11 = (double)(short)uVar4;" (assignment_expression "dVar11 = (double)(short)uVar4" identifier = (cast_expression "(double)(short)uVar4" ( (type_descriptor "double" primitive_type) ) (cast_expression "(short)uVar4" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier))) ;) (if_statement "if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;" if (parenthesized_expression "(dVar12 < *(double *)(unaff_EBP + 0x2624c2))" ( (binary_expression "dVar12 < *(double *)(unaff_EBP + 0x2624c2)" identifier < (pointer_expression "*(double *)(unaff_EBP + 0x2624c2)" * (cast_expression "(double *)(unaff_EBP + 0x2624c2)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x2624c2)" ( (binary_expression "unaff_EBP + 0x2624c2" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0003cfe6;" goto statement_identifier ;)) (goto_statement "goto LAB_0003cea2;" goto statement_identifier ;) })) (expression_statement "dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);" (assignment_expression "dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a)" identifier = (cast_expression "(double)*(float *)(unaff_EBP + 0x262a9a)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(unaff_EBP + 0x262a9a)" * (cast_expression "(float *)(unaff_EBP + 0x262a9a)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x262a9a)" ( (binary_expression "unaff_EBP + 0x262a9a" identifier + number_literal) )))))) ;) })) }))) }))) (if_statement "if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }" if (parenthesized_expression "(dVar11 == dVar2)" ( (binary_expression "dVar11 == dVar2" identifier == identifier) )) (compound_statement "{\n                      uVar22 = *puVar1;\n                      break;\n                    }" { (expression_statement "uVar22 = *puVar1;" (assignment_expression "uVar22 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (break_statement "break;" break ;) })) (expression_statement "uVar22 = uVar22 + 1;" (assignment_expression "uVar22 = uVar22 + 1" identifier = (binary_expression "uVar22 + 1" identifier + number_literal)) ;) (expression_statement "*puVar1 = uVar22;" (assignment_expression "*puVar1 = uVar22" (pointer_expression "*puVar1" * identifier) = identifier) ;) }) while (parenthesized_expression "(uVar22 != 0x10)" ( (binary_expression "uVar22 != 0x10" identifier != number_literal) )) ;) })) (expression_statement "iVar23 = iVar23 + 1;" (assignment_expression "iVar23 = iVar23 + 1" identifier = (binary_expression "iVar23 + 1" identifier + number_literal)) ;) (expression_statement "iVar17 = *(int *)(iVar6 + 0x298);" (assignment_expression "iVar17 = *(int *)(iVar6 + 0x298)" identifier = (pointer_expression "*(int *)(iVar6 + 0x298)" * (cast_expression "(int *)(iVar6 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x298)" ( (binary_expression "iVar6 + 0x298" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(iVar23 < iVar17)" ( (binary_expression "iVar23 < iVar17" identifier < identifier) )) ;) })) (expression_statement "local_40 = local_40 + 1;" (assignment_expression "local_40 = local_40 + 1" identifier = (binary_expression "local_40 + 1" identifier + number_literal)) ;) (expression_statement "local_44 = local_44 + iVar17 * 8;" (assignment_expression "local_44 = local_44 + iVar17 * 8" identifier = (binary_expression "local_44 + iVar17 * 8" identifier + (binary_expression "iVar17 * 8" identifier * number_literal))) ;) }) while (parenthesized_expression "(local_40 < *(int *)(iVar6 + 0x18))" ( (binary_expression "local_40 < *(int *)(iVar6 + 0x18)" identifier < (pointer_expression "*(int *)(iVar6 + 0x18)" * (cast_expression "(int *)(iVar6 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) ))))) )) ;) })) (if_statement "if (uVar22 == 0x10) {\n          param_1[4] = 0;\n        }" if (parenthesized_expression "(uVar22 == 0x10)" ( (binary_expression "uVar22 == 0x10" identifier == number_literal) )) (compound_statement "{\n          param_1[4] = 0;\n        }" { (expression_statement "param_1[4] = 0;" (assignment_expression "param_1[4] = 0" (subscript_expression "param_1[4]" identifier [ number_literal ]) = number_literal) ;) })) })) (expression_statement "local_3c = local_3c + 1;" (assignment_expression "local_3c = local_3c + 1" identifier = (binary_expression "local_3c + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar16 != local_3c)" ( (binary_expression "iVar16 != local_3c" identifier != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) / IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_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 IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT , IDENT )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (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 LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) * LIT)) )))) & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression IDENT < LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (call_expression IDENT (argument_list ( IDENT ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) * (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression LIT << IDENT) | (binary_expression LIT >> (binary_expression LIT - IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) / IDENT) )) * IDENT) * (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * IDENT) * (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;)) }))) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT * IDENT) )) / IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) ))))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) ))))) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))))) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (call_expression IDENT (argument_list ( IDENT , IDENT )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) })) }))) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (assignment_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 IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_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 (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (return_statement return ;) })))
(function_definition "void FUN_0003cc70(int *param_1)\n\n{\n  uint *puVar1;\n  double dVar2;\n  double dVar3;\n  ulonglong uVar4;\n  longlong lVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  byte bVar10;\n  double dVar11;\n  double dVar12;\n  double dVar13;\n  uint uVar14;\n  int iVar15;\n  int iVar16;\n  int iVar17;\n  uint uVar18;\n  uint uVar19;\n  byte bVar20;\n  int iVar21;\n  int unaff_EBP;\n  uint uVar22;\n  int iVar23;\n  int local_44;\n  int local_40;\n  int local_3c;\n  undefined4 local_2c;\n  int iStack_28;\n  \n  FUN_00042799();\n  iVar6 = *param_1;\n  local_3c = omp_get_num_threads();\n  iVar15 = omp_get_thread_num();\n  iVar16 = *(int *)(iVar6 + 0x1c) / local_3c;\n  local_3c = *(int *)(iVar6 + 0x1c) % local_3c;\n  if (iVar15 < local_3c) {\n    iVar16 = iVar16 + 1;\n    local_3c = 0;\n  }\n  local_3c = local_3c + iVar15 * iVar16;\n  iVar16 = iVar16 + local_3c;\n  if (local_3c < iVar16) {\n    iVar15 = param_1[3];\n    iVar7 = param_1[2];\n    iVar8 = param_1[1];\n    do {\n      iVar17 = omp_get_thread_num();\n      if ((param_1[4] != 0) &&\n         (local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0)) {\n        puVar1 = (uint *)(iVar15 + iVar17 * 4);\n        uVar22 = *puVar1;\n        if (0 < *(int *)(iVar6 + 0x18)) {\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }\n        if (uVar22 == 0x10) {\n          param_1[4] = 0;\n        }\n      }\n      local_3c = local_3c + 1;\n    } while (iVar16 != local_3c);\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0003cc70(int *param_1)" (identifier "FUN_0003cc70") (parameter_list "(int *param_1)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  uint *puVar1;\n  double dVar2;\n  double dVar3;\n  ulonglong uVar4;\n  longlong lVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  byte bVar10;\n  double dVar11;\n  double dVar12;\n  double dVar13;\n  uint uVar14;\n  int iVar15;\n  int iVar16;\n  int iVar17;\n  uint uVar18;\n  uint uVar19;\n  byte bVar20;\n  int iVar21;\n  int unaff_EBP;\n  uint uVar22;\n  int iVar23;\n  int local_44;\n  int local_40;\n  int local_3c;\n  undefined4 local_2c;\n  int iStack_28;\n  \n  FUN_00042799();\n  iVar6 = *param_1;\n  local_3c = omp_get_num_threads();\n  iVar15 = omp_get_thread_num();\n  iVar16 = *(int *)(iVar6 + 0x1c) / local_3c;\n  local_3c = *(int *)(iVar6 + 0x1c) % local_3c;\n  if (iVar15 < local_3c) {\n    iVar16 = iVar16 + 1;\n    local_3c = 0;\n  }\n  local_3c = local_3c + iVar15 * iVar16;\n  iVar16 = iVar16 + local_3c;\n  if (local_3c < iVar16) {\n    iVar15 = param_1[3];\n    iVar7 = param_1[2];\n    iVar8 = param_1[1];\n    do {\n      iVar17 = omp_get_thread_num();\n      if ((param_1[4] != 0) &&\n         (local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0)) {\n        puVar1 = (uint *)(iVar15 + iVar17 * 4);\n        uVar22 = *puVar1;\n        if (0 < *(int *)(iVar6 + 0x18)) {\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }\n        if (uVar22 == 0x10) {\n          param_1[4] = 0;\n        }\n      }\n      local_3c = local_3c + 1;\n    } while (iVar16 != local_3c);\n  }\n  return;\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "double dVar2;" (primitive_type "double") (identifier "dVar2") (; ";")) (declaration "double dVar3;" (primitive_type "double") (identifier "dVar3") (; ";")) (declaration "ulonglong uVar4;" (type_identifier "ulonglong") (identifier "uVar4") (; ";")) (declaration "longlong lVar5;" (type_identifier "longlong") (identifier "lVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "byte bVar10;" (type_identifier "byte") (identifier "bVar10") (; ";")) (declaration "double dVar11;" (primitive_type "double") (identifier "dVar11") (; ";")) (declaration "double dVar12;" (primitive_type "double") (identifier "dVar12") (; ";")) (declaration "double dVar13;" (primitive_type "double") (identifier "dVar13") (; ";")) (declaration "uint uVar14;" (type_identifier "uint") (identifier "uVar14") (; ";")) (declaration "int iVar15;" (primitive_type "int") (identifier "iVar15") (; ";")) (declaration "int iVar16;" (primitive_type "int") (identifier "iVar16") (; ";")) (declaration "int iVar17;" (primitive_type "int") (identifier "iVar17") (; ";")) (declaration "uint uVar18;" (type_identifier "uint") (identifier "uVar18") (; ";")) (declaration "uint uVar19;" (type_identifier "uint") (identifier "uVar19") (; ";")) (declaration "byte bVar20;" (type_identifier "byte") (identifier "bVar20") (; ";")) (declaration "int iVar21;" (primitive_type "int") (identifier "iVar21") (; ";")) (declaration "int unaff_EBP;" (primitive_type "int") (identifier "unaff_EBP") (; ";")) (declaration "uint uVar22;" (type_identifier "uint") (identifier "uVar22") (; ";")) (declaration "int iVar23;" (primitive_type "int") (identifier "iVar23") (; ";")) (declaration "int local_44;" (primitive_type "int") (identifier "local_44") (; ";")) (declaration "int local_40;" (primitive_type "int") (identifier "local_40") (; ";")) (declaration "int local_3c;" (primitive_type "int") (identifier "local_3c") (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (declaration "int iStack_28;" (primitive_type "int") (identifier "iStack_28") (; ";")) (expression_statement "FUN_00042799();" (call_expression "FUN_00042799()" (identifier "FUN_00042799") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar6 = *param_1;" (assignment_expression "iVar6 = *param_1" (identifier "iVar6") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "local_3c = omp_get_num_threads();" (assignment_expression "local_3c = omp_get_num_threads()" (identifier "local_3c") (= "=") (call_expression "omp_get_num_threads()" (identifier "omp_get_num_threads") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar15 = omp_get_thread_num();" (assignment_expression "iVar15 = omp_get_thread_num()" (identifier "iVar15") (= "=") (call_expression "omp_get_thread_num()" (identifier "omp_get_thread_num") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar16 = *(int *)(iVar6 + 0x1c) / local_3c;" (assignment_expression "iVar16 = *(int *)(iVar6 + 0x1c) / local_3c" (identifier "iVar16") (= "=") (binary_expression "*(int *)(iVar6 + 0x1c) / local_3c" (pointer_expression "*(int *)(iVar6 + 0x1c)" (* "*") (cast_expression "(int *)(iVar6 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x1c)" (( "(") (binary_expression "iVar6 + 0x1c" (identifier "iVar6") (+ "+") (number_literal "0x1c")) () ")")))) (/ "/") (identifier "local_3c"))) (; ";")) (expression_statement "local_3c = *(int *)(iVar6 + 0x1c) % local_3c;" (assignment_expression "local_3c = *(int *)(iVar6 + 0x1c) % local_3c" (identifier "local_3c") (= "=") (binary_expression "*(int *)(iVar6 + 0x1c) % local_3c" (pointer_expression "*(int *)(iVar6 + 0x1c)" (* "*") (cast_expression "(int *)(iVar6 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x1c)" (( "(") (binary_expression "iVar6 + 0x1c" (identifier "iVar6") (+ "+") (number_literal "0x1c")) () ")")))) (% "%") (identifier "local_3c"))) (; ";")) (if_statement "if (iVar15 < local_3c) {\n    iVar16 = iVar16 + 1;\n    local_3c = 0;\n  }" (if "if") (parenthesized_expression "(iVar15 < local_3c)" (( "(") (binary_expression "iVar15 < local_3c" (identifier "iVar15") (< "<") (identifier "local_3c")) () ")")) (compound_statement "{\n    iVar16 = iVar16 + 1;\n    local_3c = 0;\n  }" ({ "{") (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" (identifier "iVar16") (= "=") (binary_expression "iVar16 + 1" (identifier "iVar16") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "local_3c = local_3c + iVar15 * iVar16;" (assignment_expression "local_3c = local_3c + iVar15 * iVar16" (identifier "local_3c") (= "=") (binary_expression "local_3c + iVar15 * iVar16" (identifier "local_3c") (+ "+") (binary_expression "iVar15 * iVar16" (identifier "iVar15") (* "*") (identifier "iVar16")))) (; ";")) (expression_statement "iVar16 = iVar16 + local_3c;" (assignment_expression "iVar16 = iVar16 + local_3c" (identifier "iVar16") (= "=") (binary_expression "iVar16 + local_3c" (identifier "iVar16") (+ "+") (identifier "local_3c"))) (; ";")) (if_statement "if (local_3c < iVar16) {\n    iVar15 = param_1[3];\n    iVar7 = param_1[2];\n    iVar8 = param_1[1];\n    do {\n      iVar17 = omp_get_thread_num();\n      if ((param_1[4] != 0) &&\n         (local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0)) {\n        puVar1 = (uint *)(iVar15 + iVar17 * 4);\n        uVar22 = *puVar1;\n        if (0 < *(int *)(iVar6 + 0x18)) {\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }\n        if (uVar22 == 0x10) {\n          param_1[4] = 0;\n        }\n      }\n      local_3c = local_3c + 1;\n    } while (iVar16 != local_3c);\n  }" (if "if") (parenthesized_expression "(local_3c < iVar16)" (( "(") (binary_expression "local_3c < iVar16" (identifier "local_3c") (< "<") (identifier "iVar16")) () ")")) (compound_statement "{\n    iVar15 = param_1[3];\n    iVar7 = param_1[2];\n    iVar8 = param_1[1];\n    do {\n      iVar17 = omp_get_thread_num();\n      if ((param_1[4] != 0) &&\n         (local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0)) {\n        puVar1 = (uint *)(iVar15 + iVar17 * 4);\n        uVar22 = *puVar1;\n        if (0 < *(int *)(iVar6 + 0x18)) {\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }\n        if (uVar22 == 0x10) {\n          param_1[4] = 0;\n        }\n      }\n      local_3c = local_3c + 1;\n    } while (iVar16 != local_3c);\n  }" ({ "{") (expression_statement "iVar15 = param_1[3];" (assignment_expression "iVar15 = param_1[3]" (identifier "iVar15") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "iVar7 = param_1[2];" (assignment_expression "iVar7 = param_1[2]" (identifier "iVar7") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "iVar8 = param_1[1];" (assignment_expression "iVar8 = param_1[1]" (identifier "iVar8") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (do_statement "do {\n      iVar17 = omp_get_thread_num();\n      if ((param_1[4] != 0) &&\n         (local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0)) {\n        puVar1 = (uint *)(iVar15 + iVar17 * 4);\n        uVar22 = *puVar1;\n        if (0 < *(int *)(iVar6 + 0x18)) {\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }\n        if (uVar22 == 0x10) {\n          param_1[4] = 0;\n        }\n      }\n      local_3c = local_3c + 1;\n    } while (iVar16 != local_3c);" (do "do") (compound_statement "{\n      iVar17 = omp_get_thread_num();\n      if ((param_1[4] != 0) &&\n         (local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0)) {\n        puVar1 = (uint *)(iVar15 + iVar17 * 4);\n        uVar22 = *puVar1;\n        if (0 < *(int *)(iVar6 + 0x18)) {\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }\n        if (uVar22 == 0x10) {\n          param_1[4] = 0;\n        }\n      }\n      local_3c = local_3c + 1;\n    }" ({ "{") (expression_statement "iVar17 = omp_get_thread_num();" (assignment_expression "iVar17 = omp_get_thread_num()" (identifier "iVar17") (= "=") (call_expression "omp_get_thread_num()" (identifier "omp_get_thread_num") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((param_1[4] != 0) &&\n         (local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0)) {\n        puVar1 = (uint *)(iVar15 + iVar17 * 4);\n        uVar22 = *puVar1;\n        if (0 < *(int *)(iVar6 + 0x18)) {\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }\n        if (uVar22 == 0x10) {\n          param_1[4] = 0;\n        }\n      }" (if "if") (parenthesized_expression "((param_1[4] != 0) &&\n         (local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0))" (( "(") (binary_expression "(param_1[4] != 0) &&\n         (local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0)" (parenthesized_expression "(param_1[4] != 0)" (( "(") (binary_expression "param_1[4] != 0" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0)" (( "(") (comma_expression "local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),\n         local_44 != 0" (assignment_expression "local_44 = GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8)" (identifier "local_44") (= "=") (call_expression "GetCacheViewVirtualPixels\n                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8)" (identifier "GetCacheViewVirtualPixels") (argument_list "(iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8)" (( "(") (identifier "iVar7") (, ",") (number_literal "0") (, ",") (identifier "local_3c") (, ",") (pointer_expression "*(undefined4 *)(iVar6 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar6 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x18)" (( "(") (binary_expression "iVar6 + 0x18" (identifier "iVar6") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (number_literal "1") (, ",") (identifier "iVar8") () ")")))) (, ",") (binary_expression "local_44 != 0" (identifier "local_44") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n        puVar1 = (uint *)(iVar15 + iVar17 * 4);\n        uVar22 = *puVar1;\n        if (0 < *(int *)(iVar6 + 0x18)) {\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }\n        if (uVar22 == 0x10) {\n          param_1[4] = 0;\n        }\n      }" ({ "{") (expression_statement "puVar1 = (uint *)(iVar15 + iVar17 * 4);" (assignment_expression "puVar1 = (uint *)(iVar15 + iVar17 * 4)" (identifier "puVar1") (= "=") (cast_expression "(uint *)(iVar15 + iVar17 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + iVar17 * 4)" (( "(") (binary_expression "iVar15 + iVar17 * 4" (identifier "iVar15") (+ "+") (binary_expression "iVar17 * 4" (identifier "iVar17") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "uVar22 = *puVar1;" (assignment_expression "uVar22 = *puVar1" (identifier "uVar22") (= "=") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (; ";")) (if_statement "if (0 < *(int *)(iVar6 + 0x18)) {\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }" (if "if") (parenthesized_expression "(0 < *(int *)(iVar6 + 0x18))" (( "(") (binary_expression "0 < *(int *)(iVar6 + 0x18)" (number_literal "0") (< "<") (pointer_expression "*(int *)(iVar6 + 0x18)" (* "*") (cast_expression "(int *)(iVar6 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x18)" (( "(") (binary_expression "iVar6 + 0x18" (identifier "iVar6") (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (compound_statement "{\n          local_40 = 0;\n          do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));\n        }" ({ "{") (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" (identifier "local_40") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          } while (local_40 < *(int *)(iVar6 + 0x18));" (do "do") (compound_statement "{\n            iVar17 = *(int *)(iVar6 + 0x298);\n            if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }\n            local_40 = local_40 + 1;\n            local_44 = local_44 + iVar17 * 8;\n          }" ({ "{") (expression_statement "iVar17 = *(int *)(iVar6 + 0x298);" (assignment_expression "iVar17 = *(int *)(iVar6 + 0x298)" (identifier "iVar17") (= "=") (pointer_expression "*(int *)(iVar6 + 0x298)" (* "*") (cast_expression "(int *)(iVar6 + 0x298)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x298)" (( "(") (binary_expression "iVar6 + 0x298" (identifier "iVar6") (+ "+") (number_literal "0x298")) () ")"))))) (; ";")) (if_statement "if (0 < iVar17) {\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }" (if "if") (parenthesized_expression "(0 < iVar17)" (( "(") (binary_expression "0 < iVar17" (number_literal "0") (< "<") (identifier "iVar17")) () ")")) (compound_statement "{\n              iVar9 = *(int *)(iVar6 + 0x2a8);\n              iVar23 = 0;\n              do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);\n            }" ({ "{") (expression_statement "iVar9 = *(int *)(iVar6 + 0x2a8);" (assignment_expression "iVar9 = *(int *)(iVar6 + 0x2a8)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(iVar6 + 0x2a8)" (* "*") (cast_expression "(int *)(iVar6 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x2a8)" (( "(") (binary_expression "iVar6 + 0x2a8" (identifier "iVar6") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";")) (expression_statement "iVar23 = 0;" (assignment_expression "iVar23 = 0" (identifier "iVar23") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              } while (iVar23 < iVar17);" (do "do") (compound_statement "{\n                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }\n                iVar23 = iVar23 + 1;\n                iVar17 = *(int *)(iVar6 + 0x298);\n              }" ({ "{") (if_statement "if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)) {\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }" (if "if") (parenthesized_expression "(((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10))" (( "(") (binary_expression "((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&\n                   (uVar22 < 0x10)" (parenthesized_expression "((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0)" (( "(") (binary_expression "(*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2)" (( "(") (binary_expression "*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2" (pointer_expression "*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc)" (* "*") (cast_expression "(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc)" (( "(") (binary_expression "iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc" (binary_expression "iVar9 + 4" (identifier "iVar9") (+ "+") (number_literal "4")) (+ "+") (binary_expression "*(int *)(iVar9 + iVar23 * 0xc) * 0xc" (pointer_expression "*(int *)(iVar9 + iVar23 * 0xc)" (* "*") (cast_expression "(int *)(iVar9 + iVar23 * 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + iVar23 * 0xc)" (( "(") (binary_expression "iVar9 + iVar23 * 0xc" (identifier "iVar9") (+ "+") (binary_expression "iVar23 * 0xc" (identifier "iVar23") (* "*") (number_literal "0xc"))) () ")")))) (* "*") (number_literal "0xc"))) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar22 < 0x10)" (( "(") (binary_expression "uVar22 < 0x10" (identifier "uVar22") (< "<") (number_literal "0x10")) () ")"))) () ")")) (compound_statement "{\n                  dVar2 = *(double *)(local_44 + iVar23 * 8);\n                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);\n                  do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);\n                }" ({ "{") (expression_statement "dVar2 = *(double *)(local_44 + iVar23 * 8);" (assignment_expression "dVar2 = *(double *)(local_44 + iVar23 * 8)" (identifier "dVar2") (= "=") (pointer_expression "*(double *)(local_44 + iVar23 * 8)" (* "*") (cast_expression "(double *)(local_44 + iVar23 * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_44 + iVar23 * 8)" (( "(") (binary_expression "local_44 + iVar23 * 8" (identifier "local_44") (+ "+") (binary_expression "iVar23 * 8" (identifier "iVar23") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "dVar3 = *(double *)(unaff_EBP + 0x262ac2);" (assignment_expression "dVar3 = *(double *)(unaff_EBP + 0x262ac2)" (identifier "dVar3") (= "=") (pointer_expression "*(double *)(unaff_EBP + 0x262ac2)" (* "*") (cast_expression "(double *)(unaff_EBP + 0x262ac2)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0x262ac2)" (( "(") (binary_expression "unaff_EBP + 0x262ac2" (identifier "unaff_EBP") (+ "+") (number_literal "0x262ac2")) () ")"))))) (; ";")) (do_statement "do {\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  } while (uVar22 != 0x10);" (do "do") (compound_statement "{\n                    if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }\n                    if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }\n                    uVar22 = uVar22 + 1;\n                    *puVar1 = uVar22;\n                  }" ({ "{") (if_statement "if (uVar22 == 0) {\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }\n                    else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }" (if "if") (parenthesized_expression "(uVar22 == 0)" (( "(") (binary_expression "uVar22 == 0" (identifier "uVar22") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                      if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }\n                    }" ({ "{") (if_statement "if (NAN(dVar2)) {\n                        dVar11 = 0.0;\n                      }\n                      else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }" (if "if") (parenthesized_expression "(NAN(dVar2))" (( "(") (call_expression "NAN(dVar2)" (identifier "NAN") (argument_list "(dVar2)" (( "(") (identifier "dVar2") () ")"))) () ")")) (compound_statement "{\n                        dVar11 = 0.0;\n                      }" ({ "{") (expression_statement "dVar11 = 0.0;" (assignment_expression "dVar11 = 0.0" (identifier "dVar11") (= "=") (number_literal "0.0")) (; ";")) (} "}")) (else_clause "else {\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }" (else "else") (compound_statement "{\n                        if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }\n                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                      }" ({ "{") (if_statement "if (0.0 < dVar2) {\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }" (if "if") (parenthesized_expression "(0.0 < dVar2)" (( "(") (binary_expression "0.0 < dVar2" (number_literal "0.0") (< "<") (identifier "dVar2")) () ")")) (compound_statement "{\n                          dVar12 = 0.0;\n                          iVar17 = 0;\n                          iVar21 = 0;\n                          goto LAB_0003ce0c;\n                        }" ({ "{") (expression_statement "dVar12 = 0.0;" (assignment_expression "dVar12 = 0.0" (identifier "dVar12") (= "=") (number_literal "0.0")) (; ";")) (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" (identifier "iVar17") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar21 = 0;" (assignment_expression "iVar21 = 0" (identifier "iVar21") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0003ce0c;" (goto "goto") (statement_identifier "LAB_0003ce0c") (; ";")) (} "}"))) (expression_statement "dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);" (assignment_expression "dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a)" (identifier "dVar11") (= "=") (binary_expression "dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a)" (binary_expression "dVar3 * 0.0" (identifier "dVar3") (* "*") (number_literal "0.0")) (* "*") (cast_expression "(double)*(float *)(unaff_EBP + 0x262a9a)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(unaff_EBP + 0x262a9a)" (* "*") (cast_expression "(float *)(unaff_EBP + 0x262a9a)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0x262a9a)" (( "(") (binary_expression "unaff_EBP + 0x262a9a" (identifier "unaff_EBP") (+ "+") (number_literal "0x262a9a")) () ")"))))))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }" (else "else") (compound_statement "{\n                      bVar20 = (byte)(uVar22 - 1);\n                      bVar10 = bVar20 & 0x1f;\n                      uVar18 = 2 << (bVar20 & 0x1f);\n                      uVar19 = uVar18;\n                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;\n                      if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }\n                      iVar17 = uVar19 - 1;\n                      dVar12 = (double)(short)iVar17;\n                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);\n                      if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                    }" ({ "{") (expression_statement "bVar20 = (byte)(uVar22 - 1);" (assignment_expression "bVar20 = (byte)(uVar22 - 1)" (identifier "bVar20") (= "=") (call_expression "(byte)(uVar22 - 1)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar22 - 1)" (( "(") (binary_expression "uVar22 - 1" (identifier "uVar22") (- "-") (number_literal "1")) () ")")))) (; ";")) (expression_statement "bVar10 = bVar20 & 0x1f;" (assignment_expression "bVar10 = bVar20 & 0x1f" (identifier "bVar10") (= "=") (binary_expression "bVar20 & 0x1f" (identifier "bVar20") (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar18 = 2 << (bVar20 & 0x1f);" (assignment_expression "uVar18 = 2 << (bVar20 & 0x1f)" (identifier "uVar18") (= "=") (binary_expression "2 << (bVar20 & 0x1f)" (number_literal "2") (<< "<<") (parenthesized_expression "(bVar20 & 0x1f)" (( "(") (binary_expression "bVar20 & 0x1f" (identifier "bVar20") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar19 = uVar18;" (assignment_expression "uVar19 = uVar18" (identifier "uVar19") (= "=") (identifier "uVar18")) (; ";")) (expression_statement "uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;" (assignment_expression "uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10" (identifier "uVar14") (= "=") (binary_expression "0 << bVar10 | 2U >> 0x20 - bVar10" (binary_expression "0 << bVar10" (number_literal "0") (<< "<<") (identifier "bVar10")) (| "|") (binary_expression "2U >> 0x20 - bVar10" (number_literal "2U") (>> ">>") (binary_expression "0x20 - bVar10" (number_literal "0x20") (- "-") (identifier "bVar10"))))) (; ";")) (if_statement "if ((uVar22 - 1 & 0x20) != 0) {\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }" (if "if") (parenthesized_expression "((uVar22 - 1 & 0x20) != 0)" (( "(") (binary_expression "(uVar22 - 1 & 0x20) != 0" (parenthesized_expression "(uVar22 - 1 & 0x20)" (( "(") (binary_expression "uVar22 - 1 & 0x20" (binary_expression "uVar22 - 1" (identifier "uVar22") (- "-") (number_literal "1")) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                        uVar19 = 0;\n                        uVar14 = uVar18;\n                      }" ({ "{") (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" (identifier "uVar19") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar14 = uVar18;" (assignment_expression "uVar14 = uVar18" (identifier "uVar14") (= "=") (identifier "uVar18")) (; ";")) (} "}"))) (expression_statement "iVar17 = uVar19 - 1;" (assignment_expression "iVar17 = uVar19 - 1" (identifier "iVar17") (= "=") (binary_expression "uVar19 - 1" (identifier "uVar19") (- "-") (number_literal "1"))) (; ";")) (expression_statement "dVar12 = (double)(short)iVar17;" (assignment_expression "dVar12 = (double)(short)iVar17" (identifier "dVar12") (= "=") (cast_expression "(double)(short)iVar17" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (cast_expression "(short)iVar17" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "iVar17")))) (; ";")) (expression_statement "iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);" (assignment_expression "iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0)" (identifier "iVar21") (= "=") (binary_expression "(uVar14 - 1) + (uint)(uVar19 != 0)" (parenthesized_expression "(uVar14 - 1)" (( "(") (binary_expression "uVar14 - 1" (identifier "uVar14") (- "-") (number_literal "1")) () ")")) (+ "+") (call_expression "(uint)(uVar19 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar19 != 0)" (( "(") (binary_expression "uVar19 != 0" (identifier "uVar19") (!= "!=") (number_literal "0")) () ")"))))) (; ";")) (if_statement "if (dVar2 <= 0.0) {\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }\n                      else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }" (if "if") (parenthesized_expression "(dVar2 <= 0.0)" (( "(") (binary_expression "dVar2 <= 0.0" (identifier "dVar2") (<= "<=") (number_literal "0.0")) () ")")) (compound_statement "{\n                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }" ({ "{") (if_statement "if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                        else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }" (if "if") (parenthesized_expression "(*(double *)(unaff_EBP + 0x2624c2) <= dVar12)" (( "(") (binary_expression "*(double *)(unaff_EBP + 0x2624c2) <= dVar12" (pointer_expression "*(double *)(unaff_EBP + 0x2624c2)" (* "*") (cast_expression "(double *)(unaff_EBP + 0x2624c2)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0x2624c2)" (( "(") (binary_expression "unaff_EBP + 0x2624c2" (identifier "unaff_EBP") (+ "+") (number_literal "0x2624c2")) () ")")))) (<= "<=") (identifier "dVar12")) () ")")) (compound_statement "{\n                          dVar11 = 0.0;\nLAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }" ({ "{") (expression_statement "dVar11 = 0.0;" (assignment_expression "dVar11 = 0.0" (identifier "dVar11") (= "=") (number_literal "0.0")) (; ";")) (labeled_statement "LAB_0003cea2:\n                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);" (statement_identifier "LAB_0003cea2") (: ":") (expression_statement "dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a);" (assignment_expression "dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a)" (identifier "dVar11") (= "=") (binary_expression "((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *\n                                   (double)*(float *)(unaff_EBP + 0x262a9a)" (binary_expression "((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11" (parenthesized_expression "((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12)" (( "(") (binary_expression "(double)*(float *)(unaff_EBP + 0x262aa2) / dVar12" (cast_expression "(double)*(float *)(unaff_EBP + 0x262aa2)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(unaff_EBP + 0x262aa2)" (* "*") (cast_expression "(float *)(unaff_EBP + 0x262aa2)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0x262aa2)" (( "(") (binary_expression "unaff_EBP + 0x262aa2" (identifier "unaff_EBP") (+ "+") (number_literal "0x262aa2")) () ")"))))) (/ "/") (identifier "dVar12")) () ")")) (* "*") (identifier "dVar11")) (* "*") (cast_expression "(double)*(float *)(unaff_EBP + 0x262a9a)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(unaff_EBP + 0x262a9a)" (* "*") (cast_expression "(float *)(unaff_EBP + 0x262a9a)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0x262a9a)" (( "(") (binary_expression "unaff_EBP + 0x262a9a" (identifier "unaff_EBP") (+ "+") (number_literal "0x262a9a")) () ")"))))))) (; ";"))) (} "}")) (else_clause "else {\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }" (else "else") (compound_statement "{\n                          dVar11 = 0.0;\nLAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }" ({ "{") (expression_statement "dVar11 = 0.0;" (assignment_expression "dVar11 = 0.0" (identifier "dVar11") (= "=") (number_literal "0.0")) (; ";")) (labeled_statement "LAB_0003cfe6:\n                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);" (statement_identifier "LAB_0003cfe6") (: ":") (expression_statement "dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);" (assignment_expression "dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a)" (identifier "dVar11") (= "=") (binary_expression "dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a)" (binary_expression "dVar11 * dVar3" (identifier "dVar11") (* "*") (identifier "dVar3")) (* "*") (cast_expression "(double)*(float *)(unaff_EBP + 0x262a9a)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(unaff_EBP + 0x262a9a)" (* "*") (cast_expression "(float *)(unaff_EBP + 0x262a9a)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0x262a9a)" (( "(") (binary_expression "unaff_EBP + 0x262a9a" (identifier "unaff_EBP") (+ "+") (number_literal "0x262a9a")) () ")"))))))) (; ";"))) (} "}")))) (} "}")) (else_clause "else {\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }" (else "else") (compound_statement "{\nLAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        dVar13 = (dVar2 * dVar12) / dVar11;\n                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }\n                      }" ({ "{") (labeled_statement "LAB_0003ce0c:\n                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);" (statement_identifier "LAB_0003ce0c") (: ":") (expression_statement "dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);" (assignment_expression "dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a)" (identifier "dVar11") (= "=") (cast_expression "(double)*(float *)(unaff_EBP + 0x262a9a)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(unaff_EBP + 0x262a9a)" (* "*") (cast_expression "(float *)(unaff_EBP + 0x262a9a)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0x262a9a)" (( "(") (binary_expression "unaff_EBP + 0x262a9a" (identifier "unaff_EBP") (+ "+") (number_literal "0x262a9a")) () ")")))))) (; ";"))) (expression_statement "dVar13 = (dVar2 * dVar12) / dVar11;" (assignment_expression "dVar13 = (dVar2 * dVar12) / dVar11" (identifier "dVar13") (= "=") (binary_expression "(dVar2 * dVar12) / dVar11" (parenthesized_expression "(dVar2 * dVar12)" (( "(") (binary_expression "dVar2 * dVar12" (identifier "dVar2") (* "*") (identifier "dVar12")) () ")")) (/ "/") (identifier "dVar11"))) (; ";")) (if_statement "if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }" (if "if") (parenthesized_expression "(dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e))" (( "(") (binary_expression "dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)" (identifier "dVar13") (< "<") (cast_expression "(double)*(float *)(unaff_EBP + 0x262a9e)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(unaff_EBP + 0x262a9e)" (* "*") (cast_expression "(float *)(unaff_EBP + 0x262a9e)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0x262a9e)" (( "(") (binary_expression "unaff_EBP + 0x262a9e" (identifier "unaff_EBP") (+ "+") (number_literal "0x262a9e")) () ")")))))) () ")")) (compound_statement "{\n                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);\n                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }\n                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }\n                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);\n                        }" ({ "{") (expression_statement "dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);" (assignment_expression "dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP)" (identifier "dVar13") (= "=") (binary_expression "dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP)" (identifier "dVar13") (+ "+") (cast_expression "(double)*(float *)(&DAT_002624ae + unaff_EBP)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(&DAT_002624ae + unaff_EBP)" (* "*") (cast_expression "(float *)(&DAT_002624ae + unaff_EBP)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_002624ae + unaff_EBP)" (( "(") (binary_expression "&DAT_002624ae + unaff_EBP" (pointer_expression "&DAT_002624ae" (& "&") (identifier "DAT_002624ae")) (+ "+") (identifier "unaff_EBP")) () ")"))))))) (; ";")) (if_statement "if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }\n                          else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }" (if "if") (parenthesized_expression "((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13)" (( "(") (binary_expression "(double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13" (cast_expression "(double)*(float *)(&DAT_002624be + unaff_EBP)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(&DAT_002624be + unaff_EBP)" (* "*") (cast_expression "(float *)(&DAT_002624be + unaff_EBP)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_002624be + unaff_EBP)" (( "(") (binary_expression "&DAT_002624be + unaff_EBP" (pointer_expression "&DAT_002624be" (& "&") (identifier "DAT_002624be")) (+ "+") (identifier "unaff_EBP")) () ")"))))) (<= "<=") (identifier "dVar13")) () ")")) (compound_statement "{\n                            lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));\n                            local_2c = (undefined4)lVar5;\n                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);\n                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n                          }" ({ "{") (expression_statement "lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));" (assignment_expression "lVar5 = (longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP))" (identifier "lVar5") (= "=") (cast_expression "(longlong)\n                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP))" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP))" (identifier "ROUND") (argument_list "(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP))" (( "(") (binary_expression "dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP)" (identifier "dVar13") (- "-") (cast_expression "(double)*(float *)(&DAT_002624be + unaff_EBP)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(&DAT_002624be + unaff_EBP)" (* "*") (cast_expression "(float *)(&DAT_002624be + unaff_EBP)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_002624be + unaff_EBP)" (( "(") (binary_expression "&DAT_002624be + unaff_EBP" (pointer_expression "&DAT_002624be" (& "&") (identifier "DAT_002624be")) (+ "+") (identifier "unaff_EBP")) () ")")))))) () ")"))))) (; ";")) (expression_statement "local_2c = (undefined4)lVar5;" (assignment_expression "local_2c = (undefined4)lVar5" (identifier "local_2c") (= "=") (cast_expression "(undefined4)lVar5" (( "(") (type_descriptor "undefined4" (type_identifier "undefined4")) () ")") (identifier "lVar5"))) (; ";")) (expression_statement "iStack_28 = (int)((ulonglong)lVar5 >> 0x20);" (assignment_expression "iStack_28 = (int)((ulonglong)lVar5 >> 0x20)" (identifier "iStack_28") (= "=") (cast_expression "(int)((ulonglong)lVar5 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar5 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar5 >> 0x20" (cast_expression "(ulonglong)lVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar5")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);" (assignment_expression "uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c)" (identifier "uVar4") (= "=") (call_expression "CONCAT44(iStack_28 + -0x80000000,local_2c)" (identifier "CONCAT44") (argument_list "(iStack_28 + -0x80000000,local_2c)" (( "(") (binary_expression "iStack_28 + -0x80000000" (identifier "iStack_28") (+ "+") (number_literal "-0x80000000")) (, ",") (identifier "local_2c") () ")")))) (; ";")) (} "}")) (else_clause "else {\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }" (else "else") (compound_statement "{\n                            uVar4 = (ulonglong)ROUND(dVar13);\n                          }" ({ "{") (expression_statement "uVar4 = (ulonglong)ROUND(dVar13);" (assignment_expression "uVar4 = (ulonglong)ROUND(dVar13)" (identifier "uVar4") (= "=") (cast_expression "(ulonglong)ROUND(dVar13)" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (call_expression "ROUND(dVar13)" (identifier "ROUND") (argument_list "(dVar13)" (( "(") (identifier "dVar13") () ")"))))) (; ";")) (} "}")))) (if_statement "if (uVar4 <= CONCAT44(iVar21,iVar17)) {\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }" (if "if") (parenthesized_expression "(uVar4 <= CONCAT44(iVar21,iVar17))" (( "(") (binary_expression "uVar4 <= CONCAT44(iVar21,iVar17)" (identifier "uVar4") (<= "<=") (call_expression "CONCAT44(iVar21,iVar17)" (identifier "CONCAT44") (argument_list "(iVar21,iVar17)" (( "(") (identifier "iVar21") (, ",") (identifier "iVar17") () ")")))) () ")")) (compound_statement "{\n                            dVar11 = (double)(short)uVar4;\n                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;\n                            goto LAB_0003cea2;\n                          }" ({ "{") (expression_statement "dVar11 = (double)(short)uVar4;" (assignment_expression "dVar11 = (double)(short)uVar4" (identifier "dVar11") (= "=") (cast_expression "(double)(short)uVar4" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (cast_expression "(short)uVar4" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar4")))) (; ";")) (if_statement "if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;" (if "if") (parenthesized_expression "(dVar12 < *(double *)(unaff_EBP + 0x2624c2))" (( "(") (binary_expression "dVar12 < *(double *)(unaff_EBP + 0x2624c2)" (identifier "dVar12") (< "<") (pointer_expression "*(double *)(unaff_EBP + 0x2624c2)" (* "*") (cast_expression "(double *)(unaff_EBP + 0x2624c2)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0x2624c2)" (( "(") (binary_expression "unaff_EBP + 0x2624c2" (identifier "unaff_EBP") (+ "+") (number_literal "0x2624c2")) () ")"))))) () ")")) (goto_statement "goto LAB_0003cfe6;" (goto "goto") (statement_identifier "LAB_0003cfe6") (; ";"))) (goto_statement "goto LAB_0003cea2;" (goto "goto") (statement_identifier "LAB_0003cea2") (; ";")) (} "}"))) (expression_statement "dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);" (assignment_expression "dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a)" (identifier "dVar11") (= "=") (cast_expression "(double)*(float *)(unaff_EBP + 0x262a9a)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(unaff_EBP + 0x262a9a)" (* "*") (cast_expression "(float *)(unaff_EBP + 0x262a9a)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0x262a9a)" (( "(") (binary_expression "unaff_EBP + 0x262a9a" (identifier "unaff_EBP") (+ "+") (number_literal "0x262a9a")) () ")")))))) (; ";")) (} "}"))) (} "}")))) (} "}")))) (if_statement "if (dVar11 == dVar2) {\n                      uVar22 = *puVar1;\n                      break;\n                    }" (if "if") (parenthesized_expression "(dVar11 == dVar2)" (( "(") (binary_expression "dVar11 == dVar2" (identifier "dVar11") (== "==") (identifier "dVar2")) () ")")) (compound_statement "{\n                      uVar22 = *puVar1;\n                      break;\n                    }" ({ "{") (expression_statement "uVar22 = *puVar1;" (assignment_expression "uVar22 = *puVar1" (identifier "uVar22") (= "=") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "uVar22 = uVar22 + 1;" (assignment_expression "uVar22 = uVar22 + 1" (identifier "uVar22") (= "=") (binary_expression "uVar22 + 1" (identifier "uVar22") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar1 = uVar22;" (assignment_expression "*puVar1 = uVar22" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (identifier "uVar22")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar22 != 0x10)" (( "(") (binary_expression "uVar22 != 0x10" (identifier "uVar22") (!= "!=") (number_literal "0x10")) () ")")) (; ";")) (} "}"))) (expression_statement "iVar23 = iVar23 + 1;" (assignment_expression "iVar23 = iVar23 + 1" (identifier "iVar23") (= "=") (binary_expression "iVar23 + 1" (identifier "iVar23") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar17 = *(int *)(iVar6 + 0x298);" (assignment_expression "iVar17 = *(int *)(iVar6 + 0x298)" (identifier "iVar17") (= "=") (pointer_expression "*(int *)(iVar6 + 0x298)" (* "*") (cast_expression "(int *)(iVar6 + 0x298)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x298)" (( "(") (binary_expression "iVar6 + 0x298" (identifier "iVar6") (+ "+") (number_literal "0x298")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar23 < iVar17)" (( "(") (binary_expression "iVar23 < iVar17" (identifier "iVar23") (< "<") (identifier "iVar17")) () ")")) (; ";")) (} "}"))) (expression_statement "local_40 = local_40 + 1;" (assignment_expression "local_40 = local_40 + 1" (identifier "local_40") (= "=") (binary_expression "local_40 + 1" (identifier "local_40") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_44 = local_44 + iVar17 * 8;" (assignment_expression "local_44 = local_44 + iVar17 * 8" (identifier "local_44") (= "=") (binary_expression "local_44 + iVar17 * 8" (identifier "local_44") (+ "+") (binary_expression "iVar17 * 8" (identifier "iVar17") (* "*") (number_literal "8")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_40 < *(int *)(iVar6 + 0x18))" (( "(") (binary_expression "local_40 < *(int *)(iVar6 + 0x18)" (identifier "local_40") (< "<") (pointer_expression "*(int *)(iVar6 + 0x18)" (* "*") (cast_expression "(int *)(iVar6 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x18)" (( "(") (binary_expression "iVar6 + 0x18" (identifier "iVar6") (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (; ";")) (} "}"))) (if_statement "if (uVar22 == 0x10) {\n          param_1[4] = 0;\n        }" (if "if") (parenthesized_expression "(uVar22 == 0x10)" (( "(") (binary_expression "uVar22 == 0x10" (identifier "uVar22") (== "==") (number_literal "0x10")) () ")")) (compound_statement "{\n          param_1[4] = 0;\n        }" ({ "{") (expression_statement "param_1[4] = 0;" (assignment_expression "param_1[4] = 0" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (} "}"))) (expression_statement "local_3c = local_3c + 1;" (assignment_expression "local_3c = local_3c + 1" (identifier "local_3c") (= "=") (binary_expression "local_3c + 1" (identifier "local_3c") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar16 != local_3c)" (( "(") (binary_expression "iVar16 != local_3c" (identifier "iVar16") (!= "!=") (identifier "local_3c")) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */
/* WARNING: Removing unreachable block (ram,0x0003cf18) */
/* WARNING: Enum "GravityType": Some values do not have unique names */
/* WARNING: Enum "DisposeType": Some values do not have unique names */
/* WARNING: Enum "ChannelType": Some values do not have unique names */
/* WARNING: Enum "PixelChannel": Some values do not have unique names */
/* WARNING: Enum "ExceptionType": Some values do not have unique names */
/* DWARF original prototype: void GetImageDepth._omp_fn.2(anon_struct_20_5_8a8fa108 * param_0) */

void __thiscall function_1(type_1 *this)

{
  type_2 *puVar1;
  double var_14;
  type_3 var_27;
  type_4 lVar4;
  type_5 *pIVar5;
  size_t *var_9;
  type_6 *cache_view;
  type_7 *exception;
  type_8 *pPVar7;
  type_9 var_17;
  double var_22;
  double var_21;
  double var_23;
  type_2 var_19;
  double var_15;
  int var_4;
  int var_5;
  type_2 uVar16;
  type_2 var_18;
  size_t var_29;
  type_9 var_16;
  int iVar20;
  int iVar21;
  type_2 var_12;
  type_10 *var_8;
  int var_28;
  int var_3;
  type_11 local_2c;
  int var_26;
  
  pIVar5 = this->image;
  var_3 = var_1();
  var_4 = var_2();
  var_5 = (int)pIVar5->rows / var_3;
  var_3 = (int)pIVar5->rows % var_3;
  if (var_4 < var_3) {
    var_5 = var_5 + 1;
    var_3 = 0;
  }
  var_3 = var_3 + var_4 * var_5;
  var_5 = var_5 + var_3;
  if (var_3 < var_5) {
    var_9 = this->current_depth;
    cache_view = this->image_view;
    exception = this->exception;
    do {
      var_4 = var_2();
      if ((this->status != var_6) &&
         (var_8 = var_7(cache_view,0,var_3,pIVar5->columns,1,exception),
         var_8 != (type_10 *)0x0)) {
        puVar1 = var_9 + var_4;
        var_12 = *puVar1;
        if (0 < (int)pIVar5->columns) {
          var_28 = 0;
          do {
            var_29 = pIVar5->number_channels;
            if (0 < (int)var_29) {
              pPVar7 = pIVar5->channel_map;
              var_4 = 0;
              do {
                var_15 = DAT_0029f738;
                if (((pPVar7[pPVar7[var_4].channel].traits & var_10) !=
                     var_11) && (var_12 < 0x10)) {
                  var_14 = var_8[var_4];
                  do {
                    if (var_12 == 0) {
                      if (var_13(var_14)) {
                        var_22 = 0.0;
                      }
                      else {
                        if (0.0 < var_14) {
                          var_21 = 0.0;
                          iVar20 = 0;
                          iVar21 = 0;
                          goto LAB_0003ce0c;
                        }
                        var_22 = var_15 * 0.0 * (double)DAT_0029f710;
                      }
                    }
                    else {
                      var_16 = (type_9)(var_12 - 1);
                      var_17 = var_16 & 0x1f;
                      uVar16 = 2 << (var_16 & 0x1f);
                      var_18 = uVar16;
                      var_19 = 0 << var_17 | 2U >> 0x20 - var_17;
                      if ((var_12 - 1 & 0x20) != 0) {
                        var_18 = 0;
                        var_19 = uVar16;
                      }
                      iVar20 = var_18 - 1;
                      var_21 = (double)(short)iVar20;
                      iVar21 = (var_19 - 1) + (type_2)(var_18 != 0);
                      if (var_14 <= 0.0) {
                        if (var_20 <= var_21) {
                          var_22 = 0.0;
LAB_0003cea2:
                          var_22 = ((double)DAT_0029f718 / var_21) * var_22 * (double)DAT_0029f710;
                        }
                        else {
                          var_22 = 0.0;
LAB_0003cfe6:
                          var_22 = var_22 * var_15 * (double)DAT_0029f710;
                        }
                      }
                      else {
LAB_0003ce0c:
                        var_22 = (double)DAT_0029f710;
                        var_23 = (var_14 * var_21) / var_22;
                        if (var_23 < (double)DAT_0029f714) {
                          var_23 = var_23 + (double)DAT_0029f124;
                          if ((double)DAT_0029f134 <= var_23) {
                            lVar4 = (type_4)var_24(var_23 - (double)DAT_0029f134);
                            local_2c = (type_11)lVar4;
                            var_26 = (int)((type_3)lVar4 >> 0x20);
                            var_27 = var_25(var_26 + -0x80000000,local_2c);
                          }
                          else {
                            var_27 = (type_3)var_24(var_23);
                          }
                          if (var_27 <= var_25(iVar21,iVar20)) {
                            var_22 = (double)(short)var_27;
                            if (var_21 < var_20) goto LAB_0003cfe6;
                            goto LAB_0003cea2;
                          }
                          var_22 = (double)DAT_0029f710;
                        }
                      }
                    }
                    if (var_22 == var_14) {
                      var_12 = *puVar1;
                      break;
                    }
                    var_12 = var_12 + 1;
                    *puVar1 = var_12;
                  } while (var_12 != 0x10);
                }
                var_4 = var_4 + 1;
                var_29 = pIVar5->number_channels;
              } while (var_4 < (int)var_29);
            }
            var_28 = var_28 + 1;
            var_8 = var_8 + var_29;
          } while (var_28 < (int)pIVar5->columns);
        }
        if (var_12 == 0x10) {
          this->status = var_6;
        }
      }
      var_3 = var_3 + 1;
    } while (var_5 != var_3);
  }
  return;
}


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

/* WARNING: Removing unreachable block (ram,0x0003cf18) */

void MASKED(int *param_1)

{
  uint *puVar1;
  double dVar2;
  double dVar3;
  ulonglong uVar4;
  longlong lVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  byte bVar10;
  double dVar11;
  double dVar12;
  double dVar13;
  uint uVar14;
  int iVar15;
  int iVar16;
  int iVar17;
  uint uVar18;
  uint uVar19;
  byte bVar20;
  int iVar21;
  int unaff_EBP;
  uint uVar22;
  int iVar23;
  int local_44;
  int local_40;
  int local_3c;
  undefined4 local_2c;
  int iStack_28;
  
  FUN_00042799();
  iVar6 = *param_1;
  local_3c = omp_get_num_threads();
  iVar15 = omp_get_thread_num();
  iVar16 = *(int *)(iVar6 + 0x1c) / local_3c;
  local_3c = *(int *)(iVar6 + 0x1c) % local_3c;
  if (iVar15 < local_3c) {
    iVar16 = iVar16 + 1;
    local_3c = 0;
  }
  local_3c = local_3c + iVar15 * iVar16;
  iVar16 = iVar16 + local_3c;
  if (local_3c < iVar16) {
    iVar15 = param_1[3];
    iVar7 = param_1[2];
    iVar8 = param_1[1];
    do {
      iVar17 = omp_get_thread_num();
      if ((param_1[4] != 0) &&
         (local_44 = GetCacheViewVirtualPixels
                               (iVar7,0,local_3c,*(undefined4 *)(iVar6 + 0x18),1,iVar8),
         local_44 != 0)) {
        puVar1 = (uint *)(iVar15 + iVar17 * 4);
        uVar22 = *puVar1;
        if (0 < *(int *)(iVar6 + 0x18)) {
          local_40 = 0;
          do {
            iVar17 = *(int *)(iVar6 + 0x298);
            if (0 < iVar17) {
              iVar9 = *(int *)(iVar6 + 0x2a8);
              iVar23 = 0;
              do {
                if (((*(byte *)(iVar9 + 4 + *(int *)(iVar9 + iVar23 * 0xc) * 0xc) & 2) != 0) &&
                   (uVar22 < 0x10)) {
                  dVar2 = *(double *)(local_44 + iVar23 * 8);
                  dVar3 = *(double *)(unaff_EBP + 0x262ac2);
                  do {
                    if (uVar22 == 0) {
                      if (NAN(dVar2)) {
                        dVar11 = 0.0;
                      }
                      else {
                        if (0.0 < dVar2) {
                          dVar12 = 0.0;
                          iVar17 = 0;
                          iVar21 = 0;
                          goto LAB_0003ce0c;
                        }
                        dVar11 = dVar3 * 0.0 * (double)*(float *)(unaff_EBP + 0x262a9a);
                      }
                    }
                    else {
                      bVar20 = (byte)(uVar22 - 1);
                      bVar10 = bVar20 & 0x1f;
                      uVar18 = 2 << (bVar20 & 0x1f);
                      uVar19 = uVar18;
                      uVar14 = 0 << bVar10 | 2U >> 0x20 - bVar10;
                      if ((uVar22 - 1 & 0x20) != 0) {
                        uVar19 = 0;
                        uVar14 = uVar18;
                      }
                      iVar17 = uVar19 - 1;
                      dVar12 = (double)(short)iVar17;
                      iVar21 = (uVar14 - 1) + (uint)(uVar19 != 0);
                      if (dVar2 <= 0.0) {
                        if (*(double *)(unaff_EBP + 0x2624c2) <= dVar12) {
                          dVar11 = 0.0;
LAB_0003cea2:
                          dVar11 = ((double)*(float *)(unaff_EBP + 0x262aa2) / dVar12) * dVar11 *
                                   (double)*(float *)(unaff_EBP + 0x262a9a);
                        }
                        else {
                          dVar11 = 0.0;
LAB_0003cfe6:
                          dVar11 = dVar11 * dVar3 * (double)*(float *)(unaff_EBP + 0x262a9a);
                        }
                      }
                      else {
LAB_0003ce0c:
                        dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);
                        dVar13 = (dVar2 * dVar12) / dVar11;
                        if (dVar13 < (double)*(float *)(unaff_EBP + 0x262a9e)) {
                          dVar13 = dVar13 + (double)*(float *)(&DAT_002624ae + unaff_EBP);
                          if ((double)*(float *)(&DAT_002624be + unaff_EBP) <= dVar13) {
                            lVar5 = (longlong)
                                    ROUND(dVar13 - (double)*(float *)(&DAT_002624be + unaff_EBP));
                            local_2c = (undefined4)lVar5;
                            iStack_28 = (int)((ulonglong)lVar5 >> 0x20);
                            uVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);
                          }
                          else {
                            uVar4 = (ulonglong)ROUND(dVar13);
                          }
                          if (uVar4 <= CONCAT44(iVar21,iVar17)) {
                            dVar11 = (double)(short)uVar4;
                            if (dVar12 < *(double *)(unaff_EBP + 0x2624c2)) goto LAB_0003cfe6;
                            goto LAB_0003cea2;
                          }
                          dVar11 = (double)*(float *)(unaff_EBP + 0x262a9a);
                        }
                      }
                    }
                    if (dVar11 == dVar2) {
                      uVar22 = *puVar1;
                      break;
                    }
                    uVar22 = uVar22 + 1;
                    *puVar1 = uVar22;
                  } while (uVar22 != 0x10);
                }
                iVar23 = iVar23 + 1;
                iVar17 = *(int *)(iVar6 + 0x298);
              } while (iVar23 < iVar17);
            }
            local_40 = local_40 + 1;
            local_44 = local_44 + iVar17 * 8;
          } while (local_40 < *(int *)(iVar6 + 0x18));
        }
        if (uVar22 == 0x10) {
          param_1[4] = 0;
        }
      }
      local_3c = local_3c + 1;
    } while (iVar16 != local_3c);
  }
  return;
}

