
/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */
/* 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 ColorDecisionListImage._omp_fn.1(anon_struct_28_7_e94a0b20 *
   param_0) */

void __thiscall ColorDecisionListImage__omp_fn_1(anon_struct_28_7_e94a0b20 *this)

{
  longlong lVar1;
  double dVar2;
  Image *image;
  CacheView *cache_view;
  PixelInfo *pPVar3;
  ExceptionInfo *exception;
  size_t sVar4;
  PixelChannelMap *pPVar5;
  int iVar6;
  int iVar7;
  size_t sVar8;
  ColorCorrection *pCVar9;
  uint *puVar10;
  double dVar11;
  float fVar12;
  double dVar13;
  int iVar14;
  int iVar15;
  PixelInfo *pPVar16;
  Quantum *pQVar17;
  double *pdVar18;
  MagickBooleanType MVar19;
  uint uVar20;
  PixelInfo *pPVar21;
  uint uVar22;
  bool bVar23;
  size_t local_5c;
  int local_48;
  int local_2c;
  
  image = this->image;
  local_48 = omp_get_num_threads();
  iVar14 = omp_get_thread_num();
  iVar15 = (int)image->rows / local_48;
  local_48 = (int)image->rows % local_48;
  if (iVar14 < local_48) {
    iVar15 = iVar15 + 1;
    local_48 = 0;
  }
  local_48 = iVar14 * iVar15 + local_48;
  iVar15 = iVar15 + local_48;
  if (local_48 < iVar15) {
    cache_view = this->image_view;
    pPVar3 = this->cdl_map;
    pPVar16 = pPVar3 + 0xffff;
    exception = this->exception;
    do {
      if (this->status != MagickFalse) {
        pQVar17 = GetCacheViewAuthenticPixels(cache_view,0,local_48,image->columns,1,exception);
        dVar13 = DAT_002f3280;
        if (pQVar17 == (Quantum *)0x0) {
LAB_000c2796:
          this->status = MagickFalse;
        }
        else {
          sVar4 = image->columns;
          if (0 < (int)sVar4) {
            local_5c = 0;
            pPVar5 = image->channel_map;
            iVar14 = pPVar5->offset;
            iVar6 = pPVar5[2].offset;
            iVar7 = pPVar5[1].offset;
            sVar8 = image->number_channels;
            pCVar9 = this->color_correction;
            pdVar18 = pQVar17 + iVar7;
            do {
              dVar2 = pdVar18[iVar14 - iVar7];
              dVar11 = (double)DAT_002f3260 * pdVar18[iVar6 - iVar7] +
                       dVar2 * (double)DAT_002f325c + *pdVar18 * dVar13;
              pPVar21 = pPVar16;
              if ((dVar2 < (double)DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < dVar2)) {
                local_2c = (int)(longlong)ROUND(dVar2 + (double)DAT_002df2b8);
                pPVar21 = pPVar3 + local_2c;
              }
              pdVar18[iVar14 - iVar7] = (pPVar21->red - dVar11) * pCVar9->saturation + dVar11;
              fVar12 = (float)*pdVar18;
              pPVar21 = pPVar16;
              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {
                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);
                pPVar21 = pPVar3 + local_2c;
              }
              *pdVar18 = (pPVar21->green - dVar11) * pCVar9->saturation + dVar11;
              fVar12 = (float)pdVar18[iVar6 - iVar7];
              pPVar21 = pPVar16;
              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {
                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);
                pPVar21 = pPVar3 + local_2c;
              }
              local_5c = local_5c + 1;
              pdVar18[iVar6 - iVar7] = (pPVar21->blue - dVar11) * pCVar9->saturation + dVar11;
              pdVar18 = pdVar18 + sVar8;
            } while (local_5c != sVar4);
          }
          MVar19 = SyncCacheViewAuthenticPixels(cache_view,exception);
          if (MVar19 == MagickFalse) {
            this->status = MagickFalse;
          }
          if (image->progress_monitor != (MagickProgressMonitor)0x0) {
            puVar10 = (uint *)this->progress;
            uVar20 = *puVar10;
            uVar22 = puVar10[1];
            do {
              LOCK();
              lVar1 = *(longlong *)puVar10;
              bVar23 = CONCAT44(uVar22,uVar20) == lVar1;
              if (bVar23) {
                *(longlong *)puVar10 = CONCAT44(uVar22 + (0xfffffffe < uVar20),uVar20 + 1);
              }
              else {
                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);
                uVar20 = (uint)lVar1;
              }
              UNLOCK();
            } while (!bVar23);
            MVar19 = SetImageProgress(image,"ColorDecisionList/Image",*this->progress,
                                      (ulonglong)image->rows);
            if (MVar19 == MagickFalse) goto LAB_000c2796;
          }
        }
      }
      local_48 = local_48 + 1;
    } while (iVar15 != local_48);
  }
  return;
}



void FUN_000c2420(int *param_1)

{
  longlong lVar1;
  double dVar2;
  double dVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  uint *puVar13;
  double dVar14;
  float fVar15;
  int iVar16;
  int iVar17;
  int iVar18;
  int iVar19;
  double *pdVar20;
  uint uVar21;
  uint uVar22;
  int unaff_EBP;
  bool bVar23;
  int local_5c;
  int local_48;
  int local_2c;
  
  FUN_00045159();
  iVar4 = *param_1;
  local_48 = omp_get_num_threads();
  iVar16 = omp_get_thread_num();
  iVar17 = *(int *)(iVar4 + 0x1c) / local_48;
  local_48 = *(int *)(iVar4 + 0x1c) % local_48;
  if (iVar16 < local_48) {
    iVar17 = iVar17 + 1;
    local_48 = 0;
  }
  local_48 = iVar16 * iVar17 + local_48;
  iVar17 = iVar17 + local_48;
  if (local_48 < iVar17) {
    iVar16 = param_1[2];
    iVar5 = param_1[4];
    iVar18 = iVar5 + 0x4fffb0;
    iVar6 = param_1[1];
    do {
      if (param_1[5] != 0) {
        iVar19 = GetCacheViewAuthenticPixels
                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);
        if (iVar19 == 0) {
LAB_000c2796:
          param_1[5] = 0;
        }
        else {
          iVar7 = *(int *)(iVar4 + 0x18);
          if (0 < iVar7) {
            local_5c = 0;
            dVar2 = *(double *)(unaff_EBP + 0x230e5a);
            iVar8 = *(int *)(iVar4 + 0x2a8);
            iVar9 = *(int *)(iVar8 + 8);
            iVar10 = *(int *)(iVar8 + 0x20);
            iVar8 = *(int *)(iVar8 + 0x14);
            iVar11 = *(int *)(iVar4 + 0x298);
            iVar12 = param_1[3];
            pdVar20 = (double *)(iVar19 + iVar8 * 8);
            do {
              dVar3 = pdVar20[iVar9 - iVar8];
              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +
                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;
              iVar19 = iVar18;
              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&
                 (iVar19 = iVar5, 0.0 < dVar3)) {
                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));
                iVar19 = local_2c * 0x50 + iVar5;
              }
              pdVar20[iVar9 - iVar8] =
                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;
              fVar15 = (float)*pdVar20;
              iVar19 = iVar18;
              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {
                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));
                iVar19 = local_2c * 0x50 + iVar5;
              }
              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14
              ;
              fVar15 = (float)pdVar20[iVar10 - iVar8];
              iVar19 = iVar18;
              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {
                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));
                iVar19 = local_2c * 0x50 + iVar5;
              }
              local_5c = local_5c + 1;
              pdVar20[iVar10 - iVar8] =
                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;
              pdVar20 = pdVar20 + iVar11;
            } while (local_5c != iVar7);
          }
          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);
          if (iVar19 == 0) {
            param_1[5] = 0;
          }
          if (*(int *)(iVar4 + 0x300) != 0) {
            puVar13 = (uint *)param_1[6];
            uVar21 = *puVar13;
            uVar22 = puVar13[1];
            do {
              LOCK();
              lVar1 = *(longlong *)puVar13;
              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;
              if (bVar23) {
                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);
              }
              else {
                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);
                uVar21 = (uint)lVar1;
              }
              UNLOCK();
            } while (!bVar23);
            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],
                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)
            ;
            if (iVar19 == 0) goto LAB_000c2796;
          }
        }
      }
      local_48 = local_48 + 1;
    } while (iVar17 != local_48);
  }
  return;
}


PUSH EBP
CALL 0x00045159
ADD EBP,0x35bbda
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 + 0x24],EAX
CALL 0x00030850
MOV ESI,EAX
CALL 0x000317c0
MOV ECX,EAX
MOV EAX,dword ptr [EDI + 0x1c]
CDQ
IDIV ESI
CMP ECX,EDX
JGE 0x000c245d
ADD EAX,0x1
XOR EDX,EDX
IMUL ECX,EAX
LEA ESI,[ECX + EDX*0x1]
ADD EAX,ESI
MOV dword ptr [ESP + 0x14],ESI
CMP ESI,EAX
MOV dword ptr [ESP + 0x28],EAX
JGE 0x000c27b4
MOV ESI,dword ptr [ESP + 0x60]
MOV EAX,dword ptr [ESP + 0x60]
MOV ESI,dword ptr [ESI + 0x8]
MOV EAX,dword ptr [EAX + 0x10]
MOV dword ptr [ESP + 0x2c],ESI
MOV ESI,dword ptr [ESP + 0x60]
MOV dword ptr [ESP + 0xc],EAX
ADD EAX,0x4fffb0
MOV dword ptr [ESP + 0x8],EAX
MOV EDI,dword ptr [ESI + 0x4]
MOV dword ptr [ESP + 0x38],EDI
NOP
MOV EAX,dword ptr [ESP + 0x60]
MOV EDX,dword ptr [EAX + 0x14]
TEST EDX,EDX
JZ 0x000c27a1
SUB ESP,0x8
MOV EBX,EBP
PUSH dword ptr [ESP + 0x40]
PUSH 0x1
MOV EDI,dword ptr [ESP + 0x34]
PUSH dword ptr [EDI + 0x18]
PUSH dword ptr [ESP + 0x28]
PUSH 0x0
PUSH dword ptr [ESP + 0x48]
CALL 0x000312c0
ADD ESP,0x20
TEST EAX,EAX
JZ 0x000c2796
MOV EDI,dword ptr [EDI + 0x18]
TEST EDI,EDI
MOV dword ptr [ESP + 0x18],EDI
JLE 0x000c270b
MOV EBX,dword ptr [ESP + 0x24]
MOV dword ptr [ESP],0x0
FLD qword ptr [EBP + 0xffed5280]
MOV EDX,dword ptr [EBX + 0x2a8]
MOV ESI,dword ptr [EDX + 0x8]
MOV EDI,dword ptr [EDX + 0x20]
SHL ESI,0x3
MOV dword ptr [ESP + 0x10],ESI
MOV ESI,dword ptr [EDX + 0x14]
SHL EDI,0x3
MOV EDX,dword ptr [EBX + 0x298]
LEA ECX,[ESI*0x8 + 0x0]
MOV ESI,dword ptr [ESP + 0x60]
SHL EDX,0x3
MOV dword ptr [ESP + 0x20],ECX
ADD EAX,ECX
MOV dword ptr [ESP + 0x1c],EDX
MOV ESI,dword ptr [ESI + 0xc]
LEA ESI,[ESI]
MOV EDX,EAX
MOV EBX,dword ptr [ESP + 0x10]
SUB EDX,dword ptr [ESP + 0x20]
MOV ECX,dword ptr [ESP + 0x8]
FLD qword ptr [EDX + EBX*0x1]
FLD qword ptr [EAX]
FMUL ST2
FLD ST1
FMUL dword ptr [EBP + 0xffed525c]
FADDP
FLD dword ptr [EBP + 0xffed5260]
FMUL qword ptr [EDX + EDI*0x1]
FADDP
FLD qword ptr [ESI + 0x48]
FLD dword ptr [EBP + 0xffec18a8]
FXCH ST3
FUCOMI ST0,ST3
FSTP ST3
JNC 0x000c25c0
FXCH ST2
FUCOMI ST0,ST0
MOV ECX,dword ptr [ESP + 0xc]
JP 0x000c25d0
FLDZ
FUCOMIP ST0,ST1
JNC 0x000c25e0
FNSTCW word ptr [ESP + 0x3e]
MOV EBX,dword ptr [ESP + 0x10]
FADD dword ptr [EBP + 0xffec12b8]
MOVZX ECX,word ptr [ESP + 0x3e]
OR CH,0xc
MOV word ptr [ESP + 0x3c],CX
FLDCW word ptr [ESP + 0x3c]
FISTP qword ptr [ESP + 0x30]
FLDCW word ptr [ESP + 0x3e]
FXCH
MOV ECX,dword ptr [ESP + 0x30]
LEA ECX,[ECX + ECX*0x4]
SHL ECX,0x4
ADD ECX,dword ptr [ESP + 0xc]
JMP 0x000c25e8
FSTP ST2
FXCH
JMP 0x000c25e8
FSTP ST0
FXCH
JMP 0x000c25e8
FSTP ST0
FXCH
LEA ESI,[ESI]
FLD qword ptr [ECX + 0x20]
FSUB ST0,ST2
MOV ECX,dword ptr [ESP + 0x8]
FMULP
FADD ST0,ST1
FSTP qword ptr [EDX + EBX*0x1]
FLD qword ptr [ESI + 0x48]
FLD dword ptr [EBP + 0xffec18a8]
FLD qword ptr [EAX]
FUCOMI ST0,ST1
FSTP ST1
JNC 0x000c2650
FUCOMI ST0,ST0
MOV ECX,dword ptr [ESP + 0xc]
JP 0x000c2658
FLDZ
FUCOMIP ST0,ST1
JNC 0x000c2660
FNSTCW word ptr [ESP + 0x3e]
FADD dword ptr [EBP + 0xffec12b8]
MOVZX ECX,word ptr [ESP + 0x3e]
OR CH,0xc
MOV word ptr [ESP + 0x3c],CX
FLDCW word ptr [ESP + 0x3c]
FISTP qword ptr [ESP + 0x30]
FLDCW word ptr [ESP + 0x3e]
MOV ECX,dword ptr [ESP + 0x30]
LEA ECX,[ECX + ECX*0x4]
SHL ECX,0x4
ADD ECX,dword ptr [ESP + 0xc]
JMP 0x000c2668
FSTP ST0
JMP 0x000c2668
FSTP ST0
JMP 0x000c2668
FSTP ST0
LEA ESI,[ESI]
FLD qword ptr [ECX + 0x28]
FSUB ST0,ST2
MOV ECX,dword ptr [ESP + 0x8]
FMULP
FADD ST0,ST1
FSTP qword ptr [EAX]
FLD qword ptr [ESI + 0x48]
FLD dword ptr [EBP + 0xffec18a8]
FLD qword ptr [EDX + EDI*0x1]
FUCOMI ST0,ST1
FSTP ST1
JNC 0x000c26d0
FUCOMI ST0,ST0
MOV ECX,dword ptr [ESP + 0xc]
JP 0x000c26d8
FLDZ
FUCOMIP ST0,ST1
JNC 0x000c26e0
FNSTCW word ptr [ESP + 0x3e]
FADD dword ptr [EBP + 0xffec12b8]
MOVZX ECX,word ptr [ESP + 0x3e]
OR CH,0xc
MOV word ptr [ESP + 0x3c],CX
FLDCW word ptr [ESP + 0x3c]
FISTP qword ptr [ESP + 0x30]
FLDCW word ptr [ESP + 0x3e]
MOV ECX,dword ptr [ESP + 0x30]
LEA ECX,[ECX + ECX*0x4]
SHL ECX,0x4
ADD ECX,dword ptr [ESP + 0xc]
JMP 0x000c26e8
FSTP ST0
JMP 0x000c26e8
FSTP ST0
JMP 0x000c26e8
FSTP ST0
LEA ESI,[ESI]
FLD qword ptr [ECX + 0x30]
FSUB ST0,ST2
ADD EAX,dword ptr [ESP + 0x1c]
ADD dword ptr [ESP],0x1
MOV EBX,dword ptr [ESP]
FMULP
FADDP
FSTP qword ptr [EDX + EDI*0x1]
CMP EBX,dword ptr [ESP + 0x18]
JNZ 0x000c2538
FSTP ST0
SUB ESP,0x8
MOV EBX,EBP
PUSH dword ptr [ESP + 0x40]
PUSH dword ptr [ESP + 0x38]
CALL 0x00031800
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x000c272f
MOV EAX,dword ptr [ESP + 0x60]
MOV dword ptr [EAX + 0x14],0x0
MOV EAX,dword ptr [ESP + 0x24]
MOV EAX,dword ptr [EAX + 0x300]
TEST EAX,EAX
JZ 0x000c27a1
MOV EAX,dword ptr [ESP + 0x60]
MOV ESI,dword ptr [EAX + 0x18]
MOV EAX,dword ptr [ESI]
MOV EDX,dword ptr [ESI + 0x4]
MOV ECX,EAX
MOV EBX,EDX
ADD ECX,0x1
ADC EBX,0x0
MOV dword ptr [ESP],ECX
MOV dword ptr [ESP + 0x4],EBX
MOV EBX,ECX
MOV ECX,dword ptr [ESP + 0x4]
CMPXCHG8B.LOCK qword ptr [ESI]
JNZ 0x000c2749
SUB ESP,0x8
XOR EDX,EDX
MOV EBX,EBP
MOV ESI,dword ptr [ESP + 0x2c]
MOV EAX,dword ptr [ESI + 0x1c]
PUSH EDX
PUSH EAX
MOV EAX,dword ptr [ESP + 0x70]
MOV EAX,dword ptr [EAX + 0x18]
PUSH dword ptr [EAX + 0x4]
PUSH dword ptr [EAX]
LEA EAX,[EBP + 0xffed4c42]
PUSH EAX
PUSH ESI
CALL 0x00033840
ADD ESP,0x20
TEST EAX,EAX
JNZ 0x000c27a1
MOV EAX,dword ptr [ESP + 0x60]
MOV dword ptr [EAX + 0x14],0x0
ADD dword ptr [ESP + 0x14],0x1
MOV EAX,dword ptr [ESP + 0x14]
CMP dword ptr [ESP + 0x28],EAX
JNZ 0x000c24a0
ADD ESP,0x4c
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "void FUN_000c2420(int *param_1)\n\n{\n  longlong lVar1;\n  double dVar2;\n  double dVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  uint *puVar13;\n  double dVar14;\n  float fVar15;\n  int iVar16;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  double *pdVar20;\n  uint uVar21;\n  uint uVar22;\n  int unaff_EBP;\n  bool bVar23;\n  int local_5c;\n  int local_48;\n  int local_2c;\n  \n  FUN_00045159();\n  iVar4 = *param_1;\n  local_48 = omp_get_num_threads();\n  iVar16 = omp_get_thread_num();\n  iVar17 = *(int *)(iVar4 + 0x1c) / local_48;\n  local_48 = *(int *)(iVar4 + 0x1c) % local_48;\n  if (iVar16 < local_48) {\n    iVar17 = iVar17 + 1;\n    local_48 = 0;\n  }\n  local_48 = iVar16 * iVar17 + local_48;\n  iVar17 = iVar17 + local_48;\n  if (local_48 < iVar17) {\n    iVar16 = param_1[2];\n    iVar5 = param_1[4];\n    iVar18 = iVar5 + 0x4fffb0;\n    iVar6 = param_1[1];\n    do {\n      if (param_1[5] != 0) {\n        iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);\n        if (iVar19 == 0) {\nLAB_000c2796:\n          param_1[5] = 0;\n        }\n        else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }\n      }\n      local_48 = local_48 + 1;\n    } while (iVar17 != local_48);\n  }\n  return;\n}\n\n" (function_definition "void FUN_000c2420(int *param_1)\n\n{\n  longlong lVar1;\n  double dVar2;\n  double dVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  uint *puVar13;\n  double dVar14;\n  float fVar15;\n  int iVar16;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  double *pdVar20;\n  uint uVar21;\n  uint uVar22;\n  int unaff_EBP;\n  bool bVar23;\n  int local_5c;\n  int local_48;\n  int local_2c;\n  \n  FUN_00045159();\n  iVar4 = *param_1;\n  local_48 = omp_get_num_threads();\n  iVar16 = omp_get_thread_num();\n  iVar17 = *(int *)(iVar4 + 0x1c) / local_48;\n  local_48 = *(int *)(iVar4 + 0x1c) % local_48;\n  if (iVar16 < local_48) {\n    iVar17 = iVar17 + 1;\n    local_48 = 0;\n  }\n  local_48 = iVar16 * iVar17 + local_48;\n  iVar17 = iVar17 + local_48;\n  if (local_48 < iVar17) {\n    iVar16 = param_1[2];\n    iVar5 = param_1[4];\n    iVar18 = iVar5 + 0x4fffb0;\n    iVar6 = param_1[1];\n    do {\n      if (param_1[5] != 0) {\n        iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);\n        if (iVar19 == 0) {\nLAB_000c2796:\n          param_1[5] = 0;\n        }\n        else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }\n      }\n      local_48 = local_48 + 1;\n    } while (iVar17 != local_48);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_000c2420(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  longlong lVar1;\n  double dVar2;\n  double dVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  uint *puVar13;\n  double dVar14;\n  float fVar15;\n  int iVar16;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  double *pdVar20;\n  uint uVar21;\n  uint uVar22;\n  int unaff_EBP;\n  bool bVar23;\n  int local_5c;\n  int local_48;\n  int local_2c;\n  \n  FUN_00045159();\n  iVar4 = *param_1;\n  local_48 = omp_get_num_threads();\n  iVar16 = omp_get_thread_num();\n  iVar17 = *(int *)(iVar4 + 0x1c) / local_48;\n  local_48 = *(int *)(iVar4 + 0x1c) % local_48;\n  if (iVar16 < local_48) {\n    iVar17 = iVar17 + 1;\n    local_48 = 0;\n  }\n  local_48 = iVar16 * iVar17 + local_48;\n  iVar17 = iVar17 + local_48;\n  if (local_48 < iVar17) {\n    iVar16 = param_1[2];\n    iVar5 = param_1[4];\n    iVar18 = iVar5 + 0x4fffb0;\n    iVar6 = param_1[1];\n    do {\n      if (param_1[5] != 0) {\n        iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);\n        if (iVar19 == 0) {\nLAB_000c2796:\n          param_1[5] = 0;\n        }\n        else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }\n      }\n      local_48 = local_48 + 1;\n    } while (iVar17 != local_48);\n  }\n  return;\n}" { (declaration "longlong lVar1;" type_identifier identifier ;) (declaration "double dVar2;" primitive_type identifier ;) (declaration "double dVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type 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 "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "uint *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "double dVar14;" primitive_type identifier ;) (declaration "float fVar15;" primitive_type identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "double *pdVar20;" primitive_type (pointer_declarator "*pdVar20" * identifier) ;) (declaration "uint uVar21;" type_identifier identifier ;) (declaration "uint uVar22;" type_identifier identifier ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "bool bVar23;" primitive_type identifier ;) (declaration "int local_5c;" primitive_type identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "FUN_00045159();" (call_expression "FUN_00045159()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar4 = *param_1;" (assignment_expression "iVar4 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "local_48 = omp_get_num_threads();" (assignment_expression "local_48 = omp_get_num_threads()" identifier = (call_expression "omp_get_num_threads()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar16 = omp_get_thread_num();" (assignment_expression "iVar16 = omp_get_thread_num()" identifier = (call_expression "omp_get_thread_num()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar17 = *(int *)(iVar4 + 0x1c) / local_48;" (assignment_expression "iVar17 = *(int *)(iVar4 + 0x1c) / local_48" identifier = (binary_expression "*(int *)(iVar4 + 0x1c) / local_48" (pointer_expression "*(int *)(iVar4 + 0x1c)" * (cast_expression "(int *)(iVar4 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x1c)" ( (binary_expression "iVar4 + 0x1c" identifier + number_literal) )))) / identifier)) ;) (expression_statement "local_48 = *(int *)(iVar4 + 0x1c) % local_48;" (assignment_expression "local_48 = *(int *)(iVar4 + 0x1c) % local_48" identifier = (binary_expression "*(int *)(iVar4 + 0x1c) % local_48" (pointer_expression "*(int *)(iVar4 + 0x1c)" * (cast_expression "(int *)(iVar4 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x1c)" ( (binary_expression "iVar4 + 0x1c" identifier + number_literal) )))) % identifier)) ;) (if_statement "if (iVar16 < local_48) {\n    iVar17 = iVar17 + 1;\n    local_48 = 0;\n  }" if (parenthesized_expression "(iVar16 < local_48)" ( (binary_expression "iVar16 < local_48" identifier < identifier) )) (compound_statement "{\n    iVar17 = iVar17 + 1;\n    local_48 = 0;\n  }" { (expression_statement "iVar17 = iVar17 + 1;" (assignment_expression "iVar17 = iVar17 + 1" identifier = (binary_expression "iVar17 + 1" identifier + number_literal)) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) })) (expression_statement "local_48 = iVar16 * iVar17 + local_48;" (assignment_expression "local_48 = iVar16 * iVar17 + local_48" identifier = (binary_expression "iVar16 * iVar17 + local_48" (binary_expression "iVar16 * iVar17" identifier * identifier) + identifier)) ;) (expression_statement "iVar17 = iVar17 + local_48;" (assignment_expression "iVar17 = iVar17 + local_48" identifier = (binary_expression "iVar17 + local_48" identifier + identifier)) ;) (if_statement "if (local_48 < iVar17) {\n    iVar16 = param_1[2];\n    iVar5 = param_1[4];\n    iVar18 = iVar5 + 0x4fffb0;\n    iVar6 = param_1[1];\n    do {\n      if (param_1[5] != 0) {\n        iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);\n        if (iVar19 == 0) {\nLAB_000c2796:\n          param_1[5] = 0;\n        }\n        else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }\n      }\n      local_48 = local_48 + 1;\n    } while (iVar17 != local_48);\n  }" if (parenthesized_expression "(local_48 < iVar17)" ( (binary_expression "local_48 < iVar17" identifier < identifier) )) (compound_statement "{\n    iVar16 = param_1[2];\n    iVar5 = param_1[4];\n    iVar18 = iVar5 + 0x4fffb0;\n    iVar6 = param_1[1];\n    do {\n      if (param_1[5] != 0) {\n        iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);\n        if (iVar19 == 0) {\nLAB_000c2796:\n          param_1[5] = 0;\n        }\n        else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }\n      }\n      local_48 = local_48 + 1;\n    } while (iVar17 != local_48);\n  }" { (expression_statement "iVar16 = param_1[2];" (assignment_expression "iVar16 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "iVar5 = param_1[4];" (assignment_expression "iVar5 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "iVar18 = iVar5 + 0x4fffb0;" (assignment_expression "iVar18 = iVar5 + 0x4fffb0" identifier = (binary_expression "iVar5 + 0x4fffb0" identifier + number_literal)) ;) (expression_statement "iVar6 = param_1[1];" (assignment_expression "iVar6 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (do_statement "do {\n      if (param_1[5] != 0) {\n        iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);\n        if (iVar19 == 0) {\nLAB_000c2796:\n          param_1[5] = 0;\n        }\n        else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }\n      }\n      local_48 = local_48 + 1;\n    } while (iVar17 != local_48);" do (compound_statement "{\n      if (param_1[5] != 0) {\n        iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);\n        if (iVar19 == 0) {\nLAB_000c2796:\n          param_1[5] = 0;\n        }\n        else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }\n      }\n      local_48 = local_48 + 1;\n    }" { (if_statement "if (param_1[5] != 0) {\n        iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);\n        if (iVar19 == 0) {\nLAB_000c2796:\n          param_1[5] = 0;\n        }\n        else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }\n      }" if (parenthesized_expression "(param_1[5] != 0)" ( (binary_expression "param_1[5] != 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);\n        if (iVar19 == 0) {\nLAB_000c2796:\n          param_1[5] = 0;\n        }\n        else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }\n      }" { (expression_statement "iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);" (assignment_expression "iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6)" identifier = (call_expression "GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6)" identifier (argument_list "(iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6)" ( identifier , number_literal , identifier , (pointer_expression "*(undefined4 *)(iVar4 + 0x18)" * (cast_expression "(undefined4 *)(iVar4 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x18)" ( (binary_expression "iVar4 + 0x18" identifier + number_literal) )))) , number_literal , identifier )))) ;) (if_statement "if (iVar19 == 0) {\nLAB_000c2796:\n          param_1[5] = 0;\n        }\n        else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_000c2796:\n          param_1[5] = 0;\n        }" { (labeled_statement "LAB_000c2796:\n          param_1[5] = 0;" statement_identifier : (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;)) }) (else_clause "else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }" else (compound_statement "{\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }" { (expression_statement "iVar7 = *(int *)(iVar4 + 0x18);" (assignment_expression "iVar7 = *(int *)(iVar4 + 0x18)" identifier = (pointer_expression "*(int *)(iVar4 + 0x18)" * (cast_expression "(int *)(iVar4 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x18)" ( (binary_expression "iVar4 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }" if (parenthesized_expression "(0 < iVar7)" ( (binary_expression "0 < iVar7" number_literal < identifier) )) (compound_statement "{\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }" { (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;) (expression_statement "dVar2 = *(double *)(unaff_EBP + 0x230e5a);" (assignment_expression "dVar2 = *(double *)(unaff_EBP + 0x230e5a)" identifier = (pointer_expression "*(double *)(unaff_EBP + 0x230e5a)" * (cast_expression "(double *)(unaff_EBP + 0x230e5a)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x230e5a)" ( (binary_expression "unaff_EBP + 0x230e5a" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = *(int *)(iVar4 + 0x2a8);" (assignment_expression "iVar8 = *(int *)(iVar4 + 0x2a8)" identifier = (pointer_expression "*(int *)(iVar4 + 0x2a8)" * (cast_expression "(int *)(iVar4 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x2a8)" ( (binary_expression "iVar4 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = *(int *)(iVar8 + 8);" (assignment_expression "iVar9 = *(int *)(iVar8 + 8)" identifier = (pointer_expression "*(int *)(iVar8 + 8)" * (cast_expression "(int *)(iVar8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 8)" ( (binary_expression "iVar8 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = *(int *)(iVar8 + 0x20);" (assignment_expression "iVar10 = *(int *)(iVar8 + 0x20)" identifier = (pointer_expression "*(int *)(iVar8 + 0x20)" * (cast_expression "(int *)(iVar8 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x20)" ( (binary_expression "iVar8 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = *(int *)(iVar8 + 0x14);" (assignment_expression "iVar8 = *(int *)(iVar8 + 0x14)" identifier = (pointer_expression "*(int *)(iVar8 + 0x14)" * (cast_expression "(int *)(iVar8 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar11 = *(int *)(iVar4 + 0x298);" (assignment_expression "iVar11 = *(int *)(iVar4 + 0x298)" identifier = (pointer_expression "*(int *)(iVar4 + 0x298)" * (cast_expression "(int *)(iVar4 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x298)" ( (binary_expression "iVar4 + 0x298" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = param_1[3];" (assignment_expression "iVar12 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "pdVar20 = (double *)(iVar19 + iVar8 * 8);" (assignment_expression "pdVar20 = (double *)(iVar19 + iVar8 * 8)" identifier = (cast_expression "(double *)(iVar19 + iVar8 * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + iVar8 * 8)" ( (binary_expression "iVar19 + iVar8 * 8" identifier + (binary_expression "iVar8 * 8" identifier * number_literal)) )))) ;) (do_statement "do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);" do (compound_statement "{\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            }" { (expression_statement "dVar3 = pdVar20[iVar9 - iVar8];" (assignment_expression "dVar3 = pdVar20[iVar9 - iVar8]" identifier = (subscript_expression "pdVar20[iVar9 - iVar8]" identifier [ (binary_expression "iVar9 - iVar8" identifier - identifier) ])) ;) (expression_statement "dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;" (assignment_expression "dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2" identifier = (binary_expression "(double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2" (binary_expression "(double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36)" (binary_expression "(double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8]" (cast_expression "(double)*(float *)(unaff_EBP + 0x230e3a)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(unaff_EBP + 0x230e3a)" * (cast_expression "(float *)(unaff_EBP + 0x230e3a)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x230e3a)" ( (binary_expression "unaff_EBP + 0x230e3a" identifier + number_literal) ))))) * (subscript_expression "pdVar20[iVar10 - iVar8]" identifier [ (binary_expression "iVar10 - iVar8" identifier - identifier) ])) + (binary_expression "dVar3 * (double)*(float *)(unaff_EBP + 0x230e36)" identifier * (cast_expression "(double)*(float *)(unaff_EBP + 0x230e36)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(unaff_EBP + 0x230e36)" * (cast_expression "(float *)(unaff_EBP + 0x230e36)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x230e36)" ( (binary_expression "unaff_EBP + 0x230e36" identifier + number_literal) ))))))) + (binary_expression "*pdVar20 * dVar2" (pointer_expression "*pdVar20" * identifier) * identifier))) ;) (expression_statement "iVar19 = iVar18;" (assignment_expression "iVar19 = iVar18" identifier = identifier) ;) (if_statement "if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }" if (parenthesized_expression "((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3))" ( (binary_expression "(dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)" (parenthesized_expression "(dVar3 < (double)*(float *)(unaff_EBP + 0x21d482))" ( (binary_expression "dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)" identifier < (cast_expression "(double)*(float *)(unaff_EBP + 0x21d482)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(unaff_EBP + 0x21d482)" * (cast_expression "(float *)(unaff_EBP + 0x21d482)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x21d482)" ( (binary_expression "unaff_EBP + 0x21d482" identifier + number_literal) )))))) )) && (parenthesized_expression "(iVar19 = iVar5, 0.0 < dVar3)" ( (comma_expression "iVar19 = iVar5, 0.0 < dVar3" (assignment_expression "iVar19 = iVar5" identifier = identifier) , (binary_expression "0.0 < dVar3" number_literal < identifier)) ))) )) (compound_statement "{\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }" { (expression_statement "local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));" (assignment_expression "local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92))" identifier = (cast_expression "(int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92))" ( (type_descriptor "int" primitive_type) ) (cast_expression "(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92))" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92))" identifier (argument_list "(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92))" ( (binary_expression "dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92)" identifier + (cast_expression "(double)*(float *)(unaff_EBP + 0x21ce92)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(unaff_EBP + 0x21ce92)" * (cast_expression "(float *)(unaff_EBP + 0x21ce92)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x21ce92)" ( (binary_expression "unaff_EBP + 0x21ce92" identifier + number_literal) )))))) )))))) ;) (expression_statement "iVar19 = local_2c * 0x50 + iVar5;" (assignment_expression "iVar19 = local_2c * 0x50 + iVar5" identifier = (binary_expression "local_2c * 0x50 + iVar5" (binary_expression "local_2c * 0x50" identifier * number_literal) + identifier)) ;) })) (expression_statement "pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;" (assignment_expression "pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14" (subscript_expression "pdVar20[iVar9 - iVar8]" identifier [ (binary_expression "iVar9 - iVar8" identifier - identifier) ]) = (binary_expression "(*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14" (binary_expression "(*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48)" (parenthesized_expression "(*(double *)(iVar19 + 0x20) - dVar14)" ( (binary_expression "*(double *)(iVar19 + 0x20) - dVar14" (pointer_expression "*(double *)(iVar19 + 0x20)" * (cast_expression "(double *)(iVar19 + 0x20)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x20)" ( (binary_expression "iVar19 + 0x20" identifier + number_literal) )))) - identifier) )) * (pointer_expression "*(double *)(iVar12 + 0x48)" * (cast_expression "(double *)(iVar12 + 0x48)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x48)" ( (binary_expression "iVar12 + 0x48" identifier + number_literal) ))))) + identifier)) ;) (expression_statement "fVar15 = (float)*pdVar20;" (assignment_expression "fVar15 = (float)*pdVar20" identifier = (cast_expression "(float)*pdVar20" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*pdVar20" * identifier))) ;) (expression_statement "iVar19 = iVar18;" (assignment_expression "iVar19 = iVar18" identifier = identifier) ;) (if_statement "if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }" if (parenthesized_expression "((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15))" ( (binary_expression "(fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)" (parenthesized_expression "(fVar15 < *(float *)(unaff_EBP + 0x21d482))" ( (binary_expression "fVar15 < *(float *)(unaff_EBP + 0x21d482)" identifier < (pointer_expression "*(float *)(unaff_EBP + 0x21d482)" * (cast_expression "(float *)(unaff_EBP + 0x21d482)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x21d482)" ( (binary_expression "unaff_EBP + 0x21d482" identifier + number_literal) ))))) )) && (parenthesized_expression "(iVar19 = iVar5, 0.0 < fVar15)" ( (comma_expression "iVar19 = iVar5, 0.0 < fVar15" (assignment_expression "iVar19 = iVar5" identifier = identifier) , (binary_expression "0.0 < fVar15" number_literal < identifier)) ))) )) (compound_statement "{\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }" { (expression_statement "local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));" (assignment_expression "local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92))" identifier = (cast_expression "(int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92))" ( (type_descriptor "int" primitive_type) ) (cast_expression "(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92))" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92))" identifier (argument_list "(fVar15 + *(float *)(unaff_EBP + 0x21ce92))" ( (binary_expression "fVar15 + *(float *)(unaff_EBP + 0x21ce92)" identifier + (pointer_expression "*(float *)(unaff_EBP + 0x21ce92)" * (cast_expression "(float *)(unaff_EBP + 0x21ce92)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x21ce92)" ( (binary_expression "unaff_EBP + 0x21ce92" identifier + number_literal) ))))) )))))) ;) (expression_statement "iVar19 = local_2c * 0x50 + iVar5;" (assignment_expression "iVar19 = local_2c * 0x50 + iVar5" identifier = (binary_expression "local_2c * 0x50 + iVar5" (binary_expression "local_2c * 0x50" identifier * number_literal) + identifier)) ;) })) (expression_statement "*pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;" (assignment_expression "*pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14" (pointer_expression "*pdVar20" * identifier) = (binary_expression "(*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14" (binary_expression "(*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48)" (parenthesized_expression "(*(double *)(iVar19 + 0x28) - dVar14)" ( (binary_expression "*(double *)(iVar19 + 0x28) - dVar14" (pointer_expression "*(double *)(iVar19 + 0x28)" * (cast_expression "(double *)(iVar19 + 0x28)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x28)" ( (binary_expression "iVar19 + 0x28" identifier + number_literal) )))) - identifier) )) * (pointer_expression "*(double *)(iVar12 + 0x48)" * (cast_expression "(double *)(iVar12 + 0x48)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x48)" ( (binary_expression "iVar12 + 0x48" identifier + number_literal) ))))) + identifier)) ;) (expression_statement "fVar15 = (float)pdVar20[iVar10 - iVar8];" (assignment_expression "fVar15 = (float)pdVar20[iVar10 - iVar8]" identifier = (cast_expression "(float)pdVar20[iVar10 - iVar8]" ( (type_descriptor "float" primitive_type) ) (subscript_expression "pdVar20[iVar10 - iVar8]" identifier [ (binary_expression "iVar10 - iVar8" identifier - identifier) ]))) ;) (expression_statement "iVar19 = iVar18;" (assignment_expression "iVar19 = iVar18" identifier = identifier) ;) (if_statement "if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }" if (parenthesized_expression "((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15))" ( (binary_expression "(fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)" (parenthesized_expression "(fVar15 < *(float *)(unaff_EBP + 0x21d482))" ( (binary_expression "fVar15 < *(float *)(unaff_EBP + 0x21d482)" identifier < (pointer_expression "*(float *)(unaff_EBP + 0x21d482)" * (cast_expression "(float *)(unaff_EBP + 0x21d482)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x21d482)" ( (binary_expression "unaff_EBP + 0x21d482" identifier + number_literal) ))))) )) && (parenthesized_expression "(iVar19 = iVar5, 0.0 < fVar15)" ( (comma_expression "iVar19 = iVar5, 0.0 < fVar15" (assignment_expression "iVar19 = iVar5" identifier = identifier) , (binary_expression "0.0 < fVar15" number_literal < identifier)) ))) )) (compound_statement "{\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }" { (expression_statement "local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));" (assignment_expression "local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92))" identifier = (cast_expression "(int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92))" ( (type_descriptor "int" primitive_type) ) (cast_expression "(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92))" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92))" identifier (argument_list "(fVar15 + *(float *)(unaff_EBP + 0x21ce92))" ( (binary_expression "fVar15 + *(float *)(unaff_EBP + 0x21ce92)" identifier + (pointer_expression "*(float *)(unaff_EBP + 0x21ce92)" * (cast_expression "(float *)(unaff_EBP + 0x21ce92)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x21ce92)" ( (binary_expression "unaff_EBP + 0x21ce92" identifier + number_literal) ))))) )))))) ;) (expression_statement "iVar19 = local_2c * 0x50 + iVar5;" (assignment_expression "iVar19 = local_2c * 0x50 + iVar5" identifier = (binary_expression "local_2c * 0x50 + iVar5" (binary_expression "local_2c * 0x50" identifier * number_literal) + identifier)) ;) })) (expression_statement "local_5c = local_5c + 1;" (assignment_expression "local_5c = local_5c + 1" identifier = (binary_expression "local_5c + 1" identifier + number_literal)) ;) (expression_statement "pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;" (assignment_expression "pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14" (subscript_expression "pdVar20[iVar10 - iVar8]" identifier [ (binary_expression "iVar10 - iVar8" identifier - identifier) ]) = (binary_expression "(*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14" (binary_expression "(*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48)" (parenthesized_expression "(*(double *)(iVar19 + 0x30) - dVar14)" ( (binary_expression "*(double *)(iVar19 + 0x30) - dVar14" (pointer_expression "*(double *)(iVar19 + 0x30)" * (cast_expression "(double *)(iVar19 + 0x30)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x30)" ( (binary_expression "iVar19 + 0x30" identifier + number_literal) )))) - identifier) )) * (pointer_expression "*(double *)(iVar12 + 0x48)" * (cast_expression "(double *)(iVar12 + 0x48)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x48)" ( (binary_expression "iVar12 + 0x48" identifier + number_literal) ))))) + identifier)) ;) (expression_statement "pdVar20 = pdVar20 + iVar11;" (assignment_expression "pdVar20 = pdVar20 + iVar11" identifier = (binary_expression "pdVar20 + iVar11" identifier + identifier)) ;) }) while (parenthesized_expression "(local_5c != iVar7)" ( (binary_expression "local_5c != iVar7" identifier != identifier) )) ;) })) (expression_statement "iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);" (assignment_expression "iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6)" identifier = (call_expression "SyncCacheViewAuthenticPixels(iVar16,iVar6)" identifier (argument_list "(iVar16,iVar6)" ( identifier , identifier )))) ;) (if_statement "if (iVar19 == 0) {\n            param_1[5] = 0;\n          }" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (compound_statement "{\n            param_1[5] = 0;\n          }" { (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;) })) (if_statement "if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }" if (parenthesized_expression "(*(int *)(iVar4 + 0x300) != 0)" ( (binary_expression "*(int *)(iVar4 + 0x300) != 0" (pointer_expression "*(int *)(iVar4 + 0x300)" * (cast_expression "(int *)(iVar4 + 0x300)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x300)" ( (binary_expression "iVar4 + 0x300" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }" { (expression_statement "puVar13 = (uint *)param_1[6];" (assignment_expression "puVar13 = (uint *)param_1[6]" identifier = (cast_expression "(uint *)param_1[6]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[6]" identifier [ number_literal ]))) ;) (expression_statement "uVar21 = *puVar13;" (assignment_expression "uVar21 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "uVar22 = puVar13[1];" (assignment_expression "uVar22 = puVar13[1]" identifier = (subscript_expression "puVar13[1]" identifier [ number_literal ])) ;) (do_statement "do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);" do (compound_statement "{\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "lVar1 = *(longlong *)puVar13;" (assignment_expression "lVar1 = *(longlong *)puVar13" identifier = (pointer_expression "*(longlong *)puVar13" * (cast_expression "(longlong *)puVar13" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "bVar23 = CONCAT44(uVar22,uVar21) == lVar1;" (assignment_expression "bVar23 = CONCAT44(uVar22,uVar21) == lVar1" identifier = (binary_expression "CONCAT44(uVar22,uVar21) == lVar1" (call_expression "CONCAT44(uVar22,uVar21)" identifier (argument_list "(uVar22,uVar21)" ( identifier , identifier ))) == identifier)) ;) (if_statement "if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }" if (parenthesized_expression "(bVar23)" ( identifier )) (compound_statement "{\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }" { (expression_statement "*(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);" (assignment_expression "*(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1)" (pointer_expression "*(longlong *)puVar13" * (cast_expression "(longlong *)puVar13" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (call_expression "CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1)" identifier (argument_list "(uVar22 + (0xfffffffe < uVar21),uVar21 + 1)" ( (binary_expression "uVar22 + (0xfffffffe < uVar21)" identifier + (parenthesized_expression "(0xfffffffe < uVar21)" ( (binary_expression "0xfffffffe < uVar21" number_literal < identifier) ))) , (binary_expression "uVar21 + 1" identifier + number_literal) )))) ;) }) (else_clause "else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }" else (compound_statement "{\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }" { (expression_statement "uVar22 = (uint)((ulonglong)lVar1 >> 0x20);" (assignment_expression "uVar22 = (uint)((ulonglong)lVar1 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar1 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar1 >> 0x20)" ( (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar21 = (uint)lVar1;" (assignment_expression "uVar21 = (uint)lVar1" identifier = (cast_expression "(uint)lVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }) while (parenthesized_expression "(!bVar23)" ( (unary_expression "!bVar23" ! identifier) )) ;) (expression_statement "iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;" (assignment_expression "iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)" identifier = (call_expression "SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)" identifier (argument_list "(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)" ( identifier , (binary_expression "unaff_EBP + 0x23081c" identifier + number_literal) , (pointer_expression "*(undefined4 *)param_1[6]" * (cast_expression "(undefined4 *)param_1[6]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[6]" identifier [ number_literal ]))) , (subscript_expression "((undefined4 *)param_1[6])[1]" (parenthesized_expression "((undefined4 *)param_1[6])" ( (cast_expression "(undefined4 *)param_1[6]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[6]" identifier [ number_literal ])) )) [ number_literal ]) , (pointer_expression "*(undefined4 *)(iVar4 + 0x1c)" * (cast_expression "(undefined4 *)(iVar4 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x1c)" ( (binary_expression "iVar4 + 0x1c" identifier + number_literal) )))) , number_literal )))) ;) (if_statement "if (iVar19 == 0) goto LAB_000c2796;" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000c2796;" goto statement_identifier ;)) })) }))) })) (expression_statement "local_48 = local_48 + 1;" (assignment_expression "local_48 = local_48 + 1" identifier = (binary_expression "local_48 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar17 != local_48)" ( (binary_expression "iVar17 != local_48" identifier != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */\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 ColorDecisionListImage._omp_fn.1(anon_struct_28_7_e94a0b20 *\n   param_0) */\n\nvoid __thiscall ColorDecisionListImage__omp_fn_1(anon_struct_28_7_e94a0b20 *this)\n\n{\n  longlong lVar1;\n  double dVar2;\n  Image *image;\n  CacheView *cache_view;\n  PixelInfo *pPVar3;\n  ExceptionInfo *exception;\n  size_t sVar4;\n  PixelChannelMap *pPVar5;\n  int iVar6;\n  int iVar7;\n  size_t sVar8;\n  ColorCorrection *pCVar9;\n  uint *puVar10;\n  double dVar11;\n  float fVar12;\n  double dVar13;\n  int iVar14;\n  int iVar15;\n  PixelInfo *pPVar16;\n  Quantum *pQVar17;\n  double *pdVar18;\n  MagickBooleanType MVar19;\n  uint uVar20;\n  PixelInfo *pPVar21;\n  uint uVar22;\n  bool bVar23;\n  size_t local_5c;\n  int local_48;\n  int local_2c;\n  \n  image = this->image;\n  local_48 = omp_get_num_threads();\n  iVar14 = omp_get_thread_num();\n  iVar15 = (int)image->rows / local_48;\n  local_48 = (int)image->rows % local_48;\n  if (iVar14 < local_48) {\n    iVar15 = iVar15 + 1;\n    local_48 = 0;\n  }\n  local_48 = iVar14 * iVar15 + local_48;\n  iVar15 = iVar15 + local_48;\n  if (local_48 < iVar15) {\n    cache_view = this->image_view;\n    pPVar3 = this->cdl_map;\n    pPVar16 = pPVar3 + 0xffff;\n    exception = this->exception;\n    do {\n      if (this->status != MagickFalse) {\n        pQVar17 = GetCacheViewAuthenticPixels(cache_view,0,local_48,image->columns,1,exception);\n        dVar13 = DAT_002f3280;\n        if (pQVar17 == (Quantum *)0x0) {\nLAB_000c2796:\n          this->status = MagickFalse;\n        }\n        else {\n          sVar4 = image->columns;\n          if (0 < (int)sVar4) {\n            local_5c = 0;\n            pPVar5 = image->channel_map;\n            iVar14 = pPVar5->offset;\n            iVar6 = pPVar5[2].offset;\n            iVar7 = pPVar5[1].offset;\n            sVar8 = image->number_channels;\n            pCVar9 = this->color_correction;\n            pdVar18 = pQVar17 + iVar7;\n            do {\n              dVar2 = pdVar18[iVar14 - iVar7];\n              dVar11 = (double)DAT_002f3260 * pdVar18[iVar6 - iVar7] +\n                       dVar2 * (double)DAT_002f325c + *pdVar18 * dVar13;\n              pPVar21 = pPVar16;\n              if ((dVar2 < (double)DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < dVar2)) {\n                local_2c = (int)(longlong)ROUND(dVar2 + (double)DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              pdVar18[iVar14 - iVar7] = (pPVar21->red - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)*pdVar18;\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              *pdVar18 = (pPVar21->green - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)pdVar18[iVar6 - iVar7];\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              local_5c = local_5c + 1;\n              pdVar18[iVar6 - iVar7] = (pPVar21->blue - dVar11) * pCVar9->saturation + dVar11;\n              pdVar18 = pdVar18 + sVar8;\n            } while (local_5c != sVar4);\n          }\n          MVar19 = SyncCacheViewAuthenticPixels(cache_view,exception);\n          if (MVar19 == MagickFalse) {\n            this->status = MagickFalse;\n          }\n          if (image->progress_monitor != (MagickProgressMonitor)0x0) {\n            puVar10 = (uint *)this->progress;\n            uVar20 = *puVar10;\n            uVar22 = puVar10[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar10;\n              bVar23 = CONCAT44(uVar22,uVar20) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar10 = CONCAT44(uVar22 + (0xfffffffe < uVar20),uVar20 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar20 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            MVar19 = SetImageProgress(image,"ColorDecisionList/Image",*this->progress,\n                                      (ulonglong)image->rows);\n            if (MVar19 == MagickFalse) goto LAB_000c2796;\n          }\n        }\n      }\n      local_48 = local_48 + 1;\n    } while (iVar15 != local_48);\n  }\n  return;\n}\n\n" comment comment comment comment comment comment comment (function_definition "void __thiscall ColorDecisionListImage__omp_fn_1(anon_struct_28_7_e94a0b20 *this)\n\n{\n  longlong lVar1;\n  double dVar2;\n  Image *image;\n  CacheView *cache_view;\n  PixelInfo *pPVar3;\n  ExceptionInfo *exception;\n  size_t sVar4;\n  PixelChannelMap *pPVar5;\n  int iVar6;\n  int iVar7;\n  size_t sVar8;\n  ColorCorrection *pCVar9;\n  uint *puVar10;\n  double dVar11;\n  float fVar12;\n  double dVar13;\n  int iVar14;\n  int iVar15;\n  PixelInfo *pPVar16;\n  Quantum *pQVar17;\n  double *pdVar18;\n  MagickBooleanType MVar19;\n  uint uVar20;\n  PixelInfo *pPVar21;\n  uint uVar22;\n  bool bVar23;\n  size_t local_5c;\n  int local_48;\n  int local_2c;\n  \n  image = this->image;\n  local_48 = omp_get_num_threads();\n  iVar14 = omp_get_thread_num();\n  iVar15 = (int)image->rows / local_48;\n  local_48 = (int)image->rows % local_48;\n  if (iVar14 < local_48) {\n    iVar15 = iVar15 + 1;\n    local_48 = 0;\n  }\n  local_48 = iVar14 * iVar15 + local_48;\n  iVar15 = iVar15 + local_48;\n  if (local_48 < iVar15) {\n    cache_view = this->image_view;\n    pPVar3 = this->cdl_map;\n    pPVar16 = pPVar3 + 0xffff;\n    exception = this->exception;\n    do {\n      if (this->status != MagickFalse) {\n        pQVar17 = GetCacheViewAuthenticPixels(cache_view,0,local_48,image->columns,1,exception);\n        dVar13 = DAT_002f3280;\n        if (pQVar17 == (Quantum *)0x0) {\nLAB_000c2796:\n          this->status = MagickFalse;\n        }\n        else {\n          sVar4 = image->columns;\n          if (0 < (int)sVar4) {\n            local_5c = 0;\n            pPVar5 = image->channel_map;\n            iVar14 = pPVar5->offset;\n            iVar6 = pPVar5[2].offset;\n            iVar7 = pPVar5[1].offset;\n            sVar8 = image->number_channels;\n            pCVar9 = this->color_correction;\n            pdVar18 = pQVar17 + iVar7;\n            do {\n              dVar2 = pdVar18[iVar14 - iVar7];\n              dVar11 = (double)DAT_002f3260 * pdVar18[iVar6 - iVar7] +\n                       dVar2 * (double)DAT_002f325c + *pdVar18 * dVar13;\n              pPVar21 = pPVar16;\n              if ((dVar2 < (double)DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < dVar2)) {\n                local_2c = (int)(longlong)ROUND(dVar2 + (double)DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              pdVar18[iVar14 - iVar7] = (pPVar21->red - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)*pdVar18;\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              *pdVar18 = (pPVar21->green - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)pdVar18[iVar6 - iVar7];\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              local_5c = local_5c + 1;\n              pdVar18[iVar6 - iVar7] = (pPVar21->blue - dVar11) * pCVar9->saturation + dVar11;\n              pdVar18 = pdVar18 + sVar8;\n            } while (local_5c != sVar4);\n          }\n          MVar19 = SyncCacheViewAuthenticPixels(cache_view,exception);\n          if (MVar19 == MagickFalse) {\n            this->status = MagickFalse;\n          }\n          if (image->progress_monitor != (MagickProgressMonitor)0x0) {\n            puVar10 = (uint *)this->progress;\n            uVar20 = *puVar10;\n            uVar22 = puVar10[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar10;\n              bVar23 = CONCAT44(uVar22,uVar20) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar10 = CONCAT44(uVar22 + (0xfffffffe < uVar20),uVar20 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar20 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            MVar19 = SetImageProgress(image,"ColorDecisionList/Image",*this->progress,\n                                      (ulonglong)image->rows);\n            if (MVar19 == MagickFalse) goto LAB_000c2796;\n          }\n        }\n      }\n      local_48 = local_48 + 1;\n    } while (iVar15 != local_48);\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (function_declarator "ColorDecisionListImage__omp_fn_1(anon_struct_28_7_e94a0b20 *this)" identifier (parameter_list "(anon_struct_28_7_e94a0b20 *this)" ( (parameter_declaration "anon_struct_28_7_e94a0b20 *this" type_identifier (pointer_declarator "*this" * identifier)) ))) (compound_statement "{\n  longlong lVar1;\n  double dVar2;\n  Image *image;\n  CacheView *cache_view;\n  PixelInfo *pPVar3;\n  ExceptionInfo *exception;\n  size_t sVar4;\n  PixelChannelMap *pPVar5;\n  int iVar6;\n  int iVar7;\n  size_t sVar8;\n  ColorCorrection *pCVar9;\n  uint *puVar10;\n  double dVar11;\n  float fVar12;\n  double dVar13;\n  int iVar14;\n  int iVar15;\n  PixelInfo *pPVar16;\n  Quantum *pQVar17;\n  double *pdVar18;\n  MagickBooleanType MVar19;\n  uint uVar20;\n  PixelInfo *pPVar21;\n  uint uVar22;\n  bool bVar23;\n  size_t local_5c;\n  int local_48;\n  int local_2c;\n  \n  image = this->image;\n  local_48 = omp_get_num_threads();\n  iVar14 = omp_get_thread_num();\n  iVar15 = (int)image->rows / local_48;\n  local_48 = (int)image->rows % local_48;\n  if (iVar14 < local_48) {\n    iVar15 = iVar15 + 1;\n    local_48 = 0;\n  }\n  local_48 = iVar14 * iVar15 + local_48;\n  iVar15 = iVar15 + local_48;\n  if (local_48 < iVar15) {\n    cache_view = this->image_view;\n    pPVar3 = this->cdl_map;\n    pPVar16 = pPVar3 + 0xffff;\n    exception = this->exception;\n    do {\n      if (this->status != MagickFalse) {\n        pQVar17 = GetCacheViewAuthenticPixels(cache_view,0,local_48,image->columns,1,exception);\n        dVar13 = DAT_002f3280;\n        if (pQVar17 == (Quantum *)0x0) {\nLAB_000c2796:\n          this->status = MagickFalse;\n        }\n        else {\n          sVar4 = image->columns;\n          if (0 < (int)sVar4) {\n            local_5c = 0;\n            pPVar5 = image->channel_map;\n            iVar14 = pPVar5->offset;\n            iVar6 = pPVar5[2].offset;\n            iVar7 = pPVar5[1].offset;\n            sVar8 = image->number_channels;\n            pCVar9 = this->color_correction;\n            pdVar18 = pQVar17 + iVar7;\n            do {\n              dVar2 = pdVar18[iVar14 - iVar7];\n              dVar11 = (double)DAT_002f3260 * pdVar18[iVar6 - iVar7] +\n                       dVar2 * (double)DAT_002f325c + *pdVar18 * dVar13;\n              pPVar21 = pPVar16;\n              if ((dVar2 < (double)DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < dVar2)) {\n                local_2c = (int)(longlong)ROUND(dVar2 + (double)DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              pdVar18[iVar14 - iVar7] = (pPVar21->red - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)*pdVar18;\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              *pdVar18 = (pPVar21->green - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)pdVar18[iVar6 - iVar7];\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              local_5c = local_5c + 1;\n              pdVar18[iVar6 - iVar7] = (pPVar21->blue - dVar11) * pCVar9->saturation + dVar11;\n              pdVar18 = pdVar18 + sVar8;\n            } while (local_5c != sVar4);\n          }\n          MVar19 = SyncCacheViewAuthenticPixels(cache_view,exception);\n          if (MVar19 == MagickFalse) {\n            this->status = MagickFalse;\n          }\n          if (image->progress_monitor != (MagickProgressMonitor)0x0) {\n            puVar10 = (uint *)this->progress;\n            uVar20 = *puVar10;\n            uVar22 = puVar10[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar10;\n              bVar23 = CONCAT44(uVar22,uVar20) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar10 = CONCAT44(uVar22 + (0xfffffffe < uVar20),uVar20 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar20 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            MVar19 = SetImageProgress(image,"ColorDecisionList/Image",*this->progress,\n                                      (ulonglong)image->rows);\n            if (MVar19 == MagickFalse) goto LAB_000c2796;\n          }\n        }\n      }\n      local_48 = local_48 + 1;\n    } while (iVar15 != local_48);\n  }\n  return;\n}" { (declaration "longlong lVar1;" type_identifier identifier ;) (declaration "double dVar2;" primitive_type identifier ;) (declaration "Image *image;" type_identifier (pointer_declarator "*image" * identifier) ;) (declaration "CacheView *cache_view;" type_identifier (pointer_declarator "*cache_view" * identifier) ;) (declaration "PixelInfo *pPVar3;" type_identifier (pointer_declarator "*pPVar3" * identifier) ;) (declaration "ExceptionInfo *exception;" type_identifier (pointer_declarator "*exception" * identifier) ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "PixelChannelMap *pPVar5;" type_identifier (pointer_declarator "*pPVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "size_t sVar8;" primitive_type identifier ;) (declaration "ColorCorrection *pCVar9;" type_identifier (pointer_declarator "*pCVar9" * identifier) ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "double dVar11;" primitive_type identifier ;) (declaration "float fVar12;" primitive_type identifier ;) (declaration "double dVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "PixelInfo *pPVar16;" type_identifier (pointer_declarator "*pPVar16" * identifier) ;) (declaration "Quantum *pQVar17;" type_identifier (pointer_declarator "*pQVar17" * identifier) ;) (declaration "double *pdVar18;" primitive_type (pointer_declarator "*pdVar18" * identifier) ;) (declaration "MagickBooleanType MVar19;" type_identifier identifier ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "PixelInfo *pPVar21;" type_identifier (pointer_declarator "*pPVar21" * identifier) ;) (declaration "uint uVar22;" type_identifier identifier ;) (declaration "bool bVar23;" primitive_type identifier ;) (declaration "size_t local_5c;" primitive_type identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "image = this->image;" (assignment_expression "image = this->image" identifier = (field_expression "this->image" identifier -> field_identifier)) ;) (expression_statement "local_48 = omp_get_num_threads();" (assignment_expression "local_48 = 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)image->rows / local_48;" (assignment_expression "iVar15 = (int)image->rows / local_48" identifier = (binary_expression "(int)image->rows / local_48" (cast_expression "(int)image->rows" ( (type_descriptor "int" primitive_type) ) (field_expression "image->rows" identifier -> field_identifier)) / identifier)) ;) (expression_statement "local_48 = (int)image->rows % local_48;" (assignment_expression "local_48 = (int)image->rows % local_48" identifier = (binary_expression "(int)image->rows % local_48" (cast_expression "(int)image->rows" ( (type_descriptor "int" primitive_type) ) (field_expression "image->rows" identifier -> field_identifier)) % identifier)) ;) (if_statement "if (iVar14 < local_48) {\n    iVar15 = iVar15 + 1;\n    local_48 = 0;\n  }" if (parenthesized_expression "(iVar14 < local_48)" ( (binary_expression "iVar14 < local_48" identifier < identifier) )) (compound_statement "{\n    iVar15 = iVar15 + 1;\n    local_48 = 0;\n  }" { (expression_statement "iVar15 = iVar15 + 1;" (assignment_expression "iVar15 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) })) (expression_statement "local_48 = iVar14 * iVar15 + local_48;" (assignment_expression "local_48 = iVar14 * iVar15 + local_48" identifier = (binary_expression "iVar14 * iVar15 + local_48" (binary_expression "iVar14 * iVar15" identifier * identifier) + identifier)) ;) (expression_statement "iVar15 = iVar15 + local_48;" (assignment_expression "iVar15 = iVar15 + local_48" identifier = (binary_expression "iVar15 + local_48" identifier + identifier)) ;) (if_statement "if (local_48 < iVar15) {\n    cache_view = this->image_view;\n    pPVar3 = this->cdl_map;\n    pPVar16 = pPVar3 + 0xffff;\n    exception = this->exception;\n    do {\n      if (this->status != MagickFalse) {\n        pQVar17 = GetCacheViewAuthenticPixels(cache_view,0,local_48,image->columns,1,exception);\n        dVar13 = DAT_002f3280;\n        if (pQVar17 == (Quantum *)0x0) {\nLAB_000c2796:\n          this->status = MagickFalse;\n        }\n        else {\n          sVar4 = image->columns;\n          if (0 < (int)sVar4) {\n            local_5c = 0;\n            pPVar5 = image->channel_map;\n            iVar14 = pPVar5->offset;\n            iVar6 = pPVar5[2].offset;\n            iVar7 = pPVar5[1].offset;\n            sVar8 = image->number_channels;\n            pCVar9 = this->color_correction;\n            pdVar18 = pQVar17 + iVar7;\n            do {\n              dVar2 = pdVar18[iVar14 - iVar7];\n              dVar11 = (double)DAT_002f3260 * pdVar18[iVar6 - iVar7] +\n                       dVar2 * (double)DAT_002f325c + *pdVar18 * dVar13;\n              pPVar21 = pPVar16;\n              if ((dVar2 < (double)DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < dVar2)) {\n                local_2c = (int)(longlong)ROUND(dVar2 + (double)DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              pdVar18[iVar14 - iVar7] = (pPVar21->red - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)*pdVar18;\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              *pdVar18 = (pPVar21->green - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)pdVar18[iVar6 - iVar7];\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              local_5c = local_5c + 1;\n              pdVar18[iVar6 - iVar7] = (pPVar21->blue - dVar11) * pCVar9->saturation + dVar11;\n              pdVar18 = pdVar18 + sVar8;\n            } while (local_5c != sVar4);\n          }\n          MVar19 = SyncCacheViewAuthenticPixels(cache_view,exception);\n          if (MVar19 == MagickFalse) {\n            this->status = MagickFalse;\n          }\n          if (image->progress_monitor != (MagickProgressMonitor)0x0) {\n            puVar10 = (uint *)this->progress;\n            uVar20 = *puVar10;\n            uVar22 = puVar10[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar10;\n              bVar23 = CONCAT44(uVar22,uVar20) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar10 = CONCAT44(uVar22 + (0xfffffffe < uVar20),uVar20 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar20 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            MVar19 = SetImageProgress(image,"ColorDecisionList/Image",*this->progress,\n                                      (ulonglong)image->rows);\n            if (MVar19 == MagickFalse) goto LAB_000c2796;\n          }\n        }\n      }\n      local_48 = local_48 + 1;\n    } while (iVar15 != local_48);\n  }" if (parenthesized_expression "(local_48 < iVar15)" ( (binary_expression "local_48 < iVar15" identifier < identifier) )) (compound_statement "{\n    cache_view = this->image_view;\n    pPVar3 = this->cdl_map;\n    pPVar16 = pPVar3 + 0xffff;\n    exception = this->exception;\n    do {\n      if (this->status != MagickFalse) {\n        pQVar17 = GetCacheViewAuthenticPixels(cache_view,0,local_48,image->columns,1,exception);\n        dVar13 = DAT_002f3280;\n        if (pQVar17 == (Quantum *)0x0) {\nLAB_000c2796:\n          this->status = MagickFalse;\n        }\n        else {\n          sVar4 = image->columns;\n          if (0 < (int)sVar4) {\n            local_5c = 0;\n            pPVar5 = image->channel_map;\n            iVar14 = pPVar5->offset;\n            iVar6 = pPVar5[2].offset;\n            iVar7 = pPVar5[1].offset;\n            sVar8 = image->number_channels;\n            pCVar9 = this->color_correction;\n            pdVar18 = pQVar17 + iVar7;\n            do {\n              dVar2 = pdVar18[iVar14 - iVar7];\n              dVar11 = (double)DAT_002f3260 * pdVar18[iVar6 - iVar7] +\n                       dVar2 * (double)DAT_002f325c + *pdVar18 * dVar13;\n              pPVar21 = pPVar16;\n              if ((dVar2 < (double)DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < dVar2)) {\n                local_2c = (int)(longlong)ROUND(dVar2 + (double)DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              pdVar18[iVar14 - iVar7] = (pPVar21->red - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)*pdVar18;\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              *pdVar18 = (pPVar21->green - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)pdVar18[iVar6 - iVar7];\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              local_5c = local_5c + 1;\n              pdVar18[iVar6 - iVar7] = (pPVar21->blue - dVar11) * pCVar9->saturation + dVar11;\n              pdVar18 = pdVar18 + sVar8;\n            } while (local_5c != sVar4);\n          }\n          MVar19 = SyncCacheViewAuthenticPixels(cache_view,exception);\n          if (MVar19 == MagickFalse) {\n            this->status = MagickFalse;\n          }\n          if (image->progress_monitor != (MagickProgressMonitor)0x0) {\n            puVar10 = (uint *)this->progress;\n            uVar20 = *puVar10;\n            uVar22 = puVar10[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar10;\n              bVar23 = CONCAT44(uVar22,uVar20) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar10 = CONCAT44(uVar22 + (0xfffffffe < uVar20),uVar20 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar20 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            MVar19 = SetImageProgress(image,"ColorDecisionList/Image",*this->progress,\n                                      (ulonglong)image->rows);\n            if (MVar19 == MagickFalse) goto LAB_000c2796;\n          }\n        }\n      }\n      local_48 = local_48 + 1;\n    } while (iVar15 != local_48);\n  }" { (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 "pPVar3 = this->cdl_map;" (assignment_expression "pPVar3 = this->cdl_map" identifier = (field_expression "this->cdl_map" identifier -> field_identifier)) ;) (expression_statement "pPVar16 = pPVar3 + 0xffff;" (assignment_expression "pPVar16 = pPVar3 + 0xffff" identifier = (binary_expression "pPVar3 + 0xffff" identifier + number_literal)) ;) (expression_statement "exception = this->exception;" (assignment_expression "exception = this->exception" identifier = (field_expression "this->exception" identifier -> field_identifier)) ;) (do_statement "do {\n      if (this->status != MagickFalse) {\n        pQVar17 = GetCacheViewAuthenticPixels(cache_view,0,local_48,image->columns,1,exception);\n        dVar13 = DAT_002f3280;\n        if (pQVar17 == (Quantum *)0x0) {\nLAB_000c2796:\n          this->status = MagickFalse;\n        }\n        else {\n          sVar4 = image->columns;\n          if (0 < (int)sVar4) {\n            local_5c = 0;\n            pPVar5 = image->channel_map;\n            iVar14 = pPVar5->offset;\n            iVar6 = pPVar5[2].offset;\n            iVar7 = pPVar5[1].offset;\n            sVar8 = image->number_channels;\n            pCVar9 = this->color_correction;\n            pdVar18 = pQVar17 + iVar7;\n            do {\n              dVar2 = pdVar18[iVar14 - iVar7];\n              dVar11 = (double)DAT_002f3260 * pdVar18[iVar6 - iVar7] +\n                       dVar2 * (double)DAT_002f325c + *pdVar18 * dVar13;\n              pPVar21 = pPVar16;\n              if ((dVar2 < (double)DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < dVar2)) {\n                local_2c = (int)(longlong)ROUND(dVar2 + (double)DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              pdVar18[iVar14 - iVar7] = (pPVar21->red - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)*pdVar18;\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              *pdVar18 = (pPVar21->green - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)pdVar18[iVar6 - iVar7];\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              local_5c = local_5c + 1;\n              pdVar18[iVar6 - iVar7] = (pPVar21->blue - dVar11) * pCVar9->saturation + dVar11;\n              pdVar18 = pdVar18 + sVar8;\n            } while (local_5c != sVar4);\n          }\n          MVar19 = SyncCacheViewAuthenticPixels(cache_view,exception);\n          if (MVar19 == MagickFalse) {\n            this->status = MagickFalse;\n          }\n          if (image->progress_monitor != (MagickProgressMonitor)0x0) {\n            puVar10 = (uint *)this->progress;\n            uVar20 = *puVar10;\n            uVar22 = puVar10[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar10;\n              bVar23 = CONCAT44(uVar22,uVar20) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar10 = CONCAT44(uVar22 + (0xfffffffe < uVar20),uVar20 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar20 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            MVar19 = SetImageProgress(image,"ColorDecisionList/Image",*this->progress,\n                                      (ulonglong)image->rows);\n            if (MVar19 == MagickFalse) goto LAB_000c2796;\n          }\n        }\n      }\n      local_48 = local_48 + 1;\n    } while (iVar15 != local_48);" do (compound_statement "{\n      if (this->status != MagickFalse) {\n        pQVar17 = GetCacheViewAuthenticPixels(cache_view,0,local_48,image->columns,1,exception);\n        dVar13 = DAT_002f3280;\n        if (pQVar17 == (Quantum *)0x0) {\nLAB_000c2796:\n          this->status = MagickFalse;\n        }\n        else {\n          sVar4 = image->columns;\n          if (0 < (int)sVar4) {\n            local_5c = 0;\n            pPVar5 = image->channel_map;\n            iVar14 = pPVar5->offset;\n            iVar6 = pPVar5[2].offset;\n            iVar7 = pPVar5[1].offset;\n            sVar8 = image->number_channels;\n            pCVar9 = this->color_correction;\n            pdVar18 = pQVar17 + iVar7;\n            do {\n              dVar2 = pdVar18[iVar14 - iVar7];\n              dVar11 = (double)DAT_002f3260 * pdVar18[iVar6 - iVar7] +\n                       dVar2 * (double)DAT_002f325c + *pdVar18 * dVar13;\n              pPVar21 = pPVar16;\n              if ((dVar2 < (double)DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < dVar2)) {\n                local_2c = (int)(longlong)ROUND(dVar2 + (double)DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              pdVar18[iVar14 - iVar7] = (pPVar21->red - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)*pdVar18;\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              *pdVar18 = (pPVar21->green - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)pdVar18[iVar6 - iVar7];\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              local_5c = local_5c + 1;\n              pdVar18[iVar6 - iVar7] = (pPVar21->blue - dVar11) * pCVar9->saturation + dVar11;\n              pdVar18 = pdVar18 + sVar8;\n            } while (local_5c != sVar4);\n          }\n          MVar19 = SyncCacheViewAuthenticPixels(cache_view,exception);\n          if (MVar19 == MagickFalse) {\n            this->status = MagickFalse;\n          }\n          if (image->progress_monitor != (MagickProgressMonitor)0x0) {\n            puVar10 = (uint *)this->progress;\n            uVar20 = *puVar10;\n            uVar22 = puVar10[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar10;\n              bVar23 = CONCAT44(uVar22,uVar20) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar10 = CONCAT44(uVar22 + (0xfffffffe < uVar20),uVar20 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar20 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            MVar19 = SetImageProgress(image,"ColorDecisionList/Image",*this->progress,\n                                      (ulonglong)image->rows);\n            if (MVar19 == MagickFalse) goto LAB_000c2796;\n          }\n        }\n      }\n      local_48 = local_48 + 1;\n    }" { (if_statement "if (this->status != MagickFalse) {\n        pQVar17 = GetCacheViewAuthenticPixels(cache_view,0,local_48,image->columns,1,exception);\n        dVar13 = DAT_002f3280;\n        if (pQVar17 == (Quantum *)0x0) {\nLAB_000c2796:\n          this->status = MagickFalse;\n        }\n        else {\n          sVar4 = image->columns;\n          if (0 < (int)sVar4) {\n            local_5c = 0;\n            pPVar5 = image->channel_map;\n            iVar14 = pPVar5->offset;\n            iVar6 = pPVar5[2].offset;\n            iVar7 = pPVar5[1].offset;\n            sVar8 = image->number_channels;\n            pCVar9 = this->color_correction;\n            pdVar18 = pQVar17 + iVar7;\n            do {\n              dVar2 = pdVar18[iVar14 - iVar7];\n              dVar11 = (double)DAT_002f3260 * pdVar18[iVar6 - iVar7] +\n                       dVar2 * (double)DAT_002f325c + *pdVar18 * dVar13;\n              pPVar21 = pPVar16;\n              if ((dVar2 < (double)DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < dVar2)) {\n                local_2c = (int)(longlong)ROUND(dVar2 + (double)DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              pdVar18[iVar14 - iVar7] = (pPVar21->red - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)*pdVar18;\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              *pdVar18 = (pPVar21->green - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)pdVar18[iVar6 - iVar7];\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              local_5c = local_5c + 1;\n              pdVar18[iVar6 - iVar7] = (pPVar21->blue - dVar11) * pCVar9->saturation + dVar11;\n              pdVar18 = pdVar18 + sVar8;\n            } while (local_5c != sVar4);\n          }\n          MVar19 = SyncCacheViewAuthenticPixels(cache_view,exception);\n          if (MVar19 == MagickFalse) {\n            this->status = MagickFalse;\n          }\n          if (image->progress_monitor != (MagickProgressMonitor)0x0) {\n            puVar10 = (uint *)this->progress;\n            uVar20 = *puVar10;\n            uVar22 = puVar10[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar10;\n              bVar23 = CONCAT44(uVar22,uVar20) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar10 = CONCAT44(uVar22 + (0xfffffffe < uVar20),uVar20 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar20 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            MVar19 = SetImageProgress(image,"ColorDecisionList/Image",*this->progress,\n                                      (ulonglong)image->rows);\n            if (MVar19 == MagickFalse) goto LAB_000c2796;\n          }\n        }\n      }" if (parenthesized_expression "(this->status != MagickFalse)" ( (binary_expression "this->status != MagickFalse" (field_expression "this->status" identifier -> field_identifier) != identifier) )) (compound_statement "{\n        pQVar17 = GetCacheViewAuthenticPixels(cache_view,0,local_48,image->columns,1,exception);\n        dVar13 = DAT_002f3280;\n        if (pQVar17 == (Quantum *)0x0) {\nLAB_000c2796:\n          this->status = MagickFalse;\n        }\n        else {\n          sVar4 = image->columns;\n          if (0 < (int)sVar4) {\n            local_5c = 0;\n            pPVar5 = image->channel_map;\n            iVar14 = pPVar5->offset;\n            iVar6 = pPVar5[2].offset;\n            iVar7 = pPVar5[1].offset;\n            sVar8 = image->number_channels;\n            pCVar9 = this->color_correction;\n            pdVar18 = pQVar17 + iVar7;\n            do {\n              dVar2 = pdVar18[iVar14 - iVar7];\n              dVar11 = (double)DAT_002f3260 * pdVar18[iVar6 - iVar7] +\n                       dVar2 * (double)DAT_002f325c + *pdVar18 * dVar13;\n              pPVar21 = pPVar16;\n              if ((dVar2 < (double)DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < dVar2)) {\n                local_2c = (int)(longlong)ROUND(dVar2 + (double)DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              pdVar18[iVar14 - iVar7] = (pPVar21->red - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)*pdVar18;\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              *pdVar18 = (pPVar21->green - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)pdVar18[iVar6 - iVar7];\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              local_5c = local_5c + 1;\n              pdVar18[iVar6 - iVar7] = (pPVar21->blue - dVar11) * pCVar9->saturation + dVar11;\n              pdVar18 = pdVar18 + sVar8;\n            } while (local_5c != sVar4);\n          }\n          MVar19 = SyncCacheViewAuthenticPixels(cache_view,exception);\n          if (MVar19 == MagickFalse) {\n            this->status = MagickFalse;\n          }\n          if (image->progress_monitor != (MagickProgressMonitor)0x0) {\n            puVar10 = (uint *)this->progress;\n            uVar20 = *puVar10;\n            uVar22 = puVar10[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar10;\n              bVar23 = CONCAT44(uVar22,uVar20) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar10 = CONCAT44(uVar22 + (0xfffffffe < uVar20),uVar20 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar20 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            MVar19 = SetImageProgress(image,"ColorDecisionList/Image",*this->progress,\n                                      (ulonglong)image->rows);\n            if (MVar19 == MagickFalse) goto LAB_000c2796;\n          }\n        }\n      }" { (expression_statement "pQVar17 = GetCacheViewAuthenticPixels(cache_view,0,local_48,image->columns,1,exception);" (assignment_expression "pQVar17 = GetCacheViewAuthenticPixels(cache_view,0,local_48,image->columns,1,exception)" identifier = (call_expression "GetCacheViewAuthenticPixels(cache_view,0,local_48,image->columns,1,exception)" identifier (argument_list "(cache_view,0,local_48,image->columns,1,exception)" ( identifier , number_literal , identifier , (field_expression "image->columns" identifier -> field_identifier) , number_literal , identifier )))) ;) (expression_statement "dVar13 = DAT_002f3280;" (assignment_expression "dVar13 = DAT_002f3280" identifier = identifier) ;) (if_statement "if (pQVar17 == (Quantum *)0x0) {\nLAB_000c2796:\n          this->status = MagickFalse;\n        }\n        else {\n          sVar4 = image->columns;\n          if (0 < (int)sVar4) {\n            local_5c = 0;\n            pPVar5 = image->channel_map;\n            iVar14 = pPVar5->offset;\n            iVar6 = pPVar5[2].offset;\n            iVar7 = pPVar5[1].offset;\n            sVar8 = image->number_channels;\n            pCVar9 = this->color_correction;\n            pdVar18 = pQVar17 + iVar7;\n            do {\n              dVar2 = pdVar18[iVar14 - iVar7];\n              dVar11 = (double)DAT_002f3260 * pdVar18[iVar6 - iVar7] +\n                       dVar2 * (double)DAT_002f325c + *pdVar18 * dVar13;\n              pPVar21 = pPVar16;\n              if ((dVar2 < (double)DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < dVar2)) {\n                local_2c = (int)(longlong)ROUND(dVar2 + (double)DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              pdVar18[iVar14 - iVar7] = (pPVar21->red - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)*pdVar18;\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              *pdVar18 = (pPVar21->green - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)pdVar18[iVar6 - iVar7];\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              local_5c = local_5c + 1;\n              pdVar18[iVar6 - iVar7] = (pPVar21->blue - dVar11) * pCVar9->saturation + dVar11;\n              pdVar18 = pdVar18 + sVar8;\n            } while (local_5c != sVar4);\n          }\n          MVar19 = SyncCacheViewAuthenticPixels(cache_view,exception);\n          if (MVar19 == MagickFalse) {\n            this->status = MagickFalse;\n          }\n          if (image->progress_monitor != (MagickProgressMonitor)0x0) {\n            puVar10 = (uint *)this->progress;\n            uVar20 = *puVar10;\n            uVar22 = puVar10[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar10;\n              bVar23 = CONCAT44(uVar22,uVar20) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar10 = CONCAT44(uVar22 + (0xfffffffe < uVar20),uVar20 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar20 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            MVar19 = SetImageProgress(image,"ColorDecisionList/Image",*this->progress,\n                                      (ulonglong)image->rows);\n            if (MVar19 == MagickFalse) goto LAB_000c2796;\n          }\n        }" if (parenthesized_expression "(pQVar17 == (Quantum *)0x0)" ( (binary_expression "pQVar17 == (Quantum *)0x0" identifier == (cast_expression "(Quantum *)0x0" ( (type_descriptor "Quantum *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000c2796:\n          this->status = MagickFalse;\n        }" { (labeled_statement "LAB_000c2796:\n          this->status = MagickFalse;" statement_identifier : (expression_statement "this->status = MagickFalse;" (assignment_expression "this->status = MagickFalse" (field_expression "this->status" identifier -> field_identifier) = identifier) ;)) }) (else_clause "else {\n          sVar4 = image->columns;\n          if (0 < (int)sVar4) {\n            local_5c = 0;\n            pPVar5 = image->channel_map;\n            iVar14 = pPVar5->offset;\n            iVar6 = pPVar5[2].offset;\n            iVar7 = pPVar5[1].offset;\n            sVar8 = image->number_channels;\n            pCVar9 = this->color_correction;\n            pdVar18 = pQVar17 + iVar7;\n            do {\n              dVar2 = pdVar18[iVar14 - iVar7];\n              dVar11 = (double)DAT_002f3260 * pdVar18[iVar6 - iVar7] +\n                       dVar2 * (double)DAT_002f325c + *pdVar18 * dVar13;\n              pPVar21 = pPVar16;\n              if ((dVar2 < (double)DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < dVar2)) {\n                local_2c = (int)(longlong)ROUND(dVar2 + (double)DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              pdVar18[iVar14 - iVar7] = (pPVar21->red - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)*pdVar18;\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              *pdVar18 = (pPVar21->green - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)pdVar18[iVar6 - iVar7];\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              local_5c = local_5c + 1;\n              pdVar18[iVar6 - iVar7] = (pPVar21->blue - dVar11) * pCVar9->saturation + dVar11;\n              pdVar18 = pdVar18 + sVar8;\n            } while (local_5c != sVar4);\n          }\n          MVar19 = SyncCacheViewAuthenticPixels(cache_view,exception);\n          if (MVar19 == MagickFalse) {\n            this->status = MagickFalse;\n          }\n          if (image->progress_monitor != (MagickProgressMonitor)0x0) {\n            puVar10 = (uint *)this->progress;\n            uVar20 = *puVar10;\n            uVar22 = puVar10[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar10;\n              bVar23 = CONCAT44(uVar22,uVar20) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar10 = CONCAT44(uVar22 + (0xfffffffe < uVar20),uVar20 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar20 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            MVar19 = SetImageProgress(image,"ColorDecisionList/Image",*this->progress,\n                                      (ulonglong)image->rows);\n            if (MVar19 == MagickFalse) goto LAB_000c2796;\n          }\n        }" else (compound_statement "{\n          sVar4 = image->columns;\n          if (0 < (int)sVar4) {\n            local_5c = 0;\n            pPVar5 = image->channel_map;\n            iVar14 = pPVar5->offset;\n            iVar6 = pPVar5[2].offset;\n            iVar7 = pPVar5[1].offset;\n            sVar8 = image->number_channels;\n            pCVar9 = this->color_correction;\n            pdVar18 = pQVar17 + iVar7;\n            do {\n              dVar2 = pdVar18[iVar14 - iVar7];\n              dVar11 = (double)DAT_002f3260 * pdVar18[iVar6 - iVar7] +\n                       dVar2 * (double)DAT_002f325c + *pdVar18 * dVar13;\n              pPVar21 = pPVar16;\n              if ((dVar2 < (double)DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < dVar2)) {\n                local_2c = (int)(longlong)ROUND(dVar2 + (double)DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              pdVar18[iVar14 - iVar7] = (pPVar21->red - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)*pdVar18;\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              *pdVar18 = (pPVar21->green - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)pdVar18[iVar6 - iVar7];\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              local_5c = local_5c + 1;\n              pdVar18[iVar6 - iVar7] = (pPVar21->blue - dVar11) * pCVar9->saturation + dVar11;\n              pdVar18 = pdVar18 + sVar8;\n            } while (local_5c != sVar4);\n          }\n          MVar19 = SyncCacheViewAuthenticPixels(cache_view,exception);\n          if (MVar19 == MagickFalse) {\n            this->status = MagickFalse;\n          }\n          if (image->progress_monitor != (MagickProgressMonitor)0x0) {\n            puVar10 = (uint *)this->progress;\n            uVar20 = *puVar10;\n            uVar22 = puVar10[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar10;\n              bVar23 = CONCAT44(uVar22,uVar20) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar10 = CONCAT44(uVar22 + (0xfffffffe < uVar20),uVar20 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar20 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            MVar19 = SetImageProgress(image,"ColorDecisionList/Image",*this->progress,\n                                      (ulonglong)image->rows);\n            if (MVar19 == MagickFalse) goto LAB_000c2796;\n          }\n        }" { (expression_statement "sVar4 = image->columns;" (assignment_expression "sVar4 = image->columns" identifier = (field_expression "image->columns" identifier -> field_identifier)) ;) (if_statement "if (0 < (int)sVar4) {\n            local_5c = 0;\n            pPVar5 = image->channel_map;\n            iVar14 = pPVar5->offset;\n            iVar6 = pPVar5[2].offset;\n            iVar7 = pPVar5[1].offset;\n            sVar8 = image->number_channels;\n            pCVar9 = this->color_correction;\n            pdVar18 = pQVar17 + iVar7;\n            do {\n              dVar2 = pdVar18[iVar14 - iVar7];\n              dVar11 = (double)DAT_002f3260 * pdVar18[iVar6 - iVar7] +\n                       dVar2 * (double)DAT_002f325c + *pdVar18 * dVar13;\n              pPVar21 = pPVar16;\n              if ((dVar2 < (double)DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < dVar2)) {\n                local_2c = (int)(longlong)ROUND(dVar2 + (double)DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              pdVar18[iVar14 - iVar7] = (pPVar21->red - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)*pdVar18;\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              *pdVar18 = (pPVar21->green - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)pdVar18[iVar6 - iVar7];\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              local_5c = local_5c + 1;\n              pdVar18[iVar6 - iVar7] = (pPVar21->blue - dVar11) * pCVar9->saturation + dVar11;\n              pdVar18 = pdVar18 + sVar8;\n            } while (local_5c != sVar4);\n          }" if (parenthesized_expression "(0 < (int)sVar4)" ( (binary_expression "0 < (int)sVar4" number_literal < (cast_expression "(int)sVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            local_5c = 0;\n            pPVar5 = image->channel_map;\n            iVar14 = pPVar5->offset;\n            iVar6 = pPVar5[2].offset;\n            iVar7 = pPVar5[1].offset;\n            sVar8 = image->number_channels;\n            pCVar9 = this->color_correction;\n            pdVar18 = pQVar17 + iVar7;\n            do {\n              dVar2 = pdVar18[iVar14 - iVar7];\n              dVar11 = (double)DAT_002f3260 * pdVar18[iVar6 - iVar7] +\n                       dVar2 * (double)DAT_002f325c + *pdVar18 * dVar13;\n              pPVar21 = pPVar16;\n              if ((dVar2 < (double)DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < dVar2)) {\n                local_2c = (int)(longlong)ROUND(dVar2 + (double)DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              pdVar18[iVar14 - iVar7] = (pPVar21->red - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)*pdVar18;\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              *pdVar18 = (pPVar21->green - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)pdVar18[iVar6 - iVar7];\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              local_5c = local_5c + 1;\n              pdVar18[iVar6 - iVar7] = (pPVar21->blue - dVar11) * pCVar9->saturation + dVar11;\n              pdVar18 = pdVar18 + sVar8;\n            } while (local_5c != sVar4);\n          }" { (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;) (expression_statement "pPVar5 = image->channel_map;" (assignment_expression "pPVar5 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "iVar14 = pPVar5->offset;" (assignment_expression "iVar14 = pPVar5->offset" identifier = (field_expression "pPVar5->offset" identifier -> field_identifier)) ;) (expression_statement "iVar6 = pPVar5[2].offset;" (assignment_expression "iVar6 = pPVar5[2].offset" identifier = (field_expression "pPVar5[2].offset" (subscript_expression "pPVar5[2]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "iVar7 = pPVar5[1].offset;" (assignment_expression "iVar7 = pPVar5[1].offset" identifier = (field_expression "pPVar5[1].offset" (subscript_expression "pPVar5[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "sVar8 = image->number_channels;" (assignment_expression "sVar8 = image->number_channels" identifier = (field_expression "image->number_channels" identifier -> field_identifier)) ;) (expression_statement "pCVar9 = this->color_correction;" (assignment_expression "pCVar9 = this->color_correction" identifier = (field_expression "this->color_correction" identifier -> field_identifier)) ;) (expression_statement "pdVar18 = pQVar17 + iVar7;" (assignment_expression "pdVar18 = pQVar17 + iVar7" identifier = (binary_expression "pQVar17 + iVar7" identifier + identifier)) ;) (do_statement "do {\n              dVar2 = pdVar18[iVar14 - iVar7];\n              dVar11 = (double)DAT_002f3260 * pdVar18[iVar6 - iVar7] +\n                       dVar2 * (double)DAT_002f325c + *pdVar18 * dVar13;\n              pPVar21 = pPVar16;\n              if ((dVar2 < (double)DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < dVar2)) {\n                local_2c = (int)(longlong)ROUND(dVar2 + (double)DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              pdVar18[iVar14 - iVar7] = (pPVar21->red - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)*pdVar18;\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              *pdVar18 = (pPVar21->green - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)pdVar18[iVar6 - iVar7];\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              local_5c = local_5c + 1;\n              pdVar18[iVar6 - iVar7] = (pPVar21->blue - dVar11) * pCVar9->saturation + dVar11;\n              pdVar18 = pdVar18 + sVar8;\n            } while (local_5c != sVar4);" do (compound_statement "{\n              dVar2 = pdVar18[iVar14 - iVar7];\n              dVar11 = (double)DAT_002f3260 * pdVar18[iVar6 - iVar7] +\n                       dVar2 * (double)DAT_002f325c + *pdVar18 * dVar13;\n              pPVar21 = pPVar16;\n              if ((dVar2 < (double)DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < dVar2)) {\n                local_2c = (int)(longlong)ROUND(dVar2 + (double)DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              pdVar18[iVar14 - iVar7] = (pPVar21->red - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)*pdVar18;\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              *pdVar18 = (pPVar21->green - dVar11) * pCVar9->saturation + dVar11;\n              fVar12 = (float)pdVar18[iVar6 - iVar7];\n              pPVar21 = pPVar16;\n              if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }\n              local_5c = local_5c + 1;\n              pdVar18[iVar6 - iVar7] = (pPVar21->blue - dVar11) * pCVar9->saturation + dVar11;\n              pdVar18 = pdVar18 + sVar8;\n            }" { (expression_statement "dVar2 = pdVar18[iVar14 - iVar7];" (assignment_expression "dVar2 = pdVar18[iVar14 - iVar7]" identifier = (subscript_expression "pdVar18[iVar14 - iVar7]" identifier [ (binary_expression "iVar14 - iVar7" identifier - identifier) ])) ;) (expression_statement "dVar11 = (double)DAT_002f3260 * pdVar18[iVar6 - iVar7] +\n                       dVar2 * (double)DAT_002f325c + *pdVar18 * dVar13;" (assignment_expression "dVar11 = (double)DAT_002f3260 * pdVar18[iVar6 - iVar7] +\n                       dVar2 * (double)DAT_002f325c + *pdVar18 * dVar13" identifier = (binary_expression "(double)DAT_002f3260 * pdVar18[iVar6 - iVar7] +\n                       dVar2 * (double)DAT_002f325c + *pdVar18 * dVar13" (binary_expression "(double)DAT_002f3260 * pdVar18[iVar6 - iVar7] +\n                       dVar2 * (double)DAT_002f325c" (binary_expression "(double)DAT_002f3260 * pdVar18[iVar6 - iVar7]" (cast_expression "(double)DAT_002f3260" ( (type_descriptor "double" primitive_type) ) identifier) * (subscript_expression "pdVar18[iVar6 - iVar7]" identifier [ (binary_expression "iVar6 - iVar7" identifier - identifier) ])) + (binary_expression "dVar2 * (double)DAT_002f325c" identifier * (cast_expression "(double)DAT_002f325c" ( (type_descriptor "double" primitive_type) ) identifier))) + (binary_expression "*pdVar18 * dVar13" (pointer_expression "*pdVar18" * identifier) * identifier))) ;) (expression_statement "pPVar21 = pPVar16;" (assignment_expression "pPVar21 = pPVar16" identifier = identifier) ;) (if_statement "if ((dVar2 < (double)DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < dVar2)) {\n                local_2c = (int)(longlong)ROUND(dVar2 + (double)DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }" if (parenthesized_expression "((dVar2 < (double)DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < dVar2))" ( (binary_expression "(dVar2 < (double)DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < dVar2)" (parenthesized_expression "(dVar2 < (double)DAT_002df8a8)" ( (binary_expression "dVar2 < (double)DAT_002df8a8" identifier < (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier)) )) && (parenthesized_expression "(pPVar21 = pPVar3, 0.0 < dVar2)" ( (comma_expression "pPVar21 = pPVar3, 0.0 < dVar2" (assignment_expression "pPVar21 = pPVar3" identifier = identifier) , (binary_expression "0.0 < dVar2" number_literal < identifier)) ))) )) (compound_statement "{\n                local_2c = (int)(longlong)ROUND(dVar2 + (double)DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }" { (expression_statement "local_2c = (int)(longlong)ROUND(dVar2 + (double)DAT_002df2b8);" (assignment_expression "local_2c = (int)(longlong)ROUND(dVar2 + (double)DAT_002df2b8)" identifier = (cast_expression "(int)(longlong)ROUND(dVar2 + (double)DAT_002df2b8)" ( (type_descriptor "int" primitive_type) ) (cast_expression "(longlong)ROUND(dVar2 + (double)DAT_002df2b8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar2 + (double)DAT_002df2b8)" identifier (argument_list "(dVar2 + (double)DAT_002df2b8)" ( (binary_expression "dVar2 + (double)DAT_002df2b8" identifier + (cast_expression "(double)DAT_002df2b8" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) (expression_statement "pPVar21 = pPVar3 + local_2c;" (assignment_expression "pPVar21 = pPVar3 + local_2c" identifier = (binary_expression "pPVar3 + local_2c" identifier + identifier)) ;) })) (expression_statement "pdVar18[iVar14 - iVar7] = (pPVar21->red - dVar11) * pCVar9->saturation + dVar11;" (assignment_expression "pdVar18[iVar14 - iVar7] = (pPVar21->red - dVar11) * pCVar9->saturation + dVar11" (subscript_expression "pdVar18[iVar14 - iVar7]" identifier [ (binary_expression "iVar14 - iVar7" identifier - identifier) ]) = (binary_expression "(pPVar21->red - dVar11) * pCVar9->saturation + dVar11" (binary_expression "(pPVar21->red - dVar11) * pCVar9->saturation" (parenthesized_expression "(pPVar21->red - dVar11)" ( (binary_expression "pPVar21->red - dVar11" (field_expression "pPVar21->red" identifier -> field_identifier) - identifier) )) * (field_expression "pCVar9->saturation" identifier -> field_identifier)) + identifier)) ;) (expression_statement "fVar12 = (float)*pdVar18;" (assignment_expression "fVar12 = (float)*pdVar18" identifier = (cast_expression "(float)*pdVar18" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*pdVar18" * identifier))) ;) (expression_statement "pPVar21 = pPVar16;" (assignment_expression "pPVar21 = pPVar16" identifier = identifier) ;) (if_statement "if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }" if (parenthesized_expression "((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12))" ( (binary_expression "(fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)" (parenthesized_expression "(fVar12 < DAT_002df8a8)" ( (binary_expression "fVar12 < DAT_002df8a8" identifier < identifier) )) && (parenthesized_expression "(pPVar21 = pPVar3, 0.0 < fVar12)" ( (comma_expression "pPVar21 = pPVar3, 0.0 < fVar12" (assignment_expression "pPVar21 = pPVar3" identifier = identifier) , (binary_expression "0.0 < fVar12" number_literal < identifier)) ))) )) (compound_statement "{\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }" { (expression_statement "local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);" (assignment_expression "local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8)" identifier = (cast_expression "(int)(longlong)ROUND(fVar12 + DAT_002df2b8)" ( (type_descriptor "int" primitive_type) ) (cast_expression "(longlong)ROUND(fVar12 + DAT_002df2b8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(fVar12 + DAT_002df2b8)" identifier (argument_list "(fVar12 + DAT_002df2b8)" ( (binary_expression "fVar12 + DAT_002df2b8" identifier + identifier) )))))) ;) (expression_statement "pPVar21 = pPVar3 + local_2c;" (assignment_expression "pPVar21 = pPVar3 + local_2c" identifier = (binary_expression "pPVar3 + local_2c" identifier + identifier)) ;) })) (expression_statement "*pdVar18 = (pPVar21->green - dVar11) * pCVar9->saturation + dVar11;" (assignment_expression "*pdVar18 = (pPVar21->green - dVar11) * pCVar9->saturation + dVar11" (pointer_expression "*pdVar18" * identifier) = (binary_expression "(pPVar21->green - dVar11) * pCVar9->saturation + dVar11" (binary_expression "(pPVar21->green - dVar11) * pCVar9->saturation" (parenthesized_expression "(pPVar21->green - dVar11)" ( (binary_expression "pPVar21->green - dVar11" (field_expression "pPVar21->green" identifier -> field_identifier) - identifier) )) * (field_expression "pCVar9->saturation" identifier -> field_identifier)) + identifier)) ;) (expression_statement "fVar12 = (float)pdVar18[iVar6 - iVar7];" (assignment_expression "fVar12 = (float)pdVar18[iVar6 - iVar7]" identifier = (cast_expression "(float)pdVar18[iVar6 - iVar7]" ( (type_descriptor "float" primitive_type) ) (subscript_expression "pdVar18[iVar6 - iVar7]" identifier [ (binary_expression "iVar6 - iVar7" identifier - identifier) ]))) ;) (expression_statement "pPVar21 = pPVar16;" (assignment_expression "pPVar21 = pPVar16" identifier = identifier) ;) (if_statement "if ((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)) {\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }" if (parenthesized_expression "((fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12))" ( (binary_expression "(fVar12 < DAT_002df8a8) && (pPVar21 = pPVar3, 0.0 < fVar12)" (parenthesized_expression "(fVar12 < DAT_002df8a8)" ( (binary_expression "fVar12 < DAT_002df8a8" identifier < identifier) )) && (parenthesized_expression "(pPVar21 = pPVar3, 0.0 < fVar12)" ( (comma_expression "pPVar21 = pPVar3, 0.0 < fVar12" (assignment_expression "pPVar21 = pPVar3" identifier = identifier) , (binary_expression "0.0 < fVar12" number_literal < identifier)) ))) )) (compound_statement "{\n                local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);\n                pPVar21 = pPVar3 + local_2c;\n              }" { (expression_statement "local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8);" (assignment_expression "local_2c = (int)(longlong)ROUND(fVar12 + DAT_002df2b8)" identifier = (cast_expression "(int)(longlong)ROUND(fVar12 + DAT_002df2b8)" ( (type_descriptor "int" primitive_type) ) (cast_expression "(longlong)ROUND(fVar12 + DAT_002df2b8)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(fVar12 + DAT_002df2b8)" identifier (argument_list "(fVar12 + DAT_002df2b8)" ( (binary_expression "fVar12 + DAT_002df2b8" identifier + identifier) )))))) ;) (expression_statement "pPVar21 = pPVar3 + local_2c;" (assignment_expression "pPVar21 = pPVar3 + local_2c" identifier = (binary_expression "pPVar3 + local_2c" identifier + identifier)) ;) })) (expression_statement "local_5c = local_5c + 1;" (assignment_expression "local_5c = local_5c + 1" identifier = (binary_expression "local_5c + 1" identifier + number_literal)) ;) (expression_statement "pdVar18[iVar6 - iVar7] = (pPVar21->blue - dVar11) * pCVar9->saturation + dVar11;" (assignment_expression "pdVar18[iVar6 - iVar7] = (pPVar21->blue - dVar11) * pCVar9->saturation + dVar11" (subscript_expression "pdVar18[iVar6 - iVar7]" identifier [ (binary_expression "iVar6 - iVar7" identifier - identifier) ]) = (binary_expression "(pPVar21->blue - dVar11) * pCVar9->saturation + dVar11" (binary_expression "(pPVar21->blue - dVar11) * pCVar9->saturation" (parenthesized_expression "(pPVar21->blue - dVar11)" ( (binary_expression "pPVar21->blue - dVar11" (field_expression "pPVar21->blue" identifier -> field_identifier) - identifier) )) * (field_expression "pCVar9->saturation" identifier -> field_identifier)) + identifier)) ;) (expression_statement "pdVar18 = pdVar18 + sVar8;" (assignment_expression "pdVar18 = pdVar18 + sVar8" identifier = (binary_expression "pdVar18 + sVar8" identifier + identifier)) ;) }) while (parenthesized_expression "(local_5c != sVar4)" ( (binary_expression "local_5c != sVar4" identifier != identifier) )) ;) })) (expression_statement "MVar19 = SyncCacheViewAuthenticPixels(cache_view,exception);" (assignment_expression "MVar19 = SyncCacheViewAuthenticPixels(cache_view,exception)" identifier = (call_expression "SyncCacheViewAuthenticPixels(cache_view,exception)" identifier (argument_list "(cache_view,exception)" ( identifier , identifier )))) ;) (if_statement "if (MVar19 == MagickFalse) {\n            this->status = MagickFalse;\n          }" if (parenthesized_expression "(MVar19 == MagickFalse)" ( (binary_expression "MVar19 == MagickFalse" identifier == identifier) )) (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) ;) })) (if_statement "if (image->progress_monitor != (MagickProgressMonitor)0x0) {\n            puVar10 = (uint *)this->progress;\n            uVar20 = *puVar10;\n            uVar22 = puVar10[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar10;\n              bVar23 = CONCAT44(uVar22,uVar20) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar10 = CONCAT44(uVar22 + (0xfffffffe < uVar20),uVar20 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar20 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            MVar19 = SetImageProgress(image,"ColorDecisionList/Image",*this->progress,\n                                      (ulonglong)image->rows);\n            if (MVar19 == MagickFalse) goto LAB_000c2796;\n          }" if (parenthesized_expression "(image->progress_monitor != (MagickProgressMonitor)0x0)" ( (binary_expression "image->progress_monitor != (MagickProgressMonitor)0x0" (field_expression "image->progress_monitor" identifier -> field_identifier) != (cast_expression "(MagickProgressMonitor)0x0" ( (type_descriptor "MagickProgressMonitor" type_identifier) ) number_literal)) )) (compound_statement "{\n            puVar10 = (uint *)this->progress;\n            uVar20 = *puVar10;\n            uVar22 = puVar10[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar10;\n              bVar23 = CONCAT44(uVar22,uVar20) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar10 = CONCAT44(uVar22 + (0xfffffffe < uVar20),uVar20 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar20 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            MVar19 = SetImageProgress(image,"ColorDecisionList/Image",*this->progress,\n                                      (ulonglong)image->rows);\n            if (MVar19 == MagickFalse) goto LAB_000c2796;\n          }" { (expression_statement "puVar10 = (uint *)this->progress;" (assignment_expression "puVar10 = (uint *)this->progress" identifier = (cast_expression "(uint *)this->progress" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "this->progress" identifier -> field_identifier))) ;) (expression_statement "uVar20 = *puVar10;" (assignment_expression "uVar20 = *puVar10" identifier = (pointer_expression "*puVar10" * identifier)) ;) (expression_statement "uVar22 = puVar10[1];" (assignment_expression "uVar22 = puVar10[1]" identifier = (subscript_expression "puVar10[1]" identifier [ number_literal ])) ;) (do_statement "do {\n              LOCK();\n              lVar1 = *(longlong *)puVar10;\n              bVar23 = CONCAT44(uVar22,uVar20) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar10 = CONCAT44(uVar22 + (0xfffffffe < uVar20),uVar20 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar20 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);" do (compound_statement "{\n              LOCK();\n              lVar1 = *(longlong *)puVar10;\n              bVar23 = CONCAT44(uVar22,uVar20) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar10 = CONCAT44(uVar22 + (0xfffffffe < uVar20),uVar20 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar20 = (uint)lVar1;\n              }\n              UNLOCK();\n            }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "lVar1 = *(longlong *)puVar10;" (assignment_expression "lVar1 = *(longlong *)puVar10" identifier = (pointer_expression "*(longlong *)puVar10" * (cast_expression "(longlong *)puVar10" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "bVar23 = CONCAT44(uVar22,uVar20) == lVar1;" (assignment_expression "bVar23 = CONCAT44(uVar22,uVar20) == lVar1" identifier = (binary_expression "CONCAT44(uVar22,uVar20) == lVar1" (call_expression "CONCAT44(uVar22,uVar20)" identifier (argument_list "(uVar22,uVar20)" ( identifier , identifier ))) == identifier)) ;) (if_statement "if (bVar23) {\n                *(longlong *)puVar10 = CONCAT44(uVar22 + (0xfffffffe < uVar20),uVar20 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar20 = (uint)lVar1;\n              }" if (parenthesized_expression "(bVar23)" ( identifier )) (compound_statement "{\n                *(longlong *)puVar10 = CONCAT44(uVar22 + (0xfffffffe < uVar20),uVar20 + 1);\n              }" { (expression_statement "*(longlong *)puVar10 = CONCAT44(uVar22 + (0xfffffffe < uVar20),uVar20 + 1);" (assignment_expression "*(longlong *)puVar10 = CONCAT44(uVar22 + (0xfffffffe < uVar20),uVar20 + 1)" (pointer_expression "*(longlong *)puVar10" * (cast_expression "(longlong *)puVar10" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (call_expression "CONCAT44(uVar22 + (0xfffffffe < uVar20),uVar20 + 1)" identifier (argument_list "(uVar22 + (0xfffffffe < uVar20),uVar20 + 1)" ( (binary_expression "uVar22 + (0xfffffffe < uVar20)" identifier + (parenthesized_expression "(0xfffffffe < uVar20)" ( (binary_expression "0xfffffffe < uVar20" number_literal < identifier) ))) , (binary_expression "uVar20 + 1" identifier + number_literal) )))) ;) }) (else_clause "else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar20 = (uint)lVar1;\n              }" else (compound_statement "{\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar20 = (uint)lVar1;\n              }" { (expression_statement "uVar22 = (uint)((ulonglong)lVar1 >> 0x20);" (assignment_expression "uVar22 = (uint)((ulonglong)lVar1 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar1 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar1 >> 0x20)" ( (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar20 = (uint)lVar1;" (assignment_expression "uVar20 = (uint)lVar1" identifier = (cast_expression "(uint)lVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }) while (parenthesized_expression "(!bVar23)" ( (unary_expression "!bVar23" ! identifier) )) ;) (expression_statement "MVar19 = SetImageProgress(image,"ColorDecisionList/Image",*this->progress,\n                                      (ulonglong)image->rows);" (assignment_expression "MVar19 = SetImageProgress(image,"ColorDecisionList/Image",*this->progress,\n                                      (ulonglong)image->rows)" identifier = (call_expression "SetImageProgress(image,"ColorDecisionList/Image",*this->progress,\n                                      (ulonglong)image->rows)" identifier (argument_list "(image,"ColorDecisionList/Image",*this->progress,\n                                      (ulonglong)image->rows)" ( identifier , (string_literal ""ColorDecisionList/Image"" " string_content ") , (pointer_expression "*this->progress" * (field_expression "this->progress" identifier -> field_identifier)) , (cast_expression "(ulonglong)image->rows" ( (type_descriptor "ulonglong" type_identifier) ) (field_expression "image->rows" identifier -> field_identifier)) )))) ;) (if_statement "if (MVar19 == MagickFalse) goto LAB_000c2796;" if (parenthesized_expression "(MVar19 == MagickFalse)" ( (binary_expression "MVar19 == MagickFalse" identifier == identifier) )) (goto_statement "goto LAB_000c2796;" goto statement_identifier ;)) })) }))) })) (expression_statement "local_48 = local_48 + 1;" (assignment_expression "local_48 = local_48 + 1" identifier = (binary_expression "local_48 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar15 != local_48)" ( (binary_expression "iVar15 != local_48" identifier != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_000c2420(int *param_1)\n\n{\n  longlong lVar1;\n  double dVar2;\n  double dVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  uint *puVar13;\n  double dVar14;\n  float fVar15;\n  int iVar16;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  double *pdVar20;\n  uint uVar21;\n  uint uVar22;\n  int unaff_EBP;\n  bool bVar23;\n  int local_5c;\n  int local_48;\n  int local_2c;\n  \n  FUN_00045159();\n  iVar4 = *param_1;\n  local_48 = omp_get_num_threads();\n  iVar16 = omp_get_thread_num();\n  iVar17 = *(int *)(iVar4 + 0x1c) / local_48;\n  local_48 = *(int *)(iVar4 + 0x1c) % local_48;\n  if (iVar16 < local_48) {\n    iVar17 = iVar17 + 1;\n    local_48 = 0;\n  }\n  local_48 = iVar16 * iVar17 + local_48;\n  iVar17 = iVar17 + local_48;\n  if (local_48 < iVar17) {\n    iVar16 = param_1[2];\n    iVar5 = param_1[4];\n    iVar18 = iVar5 + 0x4fffb0;\n    iVar6 = param_1[1];\n    do {\n      if (param_1[5] != 0) {\n        iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);\n        if (iVar19 == 0) {\nLAB_000c2796:\n          param_1[5] = 0;\n        }\n        else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }\n      }\n      local_48 = local_48 + 1;\n    } while (iVar17 != local_48);\n  }\n  return;\n}\n\n" (function_definition "void FUN_000c2420(int *param_1)\n\n{\n  longlong lVar1;\n  double dVar2;\n  double dVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  uint *puVar13;\n  double dVar14;\n  float fVar15;\n  int iVar16;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  double *pdVar20;\n  uint uVar21;\n  uint uVar22;\n  int unaff_EBP;\n  bool bVar23;\n  int local_5c;\n  int local_48;\n  int local_2c;\n  \n  FUN_00045159();\n  iVar4 = *param_1;\n  local_48 = omp_get_num_threads();\n  iVar16 = omp_get_thread_num();\n  iVar17 = *(int *)(iVar4 + 0x1c) / local_48;\n  local_48 = *(int *)(iVar4 + 0x1c) % local_48;\n  if (iVar16 < local_48) {\n    iVar17 = iVar17 + 1;\n    local_48 = 0;\n  }\n  local_48 = iVar16 * iVar17 + local_48;\n  iVar17 = iVar17 + local_48;\n  if (local_48 < iVar17) {\n    iVar16 = param_1[2];\n    iVar5 = param_1[4];\n    iVar18 = iVar5 + 0x4fffb0;\n    iVar6 = param_1[1];\n    do {\n      if (param_1[5] != 0) {\n        iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);\n        if (iVar19 == 0) {\nLAB_000c2796:\n          param_1[5] = 0;\n        }\n        else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }\n      }\n      local_48 = local_48 + 1;\n    } while (iVar17 != local_48);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_000c2420(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  longlong lVar1;\n  double dVar2;\n  double dVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  uint *puVar13;\n  double dVar14;\n  float fVar15;\n  int iVar16;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  double *pdVar20;\n  uint uVar21;\n  uint uVar22;\n  int unaff_EBP;\n  bool bVar23;\n  int local_5c;\n  int local_48;\n  int local_2c;\n  \n  FUN_00045159();\n  iVar4 = *param_1;\n  local_48 = omp_get_num_threads();\n  iVar16 = omp_get_thread_num();\n  iVar17 = *(int *)(iVar4 + 0x1c) / local_48;\n  local_48 = *(int *)(iVar4 + 0x1c) % local_48;\n  if (iVar16 < local_48) {\n    iVar17 = iVar17 + 1;\n    local_48 = 0;\n  }\n  local_48 = iVar16 * iVar17 + local_48;\n  iVar17 = iVar17 + local_48;\n  if (local_48 < iVar17) {\n    iVar16 = param_1[2];\n    iVar5 = param_1[4];\n    iVar18 = iVar5 + 0x4fffb0;\n    iVar6 = param_1[1];\n    do {\n      if (param_1[5] != 0) {\n        iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);\n        if (iVar19 == 0) {\nLAB_000c2796:\n          param_1[5] = 0;\n        }\n        else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }\n      }\n      local_48 = local_48 + 1;\n    } while (iVar17 != local_48);\n  }\n  return;\n}" { (declaration "longlong lVar1;" type_identifier identifier ;) (declaration "double dVar2;" primitive_type identifier ;) (declaration "double dVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type 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 "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "uint *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "double dVar14;" primitive_type identifier ;) (declaration "float fVar15;" primitive_type identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "double *pdVar20;" primitive_type (pointer_declarator "*pdVar20" * identifier) ;) (declaration "uint uVar21;" type_identifier identifier ;) (declaration "uint uVar22;" type_identifier identifier ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "bool bVar23;" primitive_type identifier ;) (declaration "int local_5c;" primitive_type identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "FUN_00045159();" (call_expression "FUN_00045159()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar4 = *param_1;" (assignment_expression "iVar4 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "local_48 = omp_get_num_threads();" (assignment_expression "local_48 = omp_get_num_threads()" identifier = (call_expression "omp_get_num_threads()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar16 = omp_get_thread_num();" (assignment_expression "iVar16 = omp_get_thread_num()" identifier = (call_expression "omp_get_thread_num()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar17 = *(int *)(iVar4 + 0x1c) / local_48;" (assignment_expression "iVar17 = *(int *)(iVar4 + 0x1c) / local_48" identifier = (binary_expression "*(int *)(iVar4 + 0x1c) / local_48" (pointer_expression "*(int *)(iVar4 + 0x1c)" * (cast_expression "(int *)(iVar4 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x1c)" ( (binary_expression "iVar4 + 0x1c" identifier + number_literal) )))) / identifier)) ;) (expression_statement "local_48 = *(int *)(iVar4 + 0x1c) % local_48;" (assignment_expression "local_48 = *(int *)(iVar4 + 0x1c) % local_48" identifier = (binary_expression "*(int *)(iVar4 + 0x1c) % local_48" (pointer_expression "*(int *)(iVar4 + 0x1c)" * (cast_expression "(int *)(iVar4 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x1c)" ( (binary_expression "iVar4 + 0x1c" identifier + number_literal) )))) % identifier)) ;) (if_statement "if (iVar16 < local_48) {\n    iVar17 = iVar17 + 1;\n    local_48 = 0;\n  }" if (parenthesized_expression "(iVar16 < local_48)" ( (binary_expression "iVar16 < local_48" identifier < identifier) )) (compound_statement "{\n    iVar17 = iVar17 + 1;\n    local_48 = 0;\n  }" { (expression_statement "iVar17 = iVar17 + 1;" (assignment_expression "iVar17 = iVar17 + 1" identifier = (binary_expression "iVar17 + 1" identifier + number_literal)) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) })) (expression_statement "local_48 = iVar16 * iVar17 + local_48;" (assignment_expression "local_48 = iVar16 * iVar17 + local_48" identifier = (binary_expression "iVar16 * iVar17 + local_48" (binary_expression "iVar16 * iVar17" identifier * identifier) + identifier)) ;) (expression_statement "iVar17 = iVar17 + local_48;" (assignment_expression "iVar17 = iVar17 + local_48" identifier = (binary_expression "iVar17 + local_48" identifier + identifier)) ;) (if_statement "if (local_48 < iVar17) {\n    iVar16 = param_1[2];\n    iVar5 = param_1[4];\n    iVar18 = iVar5 + 0x4fffb0;\n    iVar6 = param_1[1];\n    do {\n      if (param_1[5] != 0) {\n        iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);\n        if (iVar19 == 0) {\nLAB_000c2796:\n          param_1[5] = 0;\n        }\n        else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }\n      }\n      local_48 = local_48 + 1;\n    } while (iVar17 != local_48);\n  }" if (parenthesized_expression "(local_48 < iVar17)" ( (binary_expression "local_48 < iVar17" identifier < identifier) )) (compound_statement "{\n    iVar16 = param_1[2];\n    iVar5 = param_1[4];\n    iVar18 = iVar5 + 0x4fffb0;\n    iVar6 = param_1[1];\n    do {\n      if (param_1[5] != 0) {\n        iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);\n        if (iVar19 == 0) {\nLAB_000c2796:\n          param_1[5] = 0;\n        }\n        else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }\n      }\n      local_48 = local_48 + 1;\n    } while (iVar17 != local_48);\n  }" { (expression_statement "iVar16 = param_1[2];" (assignment_expression "iVar16 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "iVar5 = param_1[4];" (assignment_expression "iVar5 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "iVar18 = iVar5 + 0x4fffb0;" (assignment_expression "iVar18 = iVar5 + 0x4fffb0" identifier = (binary_expression "iVar5 + 0x4fffb0" identifier + number_literal)) ;) (expression_statement "iVar6 = param_1[1];" (assignment_expression "iVar6 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (do_statement "do {\n      if (param_1[5] != 0) {\n        iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);\n        if (iVar19 == 0) {\nLAB_000c2796:\n          param_1[5] = 0;\n        }\n        else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }\n      }\n      local_48 = local_48 + 1;\n    } while (iVar17 != local_48);" do (compound_statement "{\n      if (param_1[5] != 0) {\n        iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);\n        if (iVar19 == 0) {\nLAB_000c2796:\n          param_1[5] = 0;\n        }\n        else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }\n      }\n      local_48 = local_48 + 1;\n    }" { (if_statement "if (param_1[5] != 0) {\n        iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);\n        if (iVar19 == 0) {\nLAB_000c2796:\n          param_1[5] = 0;\n        }\n        else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }\n      }" if (parenthesized_expression "(param_1[5] != 0)" ( (binary_expression "param_1[5] != 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);\n        if (iVar19 == 0) {\nLAB_000c2796:\n          param_1[5] = 0;\n        }\n        else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }\n      }" { (expression_statement "iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);" (assignment_expression "iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6)" identifier = (call_expression "GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6)" identifier (argument_list "(iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6)" ( identifier , number_literal , identifier , (pointer_expression "*(undefined4 *)(iVar4 + 0x18)" * (cast_expression "(undefined4 *)(iVar4 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x18)" ( (binary_expression "iVar4 + 0x18" identifier + number_literal) )))) , number_literal , identifier )))) ;) (if_statement "if (iVar19 == 0) {\nLAB_000c2796:\n          param_1[5] = 0;\n        }\n        else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_000c2796:\n          param_1[5] = 0;\n        }" { (labeled_statement "LAB_000c2796:\n          param_1[5] = 0;" statement_identifier : (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;)) }) (else_clause "else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }" else (compound_statement "{\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }" { (expression_statement "iVar7 = *(int *)(iVar4 + 0x18);" (assignment_expression "iVar7 = *(int *)(iVar4 + 0x18)" identifier = (pointer_expression "*(int *)(iVar4 + 0x18)" * (cast_expression "(int *)(iVar4 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x18)" ( (binary_expression "iVar4 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }" if (parenthesized_expression "(0 < iVar7)" ( (binary_expression "0 < iVar7" number_literal < identifier) )) (compound_statement "{\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }" { (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;) (expression_statement "dVar2 = *(double *)(unaff_EBP + 0x230e5a);" (assignment_expression "dVar2 = *(double *)(unaff_EBP + 0x230e5a)" identifier = (pointer_expression "*(double *)(unaff_EBP + 0x230e5a)" * (cast_expression "(double *)(unaff_EBP + 0x230e5a)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x230e5a)" ( (binary_expression "unaff_EBP + 0x230e5a" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = *(int *)(iVar4 + 0x2a8);" (assignment_expression "iVar8 = *(int *)(iVar4 + 0x2a8)" identifier = (pointer_expression "*(int *)(iVar4 + 0x2a8)" * (cast_expression "(int *)(iVar4 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x2a8)" ( (binary_expression "iVar4 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = *(int *)(iVar8 + 8);" (assignment_expression "iVar9 = *(int *)(iVar8 + 8)" identifier = (pointer_expression "*(int *)(iVar8 + 8)" * (cast_expression "(int *)(iVar8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 8)" ( (binary_expression "iVar8 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = *(int *)(iVar8 + 0x20);" (assignment_expression "iVar10 = *(int *)(iVar8 + 0x20)" identifier = (pointer_expression "*(int *)(iVar8 + 0x20)" * (cast_expression "(int *)(iVar8 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x20)" ( (binary_expression "iVar8 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = *(int *)(iVar8 + 0x14);" (assignment_expression "iVar8 = *(int *)(iVar8 + 0x14)" identifier = (pointer_expression "*(int *)(iVar8 + 0x14)" * (cast_expression "(int *)(iVar8 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar11 = *(int *)(iVar4 + 0x298);" (assignment_expression "iVar11 = *(int *)(iVar4 + 0x298)" identifier = (pointer_expression "*(int *)(iVar4 + 0x298)" * (cast_expression "(int *)(iVar4 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x298)" ( (binary_expression "iVar4 + 0x298" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = param_1[3];" (assignment_expression "iVar12 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "pdVar20 = (double *)(iVar19 + iVar8 * 8);" (assignment_expression "pdVar20 = (double *)(iVar19 + iVar8 * 8)" identifier = (cast_expression "(double *)(iVar19 + iVar8 * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + iVar8 * 8)" ( (binary_expression "iVar19 + iVar8 * 8" identifier + (binary_expression "iVar8 * 8" identifier * number_literal)) )))) ;) (do_statement "do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);" do (compound_statement "{\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            }" { (expression_statement "dVar3 = pdVar20[iVar9 - iVar8];" (assignment_expression "dVar3 = pdVar20[iVar9 - iVar8]" identifier = (subscript_expression "pdVar20[iVar9 - iVar8]" identifier [ (binary_expression "iVar9 - iVar8" identifier - identifier) ])) ;) (expression_statement "dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;" (assignment_expression "dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2" identifier = (binary_expression "(double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2" (binary_expression "(double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36)" (binary_expression "(double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8]" (cast_expression "(double)*(float *)(unaff_EBP + 0x230e3a)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(unaff_EBP + 0x230e3a)" * (cast_expression "(float *)(unaff_EBP + 0x230e3a)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x230e3a)" ( (binary_expression "unaff_EBP + 0x230e3a" identifier + number_literal) ))))) * (subscript_expression "pdVar20[iVar10 - iVar8]" identifier [ (binary_expression "iVar10 - iVar8" identifier - identifier) ])) + (binary_expression "dVar3 * (double)*(float *)(unaff_EBP + 0x230e36)" identifier * (cast_expression "(double)*(float *)(unaff_EBP + 0x230e36)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(unaff_EBP + 0x230e36)" * (cast_expression "(float *)(unaff_EBP + 0x230e36)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x230e36)" ( (binary_expression "unaff_EBP + 0x230e36" identifier + number_literal) ))))))) + (binary_expression "*pdVar20 * dVar2" (pointer_expression "*pdVar20" * identifier) * identifier))) ;) (expression_statement "iVar19 = iVar18;" (assignment_expression "iVar19 = iVar18" identifier = identifier) ;) (if_statement "if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }" if (parenthesized_expression "((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3))" ( (binary_expression "(dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)" (parenthesized_expression "(dVar3 < (double)*(float *)(unaff_EBP + 0x21d482))" ( (binary_expression "dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)" identifier < (cast_expression "(double)*(float *)(unaff_EBP + 0x21d482)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(unaff_EBP + 0x21d482)" * (cast_expression "(float *)(unaff_EBP + 0x21d482)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x21d482)" ( (binary_expression "unaff_EBP + 0x21d482" identifier + number_literal) )))))) )) && (parenthesized_expression "(iVar19 = iVar5, 0.0 < dVar3)" ( (comma_expression "iVar19 = iVar5, 0.0 < dVar3" (assignment_expression "iVar19 = iVar5" identifier = identifier) , (binary_expression "0.0 < dVar3" number_literal < identifier)) ))) )) (compound_statement "{\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }" { (expression_statement "local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));" (assignment_expression "local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92))" identifier = (cast_expression "(int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92))" ( (type_descriptor "int" primitive_type) ) (cast_expression "(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92))" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92))" identifier (argument_list "(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92))" ( (binary_expression "dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92)" identifier + (cast_expression "(double)*(float *)(unaff_EBP + 0x21ce92)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(unaff_EBP + 0x21ce92)" * (cast_expression "(float *)(unaff_EBP + 0x21ce92)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x21ce92)" ( (binary_expression "unaff_EBP + 0x21ce92" identifier + number_literal) )))))) )))))) ;) (expression_statement "iVar19 = local_2c * 0x50 + iVar5;" (assignment_expression "iVar19 = local_2c * 0x50 + iVar5" identifier = (binary_expression "local_2c * 0x50 + iVar5" (binary_expression "local_2c * 0x50" identifier * number_literal) + identifier)) ;) })) (expression_statement "pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;" (assignment_expression "pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14" (subscript_expression "pdVar20[iVar9 - iVar8]" identifier [ (binary_expression "iVar9 - iVar8" identifier - identifier) ]) = (binary_expression "(*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14" (binary_expression "(*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48)" (parenthesized_expression "(*(double *)(iVar19 + 0x20) - dVar14)" ( (binary_expression "*(double *)(iVar19 + 0x20) - dVar14" (pointer_expression "*(double *)(iVar19 + 0x20)" * (cast_expression "(double *)(iVar19 + 0x20)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x20)" ( (binary_expression "iVar19 + 0x20" identifier + number_literal) )))) - identifier) )) * (pointer_expression "*(double *)(iVar12 + 0x48)" * (cast_expression "(double *)(iVar12 + 0x48)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x48)" ( (binary_expression "iVar12 + 0x48" identifier + number_literal) ))))) + identifier)) ;) (expression_statement "fVar15 = (float)*pdVar20;" (assignment_expression "fVar15 = (float)*pdVar20" identifier = (cast_expression "(float)*pdVar20" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*pdVar20" * identifier))) ;) (expression_statement "iVar19 = iVar18;" (assignment_expression "iVar19 = iVar18" identifier = identifier) ;) (if_statement "if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }" if (parenthesized_expression "((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15))" ( (binary_expression "(fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)" (parenthesized_expression "(fVar15 < *(float *)(unaff_EBP + 0x21d482))" ( (binary_expression "fVar15 < *(float *)(unaff_EBP + 0x21d482)" identifier < (pointer_expression "*(float *)(unaff_EBP + 0x21d482)" * (cast_expression "(float *)(unaff_EBP + 0x21d482)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x21d482)" ( (binary_expression "unaff_EBP + 0x21d482" identifier + number_literal) ))))) )) && (parenthesized_expression "(iVar19 = iVar5, 0.0 < fVar15)" ( (comma_expression "iVar19 = iVar5, 0.0 < fVar15" (assignment_expression "iVar19 = iVar5" identifier = identifier) , (binary_expression "0.0 < fVar15" number_literal < identifier)) ))) )) (compound_statement "{\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }" { (expression_statement "local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));" (assignment_expression "local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92))" identifier = (cast_expression "(int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92))" ( (type_descriptor "int" primitive_type) ) (cast_expression "(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92))" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92))" identifier (argument_list "(fVar15 + *(float *)(unaff_EBP + 0x21ce92))" ( (binary_expression "fVar15 + *(float *)(unaff_EBP + 0x21ce92)" identifier + (pointer_expression "*(float *)(unaff_EBP + 0x21ce92)" * (cast_expression "(float *)(unaff_EBP + 0x21ce92)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x21ce92)" ( (binary_expression "unaff_EBP + 0x21ce92" identifier + number_literal) ))))) )))))) ;) (expression_statement "iVar19 = local_2c * 0x50 + iVar5;" (assignment_expression "iVar19 = local_2c * 0x50 + iVar5" identifier = (binary_expression "local_2c * 0x50 + iVar5" (binary_expression "local_2c * 0x50" identifier * number_literal) + identifier)) ;) })) (expression_statement "*pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;" (assignment_expression "*pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14" (pointer_expression "*pdVar20" * identifier) = (binary_expression "(*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14" (binary_expression "(*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48)" (parenthesized_expression "(*(double *)(iVar19 + 0x28) - dVar14)" ( (binary_expression "*(double *)(iVar19 + 0x28) - dVar14" (pointer_expression "*(double *)(iVar19 + 0x28)" * (cast_expression "(double *)(iVar19 + 0x28)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x28)" ( (binary_expression "iVar19 + 0x28" identifier + number_literal) )))) - identifier) )) * (pointer_expression "*(double *)(iVar12 + 0x48)" * (cast_expression "(double *)(iVar12 + 0x48)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x48)" ( (binary_expression "iVar12 + 0x48" identifier + number_literal) ))))) + identifier)) ;) (expression_statement "fVar15 = (float)pdVar20[iVar10 - iVar8];" (assignment_expression "fVar15 = (float)pdVar20[iVar10 - iVar8]" identifier = (cast_expression "(float)pdVar20[iVar10 - iVar8]" ( (type_descriptor "float" primitive_type) ) (subscript_expression "pdVar20[iVar10 - iVar8]" identifier [ (binary_expression "iVar10 - iVar8" identifier - identifier) ]))) ;) (expression_statement "iVar19 = iVar18;" (assignment_expression "iVar19 = iVar18" identifier = identifier) ;) (if_statement "if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }" if (parenthesized_expression "((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15))" ( (binary_expression "(fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)" (parenthesized_expression "(fVar15 < *(float *)(unaff_EBP + 0x21d482))" ( (binary_expression "fVar15 < *(float *)(unaff_EBP + 0x21d482)" identifier < (pointer_expression "*(float *)(unaff_EBP + 0x21d482)" * (cast_expression "(float *)(unaff_EBP + 0x21d482)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x21d482)" ( (binary_expression "unaff_EBP + 0x21d482" identifier + number_literal) ))))) )) && (parenthesized_expression "(iVar19 = iVar5, 0.0 < fVar15)" ( (comma_expression "iVar19 = iVar5, 0.0 < fVar15" (assignment_expression "iVar19 = iVar5" identifier = identifier) , (binary_expression "0.0 < fVar15" number_literal < identifier)) ))) )) (compound_statement "{\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }" { (expression_statement "local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));" (assignment_expression "local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92))" identifier = (cast_expression "(int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92))" ( (type_descriptor "int" primitive_type) ) (cast_expression "(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92))" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92))" identifier (argument_list "(fVar15 + *(float *)(unaff_EBP + 0x21ce92))" ( (binary_expression "fVar15 + *(float *)(unaff_EBP + 0x21ce92)" identifier + (pointer_expression "*(float *)(unaff_EBP + 0x21ce92)" * (cast_expression "(float *)(unaff_EBP + 0x21ce92)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x21ce92)" ( (binary_expression "unaff_EBP + 0x21ce92" identifier + number_literal) ))))) )))))) ;) (expression_statement "iVar19 = local_2c * 0x50 + iVar5;" (assignment_expression "iVar19 = local_2c * 0x50 + iVar5" identifier = (binary_expression "local_2c * 0x50 + iVar5" (binary_expression "local_2c * 0x50" identifier * number_literal) + identifier)) ;) })) (expression_statement "local_5c = local_5c + 1;" (assignment_expression "local_5c = local_5c + 1" identifier = (binary_expression "local_5c + 1" identifier + number_literal)) ;) (expression_statement "pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;" (assignment_expression "pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14" (subscript_expression "pdVar20[iVar10 - iVar8]" identifier [ (binary_expression "iVar10 - iVar8" identifier - identifier) ]) = (binary_expression "(*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14" (binary_expression "(*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48)" (parenthesized_expression "(*(double *)(iVar19 + 0x30) - dVar14)" ( (binary_expression "*(double *)(iVar19 + 0x30) - dVar14" (pointer_expression "*(double *)(iVar19 + 0x30)" * (cast_expression "(double *)(iVar19 + 0x30)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x30)" ( (binary_expression "iVar19 + 0x30" identifier + number_literal) )))) - identifier) )) * (pointer_expression "*(double *)(iVar12 + 0x48)" * (cast_expression "(double *)(iVar12 + 0x48)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x48)" ( (binary_expression "iVar12 + 0x48" identifier + number_literal) ))))) + identifier)) ;) (expression_statement "pdVar20 = pdVar20 + iVar11;" (assignment_expression "pdVar20 = pdVar20 + iVar11" identifier = (binary_expression "pdVar20 + iVar11" identifier + identifier)) ;) }) while (parenthesized_expression "(local_5c != iVar7)" ( (binary_expression "local_5c != iVar7" identifier != identifier) )) ;) })) (expression_statement "iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);" (assignment_expression "iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6)" identifier = (call_expression "SyncCacheViewAuthenticPixels(iVar16,iVar6)" identifier (argument_list "(iVar16,iVar6)" ( identifier , identifier )))) ;) (if_statement "if (iVar19 == 0) {\n            param_1[5] = 0;\n          }" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (compound_statement "{\n            param_1[5] = 0;\n          }" { (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;) })) (if_statement "if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }" if (parenthesized_expression "(*(int *)(iVar4 + 0x300) != 0)" ( (binary_expression "*(int *)(iVar4 + 0x300) != 0" (pointer_expression "*(int *)(iVar4 + 0x300)" * (cast_expression "(int *)(iVar4 + 0x300)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x300)" ( (binary_expression "iVar4 + 0x300" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }" { (expression_statement "puVar13 = (uint *)param_1[6];" (assignment_expression "puVar13 = (uint *)param_1[6]" identifier = (cast_expression "(uint *)param_1[6]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[6]" identifier [ number_literal ]))) ;) (expression_statement "uVar21 = *puVar13;" (assignment_expression "uVar21 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "uVar22 = puVar13[1];" (assignment_expression "uVar22 = puVar13[1]" identifier = (subscript_expression "puVar13[1]" identifier [ number_literal ])) ;) (do_statement "do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);" do (compound_statement "{\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            }" { (expression_statement "LOCK();" (call_expression "LOCK()" identifier (argument_list "()" ( ))) ;) (expression_statement "lVar1 = *(longlong *)puVar13;" (assignment_expression "lVar1 = *(longlong *)puVar13" identifier = (pointer_expression "*(longlong *)puVar13" * (cast_expression "(longlong *)puVar13" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "bVar23 = CONCAT44(uVar22,uVar21) == lVar1;" (assignment_expression "bVar23 = CONCAT44(uVar22,uVar21) == lVar1" identifier = (binary_expression "CONCAT44(uVar22,uVar21) == lVar1" (call_expression "CONCAT44(uVar22,uVar21)" identifier (argument_list "(uVar22,uVar21)" ( identifier , identifier ))) == identifier)) ;) (if_statement "if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }" if (parenthesized_expression "(bVar23)" ( identifier )) (compound_statement "{\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }" { (expression_statement "*(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);" (assignment_expression "*(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1)" (pointer_expression "*(longlong *)puVar13" * (cast_expression "(longlong *)puVar13" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (call_expression "CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1)" identifier (argument_list "(uVar22 + (0xfffffffe < uVar21),uVar21 + 1)" ( (binary_expression "uVar22 + (0xfffffffe < uVar21)" identifier + (parenthesized_expression "(0xfffffffe < uVar21)" ( (binary_expression "0xfffffffe < uVar21" number_literal < identifier) ))) , (binary_expression "uVar21 + 1" identifier + number_literal) )))) ;) }) (else_clause "else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }" else (compound_statement "{\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }" { (expression_statement "uVar22 = (uint)((ulonglong)lVar1 >> 0x20);" (assignment_expression "uVar22 = (uint)((ulonglong)lVar1 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar1 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar1 >> 0x20)" ( (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar21 = (uint)lVar1;" (assignment_expression "uVar21 = (uint)lVar1" identifier = (cast_expression "(uint)lVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" identifier (argument_list "()" ( ))) ;) }) while (parenthesized_expression "(!bVar23)" ( (unary_expression "!bVar23" ! identifier) )) ;) (expression_statement "iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;" (assignment_expression "iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)" identifier = (call_expression "SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)" identifier (argument_list "(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)" ( identifier , (binary_expression "unaff_EBP + 0x23081c" identifier + number_literal) , (pointer_expression "*(undefined4 *)param_1[6]" * (cast_expression "(undefined4 *)param_1[6]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[6]" identifier [ number_literal ]))) , (subscript_expression "((undefined4 *)param_1[6])[1]" (parenthesized_expression "((undefined4 *)param_1[6])" ( (cast_expression "(undefined4 *)param_1[6]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[6]" identifier [ number_literal ])) )) [ number_literal ]) , (pointer_expression "*(undefined4 *)(iVar4 + 0x1c)" * (cast_expression "(undefined4 *)(iVar4 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x1c)" ( (binary_expression "iVar4 + 0x1c" identifier + number_literal) )))) , number_literal )))) ;) (if_statement "if (iVar19 == 0) goto LAB_000c2796;" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000c2796;" goto statement_identifier ;)) })) }))) })) (expression_statement "local_48 = local_48 + 1;" (assignment_expression "local_48 = local_48 + 1" identifier = (binary_expression "local_48 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar17 != local_48)" ( (binary_expression "iVar17 != local_48" 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 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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (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 (binary_expression IDENT * 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 = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (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 )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;)) }) (else_clause else (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 = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression IDENT - IDENT) ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) * (subscript_expression IDENT [ (binary_expression IDENT - IDENT) ])) + (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) + (binary_expression (pointer_expression * IDENT) * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (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) )))))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression LIT < IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (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 IDENT + LIT) )))))) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + IDENT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT - IDENT) ]) = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT) )) * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression LIT < IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + IDENT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT) )) * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (binary_expression IDENT - IDENT) ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression LIT < IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT - IDENT) ]) = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT) )) * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) == IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (call_expression IDENT (argument_list ( (binary_expression IDENT + (parenthesized_expression ( (binary_expression LIT < IDENT) ))) , (binary_expression IDENT + LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }) while (parenthesized_expression ( (unary_expression ! IDENT) )) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) , (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) )) [ LIT ]) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) }))) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (return_statement return ;) })))
(function_definition "void FUN_000c2420(int *param_1)\n\n{\n  longlong lVar1;\n  double dVar2;\n  double dVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  uint *puVar13;\n  double dVar14;\n  float fVar15;\n  int iVar16;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  double *pdVar20;\n  uint uVar21;\n  uint uVar22;\n  int unaff_EBP;\n  bool bVar23;\n  int local_5c;\n  int local_48;\n  int local_2c;\n  \n  FUN_00045159();\n  iVar4 = *param_1;\n  local_48 = omp_get_num_threads();\n  iVar16 = omp_get_thread_num();\n  iVar17 = *(int *)(iVar4 + 0x1c) / local_48;\n  local_48 = *(int *)(iVar4 + 0x1c) % local_48;\n  if (iVar16 < local_48) {\n    iVar17 = iVar17 + 1;\n    local_48 = 0;\n  }\n  local_48 = iVar16 * iVar17 + local_48;\n  iVar17 = iVar17 + local_48;\n  if (local_48 < iVar17) {\n    iVar16 = param_1[2];\n    iVar5 = param_1[4];\n    iVar18 = iVar5 + 0x4fffb0;\n    iVar6 = param_1[1];\n    do {\n      if (param_1[5] != 0) {\n        iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);\n        if (iVar19 == 0) {\nLAB_000c2796:\n          param_1[5] = 0;\n        }\n        else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }\n      }\n      local_48 = local_48 + 1;\n    } while (iVar17 != local_48);\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_000c2420(int *param_1)" (identifier "FUN_000c2420") (parameter_list "(int *param_1)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  longlong lVar1;\n  double dVar2;\n  double dVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  uint *puVar13;\n  double dVar14;\n  float fVar15;\n  int iVar16;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  double *pdVar20;\n  uint uVar21;\n  uint uVar22;\n  int unaff_EBP;\n  bool bVar23;\n  int local_5c;\n  int local_48;\n  int local_2c;\n  \n  FUN_00045159();\n  iVar4 = *param_1;\n  local_48 = omp_get_num_threads();\n  iVar16 = omp_get_thread_num();\n  iVar17 = *(int *)(iVar4 + 0x1c) / local_48;\n  local_48 = *(int *)(iVar4 + 0x1c) % local_48;\n  if (iVar16 < local_48) {\n    iVar17 = iVar17 + 1;\n    local_48 = 0;\n  }\n  local_48 = iVar16 * iVar17 + local_48;\n  iVar17 = iVar17 + local_48;\n  if (local_48 < iVar17) {\n    iVar16 = param_1[2];\n    iVar5 = param_1[4];\n    iVar18 = iVar5 + 0x4fffb0;\n    iVar6 = param_1[1];\n    do {\n      if (param_1[5] != 0) {\n        iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);\n        if (iVar19 == 0) {\nLAB_000c2796:\n          param_1[5] = 0;\n        }\n        else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }\n      }\n      local_48 = local_48 + 1;\n    } while (iVar17 != local_48);\n  }\n  return;\n}" ({ "{") (declaration "longlong lVar1;" (type_identifier "longlong") (identifier "lVar1") (; ";")) (declaration "double dVar2;" (primitive_type "double") (identifier "dVar2") (; ";")) (declaration "double dVar3;" (primitive_type "double") (identifier "dVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "uint *puVar13;" (type_identifier "uint") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "double dVar14;" (primitive_type "double") (identifier "dVar14") (; ";")) (declaration "float fVar15;" (primitive_type "float") (identifier "fVar15") (; ";")) (declaration "int iVar16;" (primitive_type "int") (identifier "iVar16") (; ";")) (declaration "int iVar17;" (primitive_type "int") (identifier "iVar17") (; ";")) (declaration "int iVar18;" (primitive_type "int") (identifier "iVar18") (; ";")) (declaration "int iVar19;" (primitive_type "int") (identifier "iVar19") (; ";")) (declaration "double *pdVar20;" (primitive_type "double") (pointer_declarator "*pdVar20" (* "*") (identifier "pdVar20")) (; ";")) (declaration "uint uVar21;" (type_identifier "uint") (identifier "uVar21") (; ";")) (declaration "uint uVar22;" (type_identifier "uint") (identifier "uVar22") (; ";")) (declaration "int unaff_EBP;" (primitive_type "int") (identifier "unaff_EBP") (; ";")) (declaration "bool bVar23;" (primitive_type "bool") (identifier "bVar23") (; ";")) (declaration "int local_5c;" (primitive_type "int") (identifier "local_5c") (; ";")) (declaration "int local_48;" (primitive_type "int") (identifier "local_48") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (expression_statement "FUN_00045159();" (call_expression "FUN_00045159()" (identifier "FUN_00045159") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar4 = *param_1;" (assignment_expression "iVar4 = *param_1" (identifier "iVar4") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "local_48 = omp_get_num_threads();" (assignment_expression "local_48 = omp_get_num_threads()" (identifier "local_48") (= "=") (call_expression "omp_get_num_threads()" (identifier "omp_get_num_threads") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar16 = omp_get_thread_num();" (assignment_expression "iVar16 = omp_get_thread_num()" (identifier "iVar16") (= "=") (call_expression "omp_get_thread_num()" (identifier "omp_get_thread_num") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar17 = *(int *)(iVar4 + 0x1c) / local_48;" (assignment_expression "iVar17 = *(int *)(iVar4 + 0x1c) / local_48" (identifier "iVar17") (= "=") (binary_expression "*(int *)(iVar4 + 0x1c) / local_48" (pointer_expression "*(int *)(iVar4 + 0x1c)" (* "*") (cast_expression "(int *)(iVar4 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x1c)" (( "(") (binary_expression "iVar4 + 0x1c" (identifier "iVar4") (+ "+") (number_literal "0x1c")) () ")")))) (/ "/") (identifier "local_48"))) (; ";")) (expression_statement "local_48 = *(int *)(iVar4 + 0x1c) % local_48;" (assignment_expression "local_48 = *(int *)(iVar4 + 0x1c) % local_48" (identifier "local_48") (= "=") (binary_expression "*(int *)(iVar4 + 0x1c) % local_48" (pointer_expression "*(int *)(iVar4 + 0x1c)" (* "*") (cast_expression "(int *)(iVar4 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x1c)" (( "(") (binary_expression "iVar4 + 0x1c" (identifier "iVar4") (+ "+") (number_literal "0x1c")) () ")")))) (% "%") (identifier "local_48"))) (; ";")) (if_statement "if (iVar16 < local_48) {\n    iVar17 = iVar17 + 1;\n    local_48 = 0;\n  }" (if "if") (parenthesized_expression "(iVar16 < local_48)" (( "(") (binary_expression "iVar16 < local_48" (identifier "iVar16") (< "<") (identifier "local_48")) () ")")) (compound_statement "{\n    iVar17 = iVar17 + 1;\n    local_48 = 0;\n  }" ({ "{") (expression_statement "iVar17 = iVar17 + 1;" (assignment_expression "iVar17 = iVar17 + 1" (identifier "iVar17") (= "=") (binary_expression "iVar17 + 1" (identifier "iVar17") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "local_48 = iVar16 * iVar17 + local_48;" (assignment_expression "local_48 = iVar16 * iVar17 + local_48" (identifier "local_48") (= "=") (binary_expression "iVar16 * iVar17 + local_48" (binary_expression "iVar16 * iVar17" (identifier "iVar16") (* "*") (identifier "iVar17")) (+ "+") (identifier "local_48"))) (; ";")) (expression_statement "iVar17 = iVar17 + local_48;" (assignment_expression "iVar17 = iVar17 + local_48" (identifier "iVar17") (= "=") (binary_expression "iVar17 + local_48" (identifier "iVar17") (+ "+") (identifier "local_48"))) (; ";")) (if_statement "if (local_48 < iVar17) {\n    iVar16 = param_1[2];\n    iVar5 = param_1[4];\n    iVar18 = iVar5 + 0x4fffb0;\n    iVar6 = param_1[1];\n    do {\n      if (param_1[5] != 0) {\n        iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);\n        if (iVar19 == 0) {\nLAB_000c2796:\n          param_1[5] = 0;\n        }\n        else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }\n      }\n      local_48 = local_48 + 1;\n    } while (iVar17 != local_48);\n  }" (if "if") (parenthesized_expression "(local_48 < iVar17)" (( "(") (binary_expression "local_48 < iVar17" (identifier "local_48") (< "<") (identifier "iVar17")) () ")")) (compound_statement "{\n    iVar16 = param_1[2];\n    iVar5 = param_1[4];\n    iVar18 = iVar5 + 0x4fffb0;\n    iVar6 = param_1[1];\n    do {\n      if (param_1[5] != 0) {\n        iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);\n        if (iVar19 == 0) {\nLAB_000c2796:\n          param_1[5] = 0;\n        }\n        else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }\n      }\n      local_48 = local_48 + 1;\n    } while (iVar17 != local_48);\n  }" ({ "{") (expression_statement "iVar16 = param_1[2];" (assignment_expression "iVar16 = param_1[2]" (identifier "iVar16") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "iVar5 = param_1[4];" (assignment_expression "iVar5 = param_1[4]" (identifier "iVar5") (= "=") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "iVar18 = iVar5 + 0x4fffb0;" (assignment_expression "iVar18 = iVar5 + 0x4fffb0" (identifier "iVar18") (= "=") (binary_expression "iVar5 + 0x4fffb0" (identifier "iVar5") (+ "+") (number_literal "0x4fffb0"))) (; ";")) (expression_statement "iVar6 = param_1[1];" (assignment_expression "iVar6 = param_1[1]" (identifier "iVar6") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (do_statement "do {\n      if (param_1[5] != 0) {\n        iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);\n        if (iVar19 == 0) {\nLAB_000c2796:\n          param_1[5] = 0;\n        }\n        else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }\n      }\n      local_48 = local_48 + 1;\n    } while (iVar17 != local_48);" (do "do") (compound_statement "{\n      if (param_1[5] != 0) {\n        iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);\n        if (iVar19 == 0) {\nLAB_000c2796:\n          param_1[5] = 0;\n        }\n        else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }\n      }\n      local_48 = local_48 + 1;\n    }" ({ "{") (if_statement "if (param_1[5] != 0) {\n        iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);\n        if (iVar19 == 0) {\nLAB_000c2796:\n          param_1[5] = 0;\n        }\n        else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }\n      }" (if "if") (parenthesized_expression "(param_1[5] != 0)" (( "(") (binary_expression "param_1[5] != 0" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);\n        if (iVar19 == 0) {\nLAB_000c2796:\n          param_1[5] = 0;\n        }\n        else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }\n      }" ({ "{") (expression_statement "iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);" (assignment_expression "iVar19 = GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6)" (identifier "iVar19") (= "=") (call_expression "GetCacheViewAuthenticPixels\n                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6)" (identifier "GetCacheViewAuthenticPixels") (argument_list "(iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6)" (( "(") (identifier "iVar16") (, ",") (number_literal "0") (, ",") (identifier "local_48") (, ",") (pointer_expression "*(undefined4 *)(iVar4 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x18)" (( "(") (binary_expression "iVar4 + 0x18" (identifier "iVar4") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (number_literal "1") (, ",") (identifier "iVar6") () ")")))) (; ";")) (if_statement "if (iVar19 == 0) {\nLAB_000c2796:\n          param_1[5] = 0;\n        }\n        else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }" (if "if") (parenthesized_expression "(iVar19 == 0)" (( "(") (binary_expression "iVar19 == 0" (identifier "iVar19") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000c2796:\n          param_1[5] = 0;\n        }" ({ "{") (labeled_statement "LAB_000c2796:\n          param_1[5] = 0;" (statement_identifier "LAB_000c2796") (: ":") (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";"))) (} "}")) (else_clause "else {\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }" (else "else") (compound_statement "{\n          iVar7 = *(int *)(iVar4 + 0x18);\n          if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }\n          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);\n          if (iVar19 == 0) {\n            param_1[5] = 0;\n          }\n          if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }\n        }" ({ "{") (expression_statement "iVar7 = *(int *)(iVar4 + 0x18);" (assignment_expression "iVar7 = *(int *)(iVar4 + 0x18)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(iVar4 + 0x18)" (* "*") (cast_expression "(int *)(iVar4 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x18)" (( "(") (binary_expression "iVar4 + 0x18" (identifier "iVar4") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (0 < iVar7) {\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }" (if "if") (parenthesized_expression "(0 < iVar7)" (( "(") (binary_expression "0 < iVar7" (number_literal "0") (< "<") (identifier "iVar7")) () ")")) (compound_statement "{\n            local_5c = 0;\n            dVar2 = *(double *)(unaff_EBP + 0x230e5a);\n            iVar8 = *(int *)(iVar4 + 0x2a8);\n            iVar9 = *(int *)(iVar8 + 8);\n            iVar10 = *(int *)(iVar8 + 0x20);\n            iVar8 = *(int *)(iVar8 + 0x14);\n            iVar11 = *(int *)(iVar4 + 0x298);\n            iVar12 = param_1[3];\n            pdVar20 = (double *)(iVar19 + iVar8 * 8);\n            do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);\n          }" ({ "{") (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" (identifier "local_5c") (= "=") (number_literal "0")) (; ";")) (expression_statement "dVar2 = *(double *)(unaff_EBP + 0x230e5a);" (assignment_expression "dVar2 = *(double *)(unaff_EBP + 0x230e5a)" (identifier "dVar2") (= "=") (pointer_expression "*(double *)(unaff_EBP + 0x230e5a)" (* "*") (cast_expression "(double *)(unaff_EBP + 0x230e5a)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0x230e5a)" (( "(") (binary_expression "unaff_EBP + 0x230e5a" (identifier "unaff_EBP") (+ "+") (number_literal "0x230e5a")) () ")"))))) (; ";")) (expression_statement "iVar8 = *(int *)(iVar4 + 0x2a8);" (assignment_expression "iVar8 = *(int *)(iVar4 + 0x2a8)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(iVar4 + 0x2a8)" (* "*") (cast_expression "(int *)(iVar4 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x2a8)" (( "(") (binary_expression "iVar4 + 0x2a8" (identifier "iVar4") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";")) (expression_statement "iVar9 = *(int *)(iVar8 + 8);" (assignment_expression "iVar9 = *(int *)(iVar8 + 8)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(iVar8 + 8)" (* "*") (cast_expression "(int *)(iVar8 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 8)" (( "(") (binary_expression "iVar8 + 8" (identifier "iVar8") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "iVar10 = *(int *)(iVar8 + 0x20);" (assignment_expression "iVar10 = *(int *)(iVar8 + 0x20)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(iVar8 + 0x20)" (* "*") (cast_expression "(int *)(iVar8 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x20)" (( "(") (binary_expression "iVar8 + 0x20" (identifier "iVar8") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "iVar8 = *(int *)(iVar8 + 0x14);" (assignment_expression "iVar8 = *(int *)(iVar8 + 0x14)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(iVar8 + 0x14)" (* "*") (cast_expression "(int *)(iVar8 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x14)" (( "(") (binary_expression "iVar8 + 0x14" (identifier "iVar8") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "iVar11 = *(int *)(iVar4 + 0x298);" (assignment_expression "iVar11 = *(int *)(iVar4 + 0x298)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(iVar4 + 0x298)" (* "*") (cast_expression "(int *)(iVar4 + 0x298)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x298)" (( "(") (binary_expression "iVar4 + 0x298" (identifier "iVar4") (+ "+") (number_literal "0x298")) () ")"))))) (; ";")) (expression_statement "iVar12 = param_1[3];" (assignment_expression "iVar12 = param_1[3]" (identifier "iVar12") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "pdVar20 = (double *)(iVar19 + iVar8 * 8);" (assignment_expression "pdVar20 = (double *)(iVar19 + iVar8 * 8)" (identifier "pdVar20") (= "=") (cast_expression "(double *)(iVar19 + iVar8 * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + iVar8 * 8)" (( "(") (binary_expression "iVar19 + iVar8 * 8" (identifier "iVar19") (+ "+") (binary_expression "iVar8 * 8" (identifier "iVar8") (* "*") (number_literal "8"))) () ")")))) (; ";")) (do_statement "do {\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            } while (local_5c != iVar7);" (do "do") (compound_statement "{\n              dVar3 = pdVar20[iVar9 - iVar8];\n              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;\n              iVar19 = iVar18;\n              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              fVar15 = (float)*pdVar20;\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;\n              fVar15 = (float)pdVar20[iVar10 - iVar8];\n              iVar19 = iVar18;\n              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }\n              local_5c = local_5c + 1;\n              pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;\n              pdVar20 = pdVar20 + iVar11;\n            }" ({ "{") (expression_statement "dVar3 = pdVar20[iVar9 - iVar8];" (assignment_expression "dVar3 = pdVar20[iVar9 - iVar8]" (identifier "dVar3") (= "=") (subscript_expression "pdVar20[iVar9 - iVar8]" (identifier "pdVar20") ([ "[") (binary_expression "iVar9 - iVar8" (identifier "iVar9") (- "-") (identifier "iVar8")) (] "]"))) (; ";")) (expression_statement "dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;" (assignment_expression "dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2" (identifier "dVar14") (= "=") (binary_expression "(double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2" (binary_expression "(double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +\n                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36)" (binary_expression "(double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8]" (cast_expression "(double)*(float *)(unaff_EBP + 0x230e3a)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(unaff_EBP + 0x230e3a)" (* "*") (cast_expression "(float *)(unaff_EBP + 0x230e3a)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0x230e3a)" (( "(") (binary_expression "unaff_EBP + 0x230e3a" (identifier "unaff_EBP") (+ "+") (number_literal "0x230e3a")) () ")"))))) (* "*") (subscript_expression "pdVar20[iVar10 - iVar8]" (identifier "pdVar20") ([ "[") (binary_expression "iVar10 - iVar8" (identifier "iVar10") (- "-") (identifier "iVar8")) (] "]"))) (+ "+") (binary_expression "dVar3 * (double)*(float *)(unaff_EBP + 0x230e36)" (identifier "dVar3") (* "*") (cast_expression "(double)*(float *)(unaff_EBP + 0x230e36)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(unaff_EBP + 0x230e36)" (* "*") (cast_expression "(float *)(unaff_EBP + 0x230e36)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0x230e36)" (( "(") (binary_expression "unaff_EBP + 0x230e36" (identifier "unaff_EBP") (+ "+") (number_literal "0x230e36")) () ")"))))))) (+ "+") (binary_expression "*pdVar20 * dVar2" (pointer_expression "*pdVar20" (* "*") (identifier "pdVar20")) (* "*") (identifier "dVar2")))) (; ";")) (expression_statement "iVar19 = iVar18;" (assignment_expression "iVar19 = iVar18" (identifier "iVar19") (= "=") (identifier "iVar18")) (; ";")) (if_statement "if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)) {\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }" (if "if") (parenthesized_expression "((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3))" (( "(") (binary_expression "(dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&\n                 (iVar19 = iVar5, 0.0 < dVar3)" (parenthesized_expression "(dVar3 < (double)*(float *)(unaff_EBP + 0x21d482))" (( "(") (binary_expression "dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)" (identifier "dVar3") (< "<") (cast_expression "(double)*(float *)(unaff_EBP + 0x21d482)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(unaff_EBP + 0x21d482)" (* "*") (cast_expression "(float *)(unaff_EBP + 0x21d482)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0x21d482)" (( "(") (binary_expression "unaff_EBP + 0x21d482" (identifier "unaff_EBP") (+ "+") (number_literal "0x21d482")) () ")")))))) () ")")) (&& "&&") (parenthesized_expression "(iVar19 = iVar5, 0.0 < dVar3)" (( "(") (comma_expression "iVar19 = iVar5, 0.0 < dVar3" (assignment_expression "iVar19 = iVar5" (identifier "iVar19") (= "=") (identifier "iVar5")) (, ",") (binary_expression "0.0 < dVar3" (number_literal "0.0") (< "<") (identifier "dVar3"))) () ")"))) () ")")) (compound_statement "{\n                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }" ({ "{") (expression_statement "local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));" (assignment_expression "local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92))" (identifier "local_2c") (= "=") (cast_expression "(int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92))" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92))" (identifier "ROUND") (argument_list "(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92))" (( "(") (binary_expression "dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92)" (identifier "dVar3") (+ "+") (cast_expression "(double)*(float *)(unaff_EBP + 0x21ce92)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(unaff_EBP + 0x21ce92)" (* "*") (cast_expression "(float *)(unaff_EBP + 0x21ce92)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0x21ce92)" (( "(") (binary_expression "unaff_EBP + 0x21ce92" (identifier "unaff_EBP") (+ "+") (number_literal "0x21ce92")) () ")")))))) () ")")))))) (; ";")) (expression_statement "iVar19 = local_2c * 0x50 + iVar5;" (assignment_expression "iVar19 = local_2c * 0x50 + iVar5" (identifier "iVar19") (= "=") (binary_expression "local_2c * 0x50 + iVar5" (binary_expression "local_2c * 0x50" (identifier "local_2c") (* "*") (number_literal "0x50")) (+ "+") (identifier "iVar5"))) (; ";")) (} "}"))) (expression_statement "pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;" (assignment_expression "pdVar20[iVar9 - iVar8] =\n                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14" (subscript_expression "pdVar20[iVar9 - iVar8]" (identifier "pdVar20") ([ "[") (binary_expression "iVar9 - iVar8" (identifier "iVar9") (- "-") (identifier "iVar8")) (] "]")) (= "=") (binary_expression "(*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14" (binary_expression "(*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48)" (parenthesized_expression "(*(double *)(iVar19 + 0x20) - dVar14)" (( "(") (binary_expression "*(double *)(iVar19 + 0x20) - dVar14" (pointer_expression "*(double *)(iVar19 + 0x20)" (* "*") (cast_expression "(double *)(iVar19 + 0x20)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 0x20)" (( "(") (binary_expression "iVar19 + 0x20" (identifier "iVar19") (+ "+") (number_literal "0x20")) () ")")))) (- "-") (identifier "dVar14")) () ")")) (* "*") (pointer_expression "*(double *)(iVar12 + 0x48)" (* "*") (cast_expression "(double *)(iVar12 + 0x48)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x48)" (( "(") (binary_expression "iVar12 + 0x48" (identifier "iVar12") (+ "+") (number_literal "0x48")) () ")"))))) (+ "+") (identifier "dVar14"))) (; ";")) (expression_statement "fVar15 = (float)*pdVar20;" (assignment_expression "fVar15 = (float)*pdVar20" (identifier "fVar15") (= "=") (cast_expression "(float)*pdVar20" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*pdVar20" (* "*") (identifier "pdVar20")))) (; ";")) (expression_statement "iVar19 = iVar18;" (assignment_expression "iVar19 = iVar18" (identifier "iVar19") (= "=") (identifier "iVar18")) (; ";")) (if_statement "if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }" (if "if") (parenthesized_expression "((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15))" (( "(") (binary_expression "(fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)" (parenthesized_expression "(fVar15 < *(float *)(unaff_EBP + 0x21d482))" (( "(") (binary_expression "fVar15 < *(float *)(unaff_EBP + 0x21d482)" (identifier "fVar15") (< "<") (pointer_expression "*(float *)(unaff_EBP + 0x21d482)" (* "*") (cast_expression "(float *)(unaff_EBP + 0x21d482)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0x21d482)" (( "(") (binary_expression "unaff_EBP + 0x21d482" (identifier "unaff_EBP") (+ "+") (number_literal "0x21d482")) () ")"))))) () ")")) (&& "&&") (parenthesized_expression "(iVar19 = iVar5, 0.0 < fVar15)" (( "(") (comma_expression "iVar19 = iVar5, 0.0 < fVar15" (assignment_expression "iVar19 = iVar5" (identifier "iVar19") (= "=") (identifier "iVar5")) (, ",") (binary_expression "0.0 < fVar15" (number_literal "0.0") (< "<") (identifier "fVar15"))) () ")"))) () ")")) (compound_statement "{\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }" ({ "{") (expression_statement "local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));" (assignment_expression "local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92))" (identifier "local_2c") (= "=") (cast_expression "(int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92))" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92))" (identifier "ROUND") (argument_list "(fVar15 + *(float *)(unaff_EBP + 0x21ce92))" (( "(") (binary_expression "fVar15 + *(float *)(unaff_EBP + 0x21ce92)" (identifier "fVar15") (+ "+") (pointer_expression "*(float *)(unaff_EBP + 0x21ce92)" (* "*") (cast_expression "(float *)(unaff_EBP + 0x21ce92)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0x21ce92)" (( "(") (binary_expression "unaff_EBP + 0x21ce92" (identifier "unaff_EBP") (+ "+") (number_literal "0x21ce92")) () ")"))))) () ")")))))) (; ";")) (expression_statement "iVar19 = local_2c * 0x50 + iVar5;" (assignment_expression "iVar19 = local_2c * 0x50 + iVar5" (identifier "iVar19") (= "=") (binary_expression "local_2c * 0x50 + iVar5" (binary_expression "local_2c * 0x50" (identifier "local_2c") (* "*") (number_literal "0x50")) (+ "+") (identifier "iVar5"))) (; ";")) (} "}"))) (expression_statement "*pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14\n              ;" (assignment_expression "*pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14" (pointer_expression "*pdVar20" (* "*") (identifier "pdVar20")) (= "=") (binary_expression "(*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14" (binary_expression "(*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48)" (parenthesized_expression "(*(double *)(iVar19 + 0x28) - dVar14)" (( "(") (binary_expression "*(double *)(iVar19 + 0x28) - dVar14" (pointer_expression "*(double *)(iVar19 + 0x28)" (* "*") (cast_expression "(double *)(iVar19 + 0x28)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 0x28)" (( "(") (binary_expression "iVar19 + 0x28" (identifier "iVar19") (+ "+") (number_literal "0x28")) () ")")))) (- "-") (identifier "dVar14")) () ")")) (* "*") (pointer_expression "*(double *)(iVar12 + 0x48)" (* "*") (cast_expression "(double *)(iVar12 + 0x48)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x48)" (( "(") (binary_expression "iVar12 + 0x48" (identifier "iVar12") (+ "+") (number_literal "0x48")) () ")"))))) (+ "+") (identifier "dVar14"))) (; ";")) (expression_statement "fVar15 = (float)pdVar20[iVar10 - iVar8];" (assignment_expression "fVar15 = (float)pdVar20[iVar10 - iVar8]" (identifier "fVar15") (= "=") (cast_expression "(float)pdVar20[iVar10 - iVar8]" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (subscript_expression "pdVar20[iVar10 - iVar8]" (identifier "pdVar20") ([ "[") (binary_expression "iVar10 - iVar8" (identifier "iVar10") (- "-") (identifier "iVar8")) (] "]")))) (; ";")) (expression_statement "iVar19 = iVar18;" (assignment_expression "iVar19 = iVar18" (identifier "iVar19") (= "=") (identifier "iVar18")) (; ";")) (if_statement "if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }" (if "if") (parenthesized_expression "((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15))" (( "(") (binary_expression "(fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)" (parenthesized_expression "(fVar15 < *(float *)(unaff_EBP + 0x21d482))" (( "(") (binary_expression "fVar15 < *(float *)(unaff_EBP + 0x21d482)" (identifier "fVar15") (< "<") (pointer_expression "*(float *)(unaff_EBP + 0x21d482)" (* "*") (cast_expression "(float *)(unaff_EBP + 0x21d482)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0x21d482)" (( "(") (binary_expression "unaff_EBP + 0x21d482" (identifier "unaff_EBP") (+ "+") (number_literal "0x21d482")) () ")"))))) () ")")) (&& "&&") (parenthesized_expression "(iVar19 = iVar5, 0.0 < fVar15)" (( "(") (comma_expression "iVar19 = iVar5, 0.0 < fVar15" (assignment_expression "iVar19 = iVar5" (identifier "iVar19") (= "=") (identifier "iVar5")) (, ",") (binary_expression "0.0 < fVar15" (number_literal "0.0") (< "<") (identifier "fVar15"))) () ")"))) () ")")) (compound_statement "{\n                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));\n                iVar19 = local_2c * 0x50 + iVar5;\n              }" ({ "{") (expression_statement "local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));" (assignment_expression "local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92))" (identifier "local_2c") (= "=") (cast_expression "(int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92))" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92))" (identifier "ROUND") (argument_list "(fVar15 + *(float *)(unaff_EBP + 0x21ce92))" (( "(") (binary_expression "fVar15 + *(float *)(unaff_EBP + 0x21ce92)" (identifier "fVar15") (+ "+") (pointer_expression "*(float *)(unaff_EBP + 0x21ce92)" (* "*") (cast_expression "(float *)(unaff_EBP + 0x21ce92)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0x21ce92)" (( "(") (binary_expression "unaff_EBP + 0x21ce92" (identifier "unaff_EBP") (+ "+") (number_literal "0x21ce92")) () ")"))))) () ")")))))) (; ";")) (expression_statement "iVar19 = local_2c * 0x50 + iVar5;" (assignment_expression "iVar19 = local_2c * 0x50 + iVar5" (identifier "iVar19") (= "=") (binary_expression "local_2c * 0x50 + iVar5" (binary_expression "local_2c * 0x50" (identifier "local_2c") (* "*") (number_literal "0x50")) (+ "+") (identifier "iVar5"))) (; ";")) (} "}"))) (expression_statement "local_5c = local_5c + 1;" (assignment_expression "local_5c = local_5c + 1" (identifier "local_5c") (= "=") (binary_expression "local_5c + 1" (identifier "local_5c") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;" (assignment_expression "pdVar20[iVar10 - iVar8] =\n                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14" (subscript_expression "pdVar20[iVar10 - iVar8]" (identifier "pdVar20") ([ "[") (binary_expression "iVar10 - iVar8" (identifier "iVar10") (- "-") (identifier "iVar8")) (] "]")) (= "=") (binary_expression "(*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14" (binary_expression "(*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48)" (parenthesized_expression "(*(double *)(iVar19 + 0x30) - dVar14)" (( "(") (binary_expression "*(double *)(iVar19 + 0x30) - dVar14" (pointer_expression "*(double *)(iVar19 + 0x30)" (* "*") (cast_expression "(double *)(iVar19 + 0x30)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 0x30)" (( "(") (binary_expression "iVar19 + 0x30" (identifier "iVar19") (+ "+") (number_literal "0x30")) () ")")))) (- "-") (identifier "dVar14")) () ")")) (* "*") (pointer_expression "*(double *)(iVar12 + 0x48)" (* "*") (cast_expression "(double *)(iVar12 + 0x48)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x48)" (( "(") (binary_expression "iVar12 + 0x48" (identifier "iVar12") (+ "+") (number_literal "0x48")) () ")"))))) (+ "+") (identifier "dVar14"))) (; ";")) (expression_statement "pdVar20 = pdVar20 + iVar11;" (assignment_expression "pdVar20 = pdVar20 + iVar11" (identifier "pdVar20") (= "=") (binary_expression "pdVar20 + iVar11" (identifier "pdVar20") (+ "+") (identifier "iVar11"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_5c != iVar7)" (( "(") (binary_expression "local_5c != iVar7" (identifier "local_5c") (!= "!=") (identifier "iVar7")) () ")")) (; ";")) (} "}"))) (expression_statement "iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);" (assignment_expression "iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6)" (identifier "iVar19") (= "=") (call_expression "SyncCacheViewAuthenticPixels(iVar16,iVar6)" (identifier "SyncCacheViewAuthenticPixels") (argument_list "(iVar16,iVar6)" (( "(") (identifier "iVar16") (, ",") (identifier "iVar6") () ")")))) (; ";")) (if_statement "if (iVar19 == 0) {\n            param_1[5] = 0;\n          }" (if "if") (parenthesized_expression "(iVar19 == 0)" (( "(") (binary_expression "iVar19 == 0" (identifier "iVar19") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            param_1[5] = 0;\n          }" ({ "{") (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (if_statement "if (*(int *)(iVar4 + 0x300) != 0) {\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }" (if "if") (parenthesized_expression "(*(int *)(iVar4 + 0x300) != 0)" (( "(") (binary_expression "*(int *)(iVar4 + 0x300) != 0" (pointer_expression "*(int *)(iVar4 + 0x300)" (* "*") (cast_expression "(int *)(iVar4 + 0x300)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x300)" (( "(") (binary_expression "iVar4 + 0x300" (identifier "iVar4") (+ "+") (number_literal "0x300")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            puVar13 = (uint *)param_1[6];\n            uVar21 = *puVar13;\n            uVar22 = puVar13[1];\n            do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);\n            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;\n            if (iVar19 == 0) goto LAB_000c2796;\n          }" ({ "{") (expression_statement "puVar13 = (uint *)param_1[6];" (assignment_expression "puVar13 = (uint *)param_1[6]" (identifier "puVar13") (= "=") (cast_expression "(uint *)param_1[6]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")))) (; ";")) (expression_statement "uVar21 = *puVar13;" (assignment_expression "uVar21 = *puVar13" (identifier "uVar21") (= "=") (pointer_expression "*puVar13" (* "*") (identifier "puVar13"))) (; ";")) (expression_statement "uVar22 = puVar13[1];" (assignment_expression "uVar22 = puVar13[1]" (identifier "uVar22") (= "=") (subscript_expression "puVar13[1]" (identifier "puVar13") ([ "[") (number_literal "1") (] "]"))) (; ";")) (do_statement "do {\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            } while (!bVar23);" (do "do") (compound_statement "{\n              LOCK();\n              lVar1 = *(longlong *)puVar13;\n              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;\n              if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }\n              UNLOCK();\n            }" ({ "{") (expression_statement "LOCK();" (call_expression "LOCK()" (identifier "LOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "lVar1 = *(longlong *)puVar13;" (assignment_expression "lVar1 = *(longlong *)puVar13" (identifier "lVar1") (= "=") (pointer_expression "*(longlong *)puVar13" (* "*") (cast_expression "(longlong *)puVar13" (( "(") (type_descriptor "longlong *" (type_identifier "longlong") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar13")))) (; ";")) (expression_statement "bVar23 = CONCAT44(uVar22,uVar21) == lVar1;" (assignment_expression "bVar23 = CONCAT44(uVar22,uVar21) == lVar1" (identifier "bVar23") (= "=") (binary_expression "CONCAT44(uVar22,uVar21) == lVar1" (call_expression "CONCAT44(uVar22,uVar21)" (identifier "CONCAT44") (argument_list "(uVar22,uVar21)" (( "(") (identifier "uVar22") (, ",") (identifier "uVar21") () ")"))) (== "==") (identifier "lVar1"))) (; ";")) (if_statement "if (bVar23) {\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }\n              else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }" (if "if") (parenthesized_expression "(bVar23)" (( "(") (identifier "bVar23") () ")")) (compound_statement "{\n                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);\n              }" ({ "{") (expression_statement "*(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);" (assignment_expression "*(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1)" (pointer_expression "*(longlong *)puVar13" (* "*") (cast_expression "(longlong *)puVar13" (( "(") (type_descriptor "longlong *" (type_identifier "longlong") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar13"))) (= "=") (call_expression "CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1)" (identifier "CONCAT44") (argument_list "(uVar22 + (0xfffffffe < uVar21),uVar21 + 1)" (( "(") (binary_expression "uVar22 + (0xfffffffe < uVar21)" (identifier "uVar22") (+ "+") (parenthesized_expression "(0xfffffffe < uVar21)" (( "(") (binary_expression "0xfffffffe < uVar21" (number_literal "0xfffffffe") (< "<") (identifier "uVar21")) () ")"))) (, ",") (binary_expression "uVar21 + 1" (identifier "uVar21") (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }" (else "else") (compound_statement "{\n                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);\n                uVar21 = (uint)lVar1;\n              }" ({ "{") (expression_statement "uVar22 = (uint)((ulonglong)lVar1 >> 0x20);" (assignment_expression "uVar22 = (uint)((ulonglong)lVar1 >> 0x20)" (identifier "uVar22") (= "=") (call_expression "(uint)((ulonglong)lVar1 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)lVar1 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar1")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar21 = (uint)lVar1;" (assignment_expression "uVar21 = (uint)lVar1" (identifier "uVar21") (= "=") (cast_expression "(uint)lVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar1"))) (; ";")) (} "}")))) (expression_statement "UNLOCK();" (call_expression "UNLOCK()" (identifier "UNLOCK") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(!bVar23)" (( "(") (unary_expression "!bVar23" (! "!") (identifier "bVar23")) () ")")) (; ";")) (expression_statement "iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)\n            ;" (assignment_expression "iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)" (identifier "iVar19") (= "=") (call_expression "SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)" (identifier "SetImageProgress") (argument_list "(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],\n                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)" (( "(") (identifier "iVar4") (, ",") (binary_expression "unaff_EBP + 0x23081c" (identifier "unaff_EBP") (+ "+") (number_literal "0x23081c")) (, ",") (pointer_expression "*(undefined4 *)param_1[6]" (* "*") (cast_expression "(undefined4 *)param_1[6]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")))) (, ",") (subscript_expression "((undefined4 *)param_1[6])[1]" (parenthesized_expression "((undefined4 *)param_1[6])" (( "(") (cast_expression "(undefined4 *)param_1[6]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) () ")")) ([ "[") (number_literal "1") (] "]")) (, ",") (pointer_expression "*(undefined4 *)(iVar4 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x1c)" (( "(") (binary_expression "iVar4 + 0x1c" (identifier "iVar4") (+ "+") (number_literal "0x1c")) () ")")))) (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar19 == 0) goto LAB_000c2796;" (if "if") (parenthesized_expression "(iVar19 == 0)" (( "(") (binary_expression "iVar19 == 0" (identifier "iVar19") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000c2796;" (goto "goto") (statement_identifier "LAB_000c2796") (; ";"))) (} "}"))) (} "}")))) (} "}"))) (expression_statement "local_48 = local_48 + 1;" (assignment_expression "local_48 = local_48 + 1" (identifier "local_48") (= "=") (binary_expression "local_48 + 1" (identifier "local_48") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar17 != local_48)" (( "(") (binary_expression "iVar17 != local_48" (identifier "iVar17") (!= "!=") (identifier "local_48")) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */
/* 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 ColorDecisionListImage._omp_fn.1(anon_struct_28_7_e94a0b20 *
   param_0) */

void __thiscall function_1(type_1 *this)

{
  type_2 var_28;
  double var_12;
  type_3 *image;
  type_4 *cache_view;
  type_5 *var_6;
  type_6 *exception;
  size_t var_23;
  type_7 *pPVar5;
  int var_11;
  int var_10;
  size_t var_22;
  type_8 *pCVar9;
  type_9 *puVar10;
  double var_16;
  float var_17;
  double var_13;
  int var_4;
  int var_5;
  type_5 *pPVar16;
  type_10 *var_9;
  double *var_21;
  type_11 var_25;
  type_9 var_30;
  type_5 *pPVar21;
  type_9 var_29;
  bool bVar23;
  size_t var_20;
  int var_3;
  int var_15;
  
  image = this->image;
  var_3 = var_1();
  var_4 = var_2();
  var_5 = (int)image->rows / var_3;
  var_3 = (int)image->rows % var_3;
  if (var_4 < var_3) {
    var_5 = var_5 + 1;
    var_3 = 0;
  }
  var_3 = var_4 * var_5 + var_3;
  var_5 = var_5 + var_3;
  if (var_3 < var_5) {
    cache_view = this->image_view;
    var_6 = this->cdl_map;
    pPVar16 = var_6 + 0xffff;
    exception = this->exception;
    do {
      if (this->status != var_7) {
        var_9 = var_8(cache_view,0,var_3,image->columns,1,exception);
        var_13 = DAT_002f3280;
        if (var_9 == (type_10 *)0x0) {
LAB_000c2796:
          this->status = var_7;
        }
        else {
          var_23 = image->columns;
          if (0 < (int)var_23) {
            var_20 = 0;
            pPVar5 = image->channel_map;
            var_4 = pPVar5->offset;
            var_11 = pPVar5[2].offset;
            var_10 = pPVar5[1].offset;
            var_22 = image->number_channels;
            pCVar9 = this->color_correction;
            var_21 = var_9 + var_10;
            do {
              var_12 = var_21[var_4 - var_10];
              var_16 = (double)DAT_002f3260 * var_21[var_11 - var_10] +
                       var_12 * (double)DAT_002f325c + *var_21 * var_13;
              pPVar21 = pPVar16;
              if ((var_12 < (double)var_18) && (pPVar21 = var_6, 0.0 < var_12)) {
                var_15 = (int)(type_2)var_14(var_12 + (double)var_19);
                pPVar21 = var_6 + var_15;
              }
              var_21[var_4 - var_10] = (pPVar21->red - var_16) * pCVar9->saturation + var_16;
              var_17 = (float)*var_21;
              pPVar21 = pPVar16;
              if ((var_17 < var_18) && (pPVar21 = var_6, 0.0 < var_17)) {
                var_15 = (int)(type_2)var_14(var_17 + var_19);
                pPVar21 = var_6 + var_15;
              }
              *var_21 = (pPVar21->green - var_16) * pCVar9->saturation + var_16;
              var_17 = (float)var_21[var_11 - var_10];
              pPVar21 = pPVar16;
              if ((var_17 < var_18) && (pPVar21 = var_6, 0.0 < var_17)) {
                var_15 = (int)(type_2)var_14(var_17 + var_19);
                pPVar21 = var_6 + var_15;
              }
              var_20 = var_20 + 1;
              var_21[var_11 - var_10] = (pPVar21->blue - var_16) * pCVar9->saturation + var_16;
              var_21 = var_21 + var_22;
            } while (var_20 != var_23);
          }
          var_25 = var_24(cache_view,exception);
          if (var_25 == var_7) {
            this->status = var_7;
          }
          if (image->progress_monitor != (type_12)0x0) {
            puVar10 = (type_9 *)this->progress;
            var_30 = *puVar10;
            var_29 = puVar10[1];
            do {
              var_26();
              var_28 = *(type_2 *)puVar10;
              bVar23 = var_27(var_29,var_30) == var_28;
              if (bVar23) {
                *(type_2 *)puVar10 = var_27(var_29 + (0xfffffffe < var_30),var_30 + 1);
              }
              else {
                var_29 = (type_9)((type_13)var_28 >> 0x20);
                var_30 = (type_9)var_28;
              }
              var_31();
            } while (!bVar23);
            var_25 = var_32(image,"ColorDecisionList/Image",*this->progress,
                                      (type_13)image->rows);
            if (var_25 == var_7) goto LAB_000c2796;
          }
        }
      }
      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: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (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: (binary_expression left: (identifier) right: (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (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))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) alternative: (else_clause (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: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (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: (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: (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: (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: (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (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: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (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: (identifier) right: (number_literal)))))))) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (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)))))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (number_literal) right: (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: (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: (identifier) right: (number_literal))))))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (identifier))) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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)))))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (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))))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (number_literal) right: (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: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (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)))))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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)))))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (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))))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (number_literal) right: (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: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (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)))))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (identifier))) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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)))))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (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))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (do_statement body: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))) right: (identifier)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier)))) (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: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))) condition: (parenthesized_expression (unary_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))) (subscript_expression argument: (parenthesized_expression (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))) index: (number_literal)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (return_statement))))

void MASKED(int *param_1)

{
  longlong lVar1;
  double dVar2;
  double dVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  uint *puVar13;
  double dVar14;
  float fVar15;
  int iVar16;
  int iVar17;
  int iVar18;
  int iVar19;
  double *pdVar20;
  uint uVar21;
  uint uVar22;
  int unaff_EBP;
  bool bVar23;
  int local_5c;
  int local_48;
  int local_2c;
  
  FUN_00045159();
  iVar4 = *param_1;
  local_48 = omp_get_num_threads();
  iVar16 = omp_get_thread_num();
  iVar17 = *(int *)(iVar4 + 0x1c) / local_48;
  local_48 = *(int *)(iVar4 + 0x1c) % local_48;
  if (iVar16 < local_48) {
    iVar17 = iVar17 + 1;
    local_48 = 0;
  }
  local_48 = iVar16 * iVar17 + local_48;
  iVar17 = iVar17 + local_48;
  if (local_48 < iVar17) {
    iVar16 = param_1[2];
    iVar5 = param_1[4];
    iVar18 = iVar5 + 0x4fffb0;
    iVar6 = param_1[1];
    do {
      if (param_1[5] != 0) {
        iVar19 = GetCacheViewAuthenticPixels
                           (iVar16,0,local_48,*(undefined4 *)(iVar4 + 0x18),1,iVar6);
        if (iVar19 == 0) {
LAB_000c2796:
          param_1[5] = 0;
        }
        else {
          iVar7 = *(int *)(iVar4 + 0x18);
          if (0 < iVar7) {
            local_5c = 0;
            dVar2 = *(double *)(unaff_EBP + 0x230e5a);
            iVar8 = *(int *)(iVar4 + 0x2a8);
            iVar9 = *(int *)(iVar8 + 8);
            iVar10 = *(int *)(iVar8 + 0x20);
            iVar8 = *(int *)(iVar8 + 0x14);
            iVar11 = *(int *)(iVar4 + 0x298);
            iVar12 = param_1[3];
            pdVar20 = (double *)(iVar19 + iVar8 * 8);
            do {
              dVar3 = pdVar20[iVar9 - iVar8];
              dVar14 = (double)*(float *)(unaff_EBP + 0x230e3a) * pdVar20[iVar10 - iVar8] +
                       dVar3 * (double)*(float *)(unaff_EBP + 0x230e36) + *pdVar20 * dVar2;
              iVar19 = iVar18;
              if ((dVar3 < (double)*(float *)(unaff_EBP + 0x21d482)) &&
                 (iVar19 = iVar5, 0.0 < dVar3)) {
                local_2c = (int)(longlong)ROUND(dVar3 + (double)*(float *)(unaff_EBP + 0x21ce92));
                iVar19 = local_2c * 0x50 + iVar5;
              }
              pdVar20[iVar9 - iVar8] =
                   (*(double *)(iVar19 + 0x20) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;
              fVar15 = (float)*pdVar20;
              iVar19 = iVar18;
              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {
                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));
                iVar19 = local_2c * 0x50 + iVar5;
              }
              *pdVar20 = (*(double *)(iVar19 + 0x28) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14
              ;
              fVar15 = (float)pdVar20[iVar10 - iVar8];
              iVar19 = iVar18;
              if ((fVar15 < *(float *)(unaff_EBP + 0x21d482)) && (iVar19 = iVar5, 0.0 < fVar15)) {
                local_2c = (int)(longlong)ROUND(fVar15 + *(float *)(unaff_EBP + 0x21ce92));
                iVar19 = local_2c * 0x50 + iVar5;
              }
              local_5c = local_5c + 1;
              pdVar20[iVar10 - iVar8] =
                   (*(double *)(iVar19 + 0x30) - dVar14) * *(double *)(iVar12 + 0x48) + dVar14;
              pdVar20 = pdVar20 + iVar11;
            } while (local_5c != iVar7);
          }
          iVar19 = SyncCacheViewAuthenticPixels(iVar16,iVar6);
          if (iVar19 == 0) {
            param_1[5] = 0;
          }
          if (*(int *)(iVar4 + 0x300) != 0) {
            puVar13 = (uint *)param_1[6];
            uVar21 = *puVar13;
            uVar22 = puVar13[1];
            do {
              LOCK();
              lVar1 = *(longlong *)puVar13;
              bVar23 = CONCAT44(uVar22,uVar21) == lVar1;
              if (bVar23) {
                *(longlong *)puVar13 = CONCAT44(uVar22 + (0xfffffffe < uVar21),uVar21 + 1);
              }
              else {
                uVar22 = (uint)((ulonglong)lVar1 >> 0x20);
                uVar21 = (uint)lVar1;
              }
              UNLOCK();
            } while (!bVar23);
            iVar19 = SetImageProgress(iVar4,unaff_EBP + 0x23081c,*(undefined4 *)param_1[6],
                                      ((undefined4 *)param_1[6])[1],*(undefined4 *)(iVar4 + 0x1c),0)
            ;
            if (iVar19 == 0) goto LAB_000c2796;
          }
        }
      }
      local_48 = local_48 + 1;
    } while (iVar17 != local_48);
  }
  return;
}

