
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* 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 */
/* DWARF original prototype: void PosterizeImage._omp_fn.1(anon_struct_8_2_5938f0ef * param_0) */

void __thiscall PosterizeImage__omp_fn_1(anon_struct_8_2_5938f0ef *this)

{
  uint uVar1;
  int iVar2;
  Image *pIVar3;
  size_t sVar4;
  double dVar5;
  double dVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  PixelChannelMap *pPVar10;
  int in_GS_OFFSET;
  
  iVar2 = *(int *)(in_GS_OFFSET + 0x14);
  pIVar3 = this->image;
  iVar7 = omp_get_num_threads();
  iVar8 = omp_get_thread_num();
  dVar6 = _DAT_002df2e0;
  iVar9 = (int)pIVar3->colors / iVar7;
  iVar7 = (int)pIVar3->colors % iVar7;
  if (iVar8 < iVar7) {
    iVar9 = iVar9 + 1;
    iVar7 = 0;
  }
  iVar7 = iVar7 + iVar8 * iVar9;
  iVar9 = iVar9 + iVar7;
  if (iVar7 < iVar9) {
    sVar4 = this->levels;
    iVar8 = iVar7 * 0x50;
    uVar1 = sVar4 - 1;
    do {
      while (pPVar10 = pIVar3->channel_map,
            (pPVar10->traits & UpdatePixelTrait) == UndefinedPixelTrait) {
        if ((pPVar10[1].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457b2;
LAB_001458b1:
        dVar5 = ROUND((double)uVar1 *
                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->green + iVar8)) *
                (double)DAT_002df8a8;
        if (2 < (int)sVar4) {
          dVar5 = dVar5 / (double)(int)uVar1;
        }
        *(double *)((int)&pIVar3->colormap->green + iVar8) = dVar5;
        pPVar10 = pIVar3->channel_map;
        if ((pPVar10[2].traits & UpdatePixelTrait) != UndefinedPixelTrait) goto LAB_00145986;
LAB_001457bc:
        if ((pPVar10[4].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457c6;
LAB_00145a5b:
        dVar5 = ROUND((double)uVar1 *
                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->alpha + iVar8)) *
                (double)DAT_002df8a8;
        if (2 < (int)sVar4) {
          dVar5 = dVar5 / (double)(int)uVar1;
        }
        iVar7 = iVar7 + 1;
        *(double *)((int)&pIVar3->colormap->alpha + iVar8) = dVar5;
        iVar8 = iVar8 + 0x50;
        if (iVar9 == iVar7) goto LAB_00145b3a;
      }
      dVar5 = ROUND((double)uVar1 * *(double *)((int)&pIVar3->colormap->red + iVar8) * dVar6) *
              (double)DAT_002df8a8;
      if (2 < (int)sVar4) {
        dVar5 = dVar5 / (double)(int)uVar1;
      }
      *(double *)((int)&pIVar3->colormap->red + iVar8) = dVar5;
      pPVar10 = pIVar3->channel_map;
      if ((pPVar10[1].traits & UpdatePixelTrait) != UndefinedPixelTrait) goto LAB_001458b1;
LAB_001457b2:
      if ((pPVar10[2].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457bc;
LAB_00145986:
      dVar5 = ROUND((double)uVar1 *
                    _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->blue + iVar8)) *
              (double)DAT_002df8a8;
      if (2 < (int)sVar4) {
        dVar5 = dVar5 / (double)(int)uVar1;
      }
      *(double *)((int)&pIVar3->colormap->blue + iVar8) = dVar5;
      if ((pIVar3->channel_map[4].traits & UpdatePixelTrait) != UndefinedPixelTrait)
      goto LAB_00145a5b;
LAB_001457c6:
      iVar7 = iVar7 + 1;
      iVar8 = iVar8 + 0x50;
    } while (iVar9 != iVar7);
  }
LAB_00145b3a:
  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_00145730(int *param_1)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  double dVar4;
  double dVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int in_GS_OFFSET;
  
  iVar2 = *(int *)(in_GS_OFFSET + 0x14);
  iVar3 = *param_1;
  iVar6 = omp_get_num_threads();
  iVar7 = omp_get_thread_num();
  dVar5 = _DAT_002df2e0;
  iVar8 = *(int *)(iVar3 + 0x24) / iVar6;
  iVar6 = *(int *)(iVar3 + 0x24) % iVar6;
  if (iVar7 < iVar6) {
    iVar8 = iVar8 + 1;
    iVar6 = 0;
  }
  iVar6 = iVar6 + iVar7 * iVar8;
  iVar8 = iVar8 + iVar6;
  if (iVar6 < iVar8) {
    iVar7 = param_1[1];
    iVar10 = iVar6 * 0x50;
    uVar1 = iVar7 - 1;
    do {
      while (iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0) {
        if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;
LAB_001458b1:
        dVar4 = ROUND((double)uVar1 *
                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *
                (double)DAT_002df8a8;
        if (2 < iVar7) {
          dVar4 = dVar4 / (double)(int)uVar1;
        }
        *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;
        iVar9 = *(int *)(iVar3 + 0x2a8);
        if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;
LAB_001457bc:
        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;
LAB_00145a5b:
        dVar4 = ROUND((double)uVar1 *
                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *
                (double)DAT_002df8a8;
        if (2 < iVar7) {
          dVar4 = dVar4 / (double)(int)uVar1;
        }
        iVar6 = iVar6 + 1;
        *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;
        iVar10 = iVar10 + 0x50;
        if (iVar8 == iVar6) goto LAB_00145b3a;
      }
      dVar4 = ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *
              (double)DAT_002df8a8;
      if (2 < iVar7) {
        dVar4 = dVar4 / (double)(int)uVar1;
      }
      *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) = dVar4;
      iVar9 = *(int *)(iVar3 + 0x2a8);
      if ((*(byte *)(iVar9 + 0x10) & 2) != 0) goto LAB_001458b1;
LAB_001457b2:
      if ((*(byte *)(iVar9 + 0x1c) & 2) == 0) goto LAB_001457bc;
LAB_00145986:
      dVar4 = ROUND((double)uVar1 *
                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *
              (double)DAT_002df8a8;
      if (2 < iVar7) {
        dVar4 = dVar4 / (double)(int)uVar1;
      }
      *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10) = dVar4;
      if ((*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0) goto LAB_00145a5b;
LAB_001457c6:
      iVar6 = iVar6 + 1;
      iVar10 = iVar10 + 0x50;
    } while (iVar8 != iVar6);
  }
LAB_00145b3a:
  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_002decd0();
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00039d70
ADD EBX,0x2d88c7
SUB ESP,0x3c
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x2c],EAX
XOR EAX,EAX
MOV EBP,dword ptr [ESP + 0x50]
MOV ESI,dword ptr [EBP]
CALL 0x00030850
MOV EDI,EAX
CALL 0x000317c0
MOV ECX,EAX
MOV EAX,dword ptr [ESI + 0x24]
CDQ
IDIV EDI
CMP ECX,EDX
JGE 0x00145772
ADD EAX,0x1
XOR EDX,EDX
IMUL ECX,EAX
ADD EDX,ECX
ADD EAX,EDX
CMP EDX,EAX
JGE 0x00145b3a
MOV EBP,dword ptr [EBP + 0x4]
LEA EDI,[EDX + EDX*0x4]
MOV dword ptr [ESP + 0xc],0x0
SHL EDI,0x4
FLD qword ptr [EBX + 0xffec12e0]
LEA ECX,[EBP + -0x1]
MOV dword ptr [ESP + 0x14],ECX
MOV dword ptr [ESP + 0x8],ECX
JMP 0x001457d4
TEST byte ptr [ECX + 0x10],0x2
JNZ 0x001458b1
TEST byte ptr [ECX + 0x1c],0x2
JNZ 0x00145986
TEST byte ptr [ECX + 0x34],0x2
JNZ 0x00145a5b
ADD EDX,0x1
ADD EDI,0x50
CMP EAX,EDX
JZ 0x00145b38
MOV ECX,dword ptr [ESI + 0x2a8]
TEST byte ptr [ECX + 0x4],0x2
JZ 0x001457a8
MOV ECX,dword ptr [ESI + 0x28]
FLD qword ptr [ECX + EDI*0x1 + 0x20]
FMUL ST1
FILD qword ptr [ESP + 0x8]
FMULP
FLD ST0
FNSTCW word ptr [ESP + 0x28]
MOVZX ECX,word ptr [ESP + 0x28]
AND ECX,0xf3ff
OR ECX,0x400
MOV word ptr [ESP + 0x2a],CX
FLDCW word ptr [ESP + 0x2a]
FRNDINT
FLDCW word ptr [ESP + 0x28]
FLD ST1
FNSTCW word ptr [ESP + 0x28]
MOVZX ECX,word ptr [ESP + 0x28]
AND ECX,0xf3ff
OR ECX,0x800
MOV word ptr [ESP + 0x2a],CX
FLDCW word ptr [ESP + 0x2a]
FRNDINT
FLDCW word ptr [ESP + 0x28]
FXCH
FSTP qword ptr [ESP + 0x18]
FLD qword ptr [ESP + 0x18]
FSUBR ST0,ST2
FXCH
FSTP qword ptr [ESP + 0x18]
FLD qword ptr [ESP + 0x18]
FSUB ST0,ST2
FUCOMIP ST0,ST1
FSTP ST0
JA 0x00145b90
FNSTCW word ptr [ESP + 0x28]
MOVZX ECX,word ptr [ESP + 0x28]
AND ECX,0xf3ff
OR ECX,0x800
MOV word ptr [ESP + 0x2a],CX
FLDCW word ptr [ESP + 0x2a]
FRNDINT
FLDCW word ptr [ESP + 0x28]
FSTP qword ptr [ESP + 0x18]
FLD qword ptr [ESP + 0x18]
FMUL dword ptr [EBX + 0xffec18a8]
CMP EBP,0x2
JLE 0x0014589a
FILD dword ptr [ESP + 0x14]
FDIVP
MOV ECX,dword ptr [ESI + 0x28]
FSTP qword ptr [ECX + EDI*0x1 + 0x20]
MOV ECX,dword ptr [ESI + 0x2a8]
TEST byte ptr [ECX + 0x10],0x2
JZ 0x001457b2
MOV ECX,dword ptr [ESI + 0x28]
FLD qword ptr [EBX + 0xffec12e0]
FMUL qword ptr [ECX + EDI*0x1 + 0x28]
FILD qword ptr [ESP + 0x8]
FMULP
FLD ST0
FNSTCW word ptr [ESP + 0x28]
MOVZX ECX,word ptr [ESP + 0x28]
AND ECX,0xf3ff
OR ECX,0x400
MOV word ptr [ESP + 0x2a],CX
FLDCW word ptr [ESP + 0x2a]
FRNDINT
FLDCW word ptr [ESP + 0x28]
FLD ST1
FNSTCW word ptr [ESP + 0x28]
MOVZX ECX,word ptr [ESP + 0x28]
AND ECX,0xf3ff
OR ECX,0x800
MOV word ptr [ESP + 0x2a],CX
FLDCW word ptr [ESP + 0x2a]
FRNDINT
FLDCW word ptr [ESP + 0x28]
FXCH
FSTP qword ptr [ESP + 0x18]
FLD qword ptr [ESP + 0x18]
FSUBR ST0,ST2
FXCH
FSTP qword ptr [ESP + 0x18]
FLD qword ptr [ESP + 0x18]
FSUB ST0,ST2
FUCOMIP ST0,ST1
FSTP ST0
JA 0x00145b58
FNSTCW word ptr [ESP + 0x28]
MOVZX ECX,word ptr [ESP + 0x28]
AND ECX,0xf3ff
OR ECX,0x800
MOV word ptr [ESP + 0x2a],CX
FLDCW word ptr [ESP + 0x2a]
FRNDINT
FLDCW word ptr [ESP + 0x28]
FSTP qword ptr [ESP + 0x18]
FLD qword ptr [ESP + 0x18]
FMUL dword ptr [EBX + 0xffec18a8]
CMP EBP,0x2
JLE 0x0014596f
FILD dword ptr [ESP + 0x14]
FDIVP
MOV ECX,dword ptr [ESI + 0x28]
FSTP qword ptr [ECX + EDI*0x1 + 0x28]
MOV ECX,dword ptr [ESI + 0x2a8]
TEST byte ptr [ECX + 0x1c],0x2
JZ 0x001457bc
MOV ECX,dword ptr [ESI + 0x28]
FLD qword ptr [EBX + 0xffec12e0]
FMUL qword ptr [ECX + EDI*0x1 + 0x30]
FILD qword ptr [ESP + 0x8]
FMULP
FLD ST0
FNSTCW word ptr [ESP + 0x28]
MOVZX ECX,word ptr [ESP + 0x28]
AND ECX,0xf3ff
OR ECX,0x400
MOV word ptr [ESP + 0x2a],CX
FLDCW word ptr [ESP + 0x2a]
FRNDINT
FLDCW word ptr [ESP + 0x28]
FLD ST1
FNSTCW word ptr [ESP + 0x28]
MOVZX ECX,word ptr [ESP + 0x28]
AND ECX,0xf3ff
OR ECX,0x800
MOV word ptr [ESP + 0x2a],CX
FLDCW word ptr [ESP + 0x2a]
FRNDINT
FLDCW word ptr [ESP + 0x28]
FXCH
FSTP qword ptr [ESP + 0x18]
FLD qword ptr [ESP + 0x18]
FSUBR ST0,ST2
FXCH
FSTP qword ptr [ESP + 0x18]
FLD qword ptr [ESP + 0x18]
FSUB ST0,ST2
FUCOMIP ST0,ST1
FSTP ST0
JA 0x00145bc8
FNSTCW word ptr [ESP + 0x28]
MOVZX ECX,word ptr [ESP + 0x28]
AND ECX,0xf3ff
OR ECX,0x800
MOV word ptr [ESP + 0x2a],CX
FLDCW word ptr [ESP + 0x2a]
FRNDINT
FLDCW word ptr [ESP + 0x28]
FSTP qword ptr [ESP + 0x18]
FLD qword ptr [ESP + 0x18]
FMUL dword ptr [EBX + 0xffec18a8]
CMP EBP,0x2
JLE 0x00145a44
FILD dword ptr [ESP + 0x14]
FDIVP
MOV ECX,dword ptr [ESI + 0x28]
FSTP qword ptr [ECX + EDI*0x1 + 0x30]
MOV ECX,dword ptr [ESI + 0x2a8]
TEST byte ptr [ECX + 0x34],0x2
JZ 0x001457c6
MOV ECX,dword ptr [ESI + 0x28]
FLD qword ptr [EBX + 0xffec12e0]
FMUL qword ptr [ECX + EDI*0x1 + 0x40]
FILD qword ptr [ESP + 0x8]
FMULP
FLD ST0
FNSTCW word ptr [ESP + 0x28]
MOVZX ECX,word ptr [ESP + 0x28]
AND ECX,0xf3ff
OR ECX,0x400
MOV word ptr [ESP + 0x2a],CX
FLDCW word ptr [ESP + 0x2a]
FRNDINT
FLDCW word ptr [ESP + 0x28]
FLD ST1
FNSTCW word ptr [ESP + 0x28]
MOVZX ECX,word ptr [ESP + 0x28]
AND ECX,0xf3ff
OR ECX,0x800
MOV word ptr [ESP + 0x2a],CX
FLDCW word ptr [ESP + 0x2a]
FRNDINT
FLDCW word ptr [ESP + 0x28]
FXCH
FSTP qword ptr [ESP + 0x18]
FLD qword ptr [ESP + 0x18]
FSUBR ST0,ST2
FXCH
FSTP qword ptr [ESP + 0x18]
FLD qword ptr [ESP + 0x18]
FSUB ST0,ST2
FUCOMIP ST0,ST1
FSTP ST0
JA 0x00145c00
FNSTCW word ptr [ESP + 0x28]
MOVZX ECX,word ptr [ESP + 0x28]
AND ECX,0xf3ff
OR ECX,0x800
MOV word ptr [ESP + 0x2a],CX
FLDCW word ptr [ESP + 0x2a]
FRNDINT
FLDCW word ptr [ESP + 0x28]
FSTP qword ptr [ESP + 0x18]
FLD qword ptr [ESP + 0x18]
FMUL dword ptr [EBX + 0xffec18a8]
CMP EBP,0x2
JLE 0x00145b19
FILD dword ptr [ESP + 0x14]
FDIVP
MOV ECX,dword ptr [ESI + 0x28]
ADD EDX,0x1
FSTP qword ptr [ECX + EDI*0x1 + 0x40]
ADD EDI,0x50
CMP EAX,EDX
JNZ 0x001457d4
FSTP ST0
JMP 0x00145b3a
FSTP ST0
MOV EAX,dword ptr [ESP + 0x2c]
XOR EAX,dword ptr GS:[0x14]
JNZ 0x00145c31
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
FNSTCW word ptr [ESP + 0x28]
MOVZX ECX,word ptr [ESP + 0x28]
AND ECX,0xf3ff
OR ECX,0x400
MOV word ptr [ESP + 0x2a],CX
FLDCW word ptr [ESP + 0x2a]
FRNDINT
FLDCW word ptr [ESP + 0x28]
FSTP qword ptr [ESP + 0x18]
FLD qword ptr [ESP + 0x18]
JMP 0x0014595e
FNSTCW word ptr [ESP + 0x28]
MOVZX ECX,word ptr [ESP + 0x28]
AND ECX,0xf3ff
OR ECX,0x400
MOV word ptr [ESP + 0x2a],CX
FLDCW word ptr [ESP + 0x2a]
FRNDINT
FLDCW word ptr [ESP + 0x28]
FSTP qword ptr [ESP + 0x18]
FLD qword ptr [ESP + 0x18]
JMP 0x00145889
FNSTCW word ptr [ESP + 0x28]
MOVZX ECX,word ptr [ESP + 0x28]
AND ECX,0xf3ff
OR ECX,0x400
MOV word ptr [ESP + 0x2a],CX
FLDCW word ptr [ESP + 0x2a]
FRNDINT
FLDCW word ptr [ESP + 0x28]
FSTP qword ptr [ESP + 0x18]
FLD qword ptr [ESP + 0x18]
JMP 0x00145a33
FNSTCW word ptr [ESP + 0x28]
MOVZX ECX,word ptr [ESP + 0x28]
AND ECX,0xf3ff
OR ECX,0x400
MOV word ptr [ESP + 0x2a],CX
FLDCW word ptr [ESP + 0x2a]
FRNDINT
FLDCW word ptr [ESP + 0x28]
FSTP qword ptr [ESP + 0x18]
FLD qword ptr [ESP + 0x18]
JMP 0x00145b08
CALL 0x002decd0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n\nvoid FUN_00145730(int *param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  double dVar4;\n  double dVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int in_GS_OFFSET;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = *param_1;\n  iVar6 = omp_get_num_threads();\n  iVar7 = omp_get_thread_num();\n  dVar5 = _DAT_002df2e0;\n  iVar8 = *(int *)(iVar3 + 0x24) / iVar6;\n  iVar6 = *(int *)(iVar3 + 0x24) % iVar6;\n  if (iVar7 < iVar6) {\n    iVar8 = iVar8 + 1;\n    iVar6 = 0;\n  }\n  iVar6 = iVar6 + iVar7 * iVar8;\n  iVar8 = iVar8 + iVar6;\n  if (iVar6 < iVar8) {\n    iVar7 = param_1[1];\n    iVar10 = iVar6 * 0x50;\n    uVar1 = iVar7 - 1;\n    do {\n      while (iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0) {\n        if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;\nLAB_001458b1:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;\n        iVar9 = *(int *)(iVar3 + 0x2a8);\n        if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;\nLAB_001457bc:\n        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        iVar6 = iVar6 + 1;\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;\n        iVar10 = iVar10 + 0x50;\n        if (iVar8 == iVar6) goto LAB_00145b3a;\n      }\n      dVar4 = ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) = dVar4;\n      iVar9 = *(int *)(iVar3 + 0x2a8);\n      if ((*(byte *)(iVar9 + 0x10) & 2) != 0) goto LAB_001458b1;\nLAB_001457b2:\n      if ((*(byte *)(iVar9 + 0x1c) & 2) == 0) goto LAB_001457bc;\nLAB_00145986:\n      dVar4 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10) = dVar4;\n      if ((*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0) goto LAB_00145a5b;\nLAB_001457c6:\n      iVar6 = iVar6 + 1;\n      iVar10 = iVar10 + 0x50;\n    } while (iVar8 != iVar6);\n  }\nLAB_00145b3a:\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_002decd0();\n}\n\n" comment comment (function_definition "void FUN_00145730(int *param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  double dVar4;\n  double dVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int in_GS_OFFSET;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = *param_1;\n  iVar6 = omp_get_num_threads();\n  iVar7 = omp_get_thread_num();\n  dVar5 = _DAT_002df2e0;\n  iVar8 = *(int *)(iVar3 + 0x24) / iVar6;\n  iVar6 = *(int *)(iVar3 + 0x24) % iVar6;\n  if (iVar7 < iVar6) {\n    iVar8 = iVar8 + 1;\n    iVar6 = 0;\n  }\n  iVar6 = iVar6 + iVar7 * iVar8;\n  iVar8 = iVar8 + iVar6;\n  if (iVar6 < iVar8) {\n    iVar7 = param_1[1];\n    iVar10 = iVar6 * 0x50;\n    uVar1 = iVar7 - 1;\n    do {\n      while (iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0) {\n        if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;\nLAB_001458b1:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;\n        iVar9 = *(int *)(iVar3 + 0x2a8);\n        if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;\nLAB_001457bc:\n        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        iVar6 = iVar6 + 1;\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;\n        iVar10 = iVar10 + 0x50;\n        if (iVar8 == iVar6) goto LAB_00145b3a;\n      }\n      dVar4 = ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) = dVar4;\n      iVar9 = *(int *)(iVar3 + 0x2a8);\n      if ((*(byte *)(iVar9 + 0x10) & 2) != 0) goto LAB_001458b1;\nLAB_001457b2:\n      if ((*(byte *)(iVar9 + 0x1c) & 2) == 0) goto LAB_001457bc;\nLAB_00145986:\n      dVar4 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10) = dVar4;\n      if ((*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0) goto LAB_00145a5b;\nLAB_001457c6:\n      iVar6 = iVar6 + 1;\n      iVar10 = iVar10 + 0x50;\n    } while (iVar8 != iVar6);\n  }\nLAB_00145b3a:\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_002decd0();\n}" primitive_type (function_declarator "FUN_00145730(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  double dVar4;\n  double dVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int in_GS_OFFSET;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = *param_1;\n  iVar6 = omp_get_num_threads();\n  iVar7 = omp_get_thread_num();\n  dVar5 = _DAT_002df2e0;\n  iVar8 = *(int *)(iVar3 + 0x24) / iVar6;\n  iVar6 = *(int *)(iVar3 + 0x24) % iVar6;\n  if (iVar7 < iVar6) {\n    iVar8 = iVar8 + 1;\n    iVar6 = 0;\n  }\n  iVar6 = iVar6 + iVar7 * iVar8;\n  iVar8 = iVar8 + iVar6;\n  if (iVar6 < iVar8) {\n    iVar7 = param_1[1];\n    iVar10 = iVar6 * 0x50;\n    uVar1 = iVar7 - 1;\n    do {\n      while (iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0) {\n        if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;\nLAB_001458b1:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;\n        iVar9 = *(int *)(iVar3 + 0x2a8);\n        if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;\nLAB_001457bc:\n        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        iVar6 = iVar6 + 1;\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;\n        iVar10 = iVar10 + 0x50;\n        if (iVar8 == iVar6) goto LAB_00145b3a;\n      }\n      dVar4 = ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) = dVar4;\n      iVar9 = *(int *)(iVar3 + 0x2a8);\n      if ((*(byte *)(iVar9 + 0x10) & 2) != 0) goto LAB_001458b1;\nLAB_001457b2:\n      if ((*(byte *)(iVar9 + 0x1c) & 2) == 0) goto LAB_001457bc;\nLAB_00145986:\n      dVar4 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10) = dVar4;\n      if ((*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0) goto LAB_00145a5b;\nLAB_001457c6:\n      iVar6 = iVar6 + 1;\n      iVar10 = iVar10 + 0x50;\n    } while (iVar8 != iVar6);\n  }\nLAB_00145b3a:\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_002decd0();\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "double dVar4;" primitive_type identifier ;) (declaration "double dVar5;" 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 in_GS_OFFSET;" primitive_type identifier ;) (expression_statement "iVar2 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar2 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = *param_1;" (assignment_expression "iVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "iVar6 = omp_get_num_threads();" (assignment_expression "iVar6 = omp_get_num_threads()" identifier = (call_expression "omp_get_num_threads()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar7 = omp_get_thread_num();" (assignment_expression "iVar7 = omp_get_thread_num()" identifier = (call_expression "omp_get_thread_num()" identifier (argument_list "()" ( )))) ;) (expression_statement "dVar5 = _DAT_002df2e0;" (assignment_expression "dVar5 = _DAT_002df2e0" identifier = identifier) ;) (expression_statement "iVar8 = *(int *)(iVar3 + 0x24) / iVar6;" (assignment_expression "iVar8 = *(int *)(iVar3 + 0x24) / iVar6" identifier = (binary_expression "*(int *)(iVar3 + 0x24) / iVar6" (pointer_expression "*(int *)(iVar3 + 0x24)" * (cast_expression "(int *)(iVar3 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x24)" ( (binary_expression "iVar3 + 0x24" identifier + number_literal) )))) / identifier)) ;) (expression_statement "iVar6 = *(int *)(iVar3 + 0x24) % iVar6;" (assignment_expression "iVar6 = *(int *)(iVar3 + 0x24) % iVar6" identifier = (binary_expression "*(int *)(iVar3 + 0x24) % iVar6" (pointer_expression "*(int *)(iVar3 + 0x24)" * (cast_expression "(int *)(iVar3 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x24)" ( (binary_expression "iVar3 + 0x24" identifier + number_literal) )))) % identifier)) ;) (if_statement "if (iVar7 < iVar6) {\n    iVar8 = iVar8 + 1;\n    iVar6 = 0;\n  }" if (parenthesized_expression "(iVar7 < iVar6)" ( (binary_expression "iVar7 < iVar6" identifier < identifier) )) (compound_statement "{\n    iVar8 = iVar8 + 1;\n    iVar6 = 0;\n  }" { (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) })) (expression_statement "iVar6 = iVar6 + iVar7 * iVar8;" (assignment_expression "iVar6 = iVar6 + iVar7 * iVar8" identifier = (binary_expression "iVar6 + iVar7 * iVar8" identifier + (binary_expression "iVar7 * iVar8" identifier * identifier))) ;) (expression_statement "iVar8 = iVar8 + iVar6;" (assignment_expression "iVar8 = iVar8 + iVar6" identifier = (binary_expression "iVar8 + iVar6" identifier + identifier)) ;) (if_statement "if (iVar6 < iVar8) {\n    iVar7 = param_1[1];\n    iVar10 = iVar6 * 0x50;\n    uVar1 = iVar7 - 1;\n    do {\n      while (iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0) {\n        if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;\nLAB_001458b1:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;\n        iVar9 = *(int *)(iVar3 + 0x2a8);\n        if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;\nLAB_001457bc:\n        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        iVar6 = iVar6 + 1;\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;\n        iVar10 = iVar10 + 0x50;\n        if (iVar8 == iVar6) goto LAB_00145b3a;\n      }\n      dVar4 = ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) = dVar4;\n      iVar9 = *(int *)(iVar3 + 0x2a8);\n      if ((*(byte *)(iVar9 + 0x10) & 2) != 0) goto LAB_001458b1;\nLAB_001457b2:\n      if ((*(byte *)(iVar9 + 0x1c) & 2) == 0) goto LAB_001457bc;\nLAB_00145986:\n      dVar4 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10) = dVar4;\n      if ((*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0) goto LAB_00145a5b;\nLAB_001457c6:\n      iVar6 = iVar6 + 1;\n      iVar10 = iVar10 + 0x50;\n    } while (iVar8 != iVar6);\n  }" if (parenthesized_expression "(iVar6 < iVar8)" ( (binary_expression "iVar6 < iVar8" identifier < identifier) )) (compound_statement "{\n    iVar7 = param_1[1];\n    iVar10 = iVar6 * 0x50;\n    uVar1 = iVar7 - 1;\n    do {\n      while (iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0) {\n        if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;\nLAB_001458b1:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;\n        iVar9 = *(int *)(iVar3 + 0x2a8);\n        if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;\nLAB_001457bc:\n        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        iVar6 = iVar6 + 1;\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;\n        iVar10 = iVar10 + 0x50;\n        if (iVar8 == iVar6) goto LAB_00145b3a;\n      }\n      dVar4 = ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) = dVar4;\n      iVar9 = *(int *)(iVar3 + 0x2a8);\n      if ((*(byte *)(iVar9 + 0x10) & 2) != 0) goto LAB_001458b1;\nLAB_001457b2:\n      if ((*(byte *)(iVar9 + 0x1c) & 2) == 0) goto LAB_001457bc;\nLAB_00145986:\n      dVar4 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10) = dVar4;\n      if ((*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0) goto LAB_00145a5b;\nLAB_001457c6:\n      iVar6 = iVar6 + 1;\n      iVar10 = iVar10 + 0x50;\n    } while (iVar8 != iVar6);\n  }" { (expression_statement "iVar7 = param_1[1];" (assignment_expression "iVar7 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "iVar10 = iVar6 * 0x50;" (assignment_expression "iVar10 = iVar6 * 0x50" identifier = (binary_expression "iVar6 * 0x50" identifier * number_literal)) ;) (expression_statement "uVar1 = iVar7 - 1;" (assignment_expression "uVar1 = iVar7 - 1" identifier = (binary_expression "iVar7 - 1" identifier - number_literal)) ;) (do_statement "do {\n      while (iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0) {\n        if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;\nLAB_001458b1:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;\n        iVar9 = *(int *)(iVar3 + 0x2a8);\n        if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;\nLAB_001457bc:\n        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        iVar6 = iVar6 + 1;\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;\n        iVar10 = iVar10 + 0x50;\n        if (iVar8 == iVar6) goto LAB_00145b3a;\n      }\n      dVar4 = ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) = dVar4;\n      iVar9 = *(int *)(iVar3 + 0x2a8);\n      if ((*(byte *)(iVar9 + 0x10) & 2) != 0) goto LAB_001458b1;\nLAB_001457b2:\n      if ((*(byte *)(iVar9 + 0x1c) & 2) == 0) goto LAB_001457bc;\nLAB_00145986:\n      dVar4 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10) = dVar4;\n      if ((*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0) goto LAB_00145a5b;\nLAB_001457c6:\n      iVar6 = iVar6 + 1;\n      iVar10 = iVar10 + 0x50;\n    } while (iVar8 != iVar6);" do (compound_statement "{\n      while (iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0) {\n        if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;\nLAB_001458b1:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;\n        iVar9 = *(int *)(iVar3 + 0x2a8);\n        if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;\nLAB_001457bc:\n        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        iVar6 = iVar6 + 1;\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;\n        iVar10 = iVar10 + 0x50;\n        if (iVar8 == iVar6) goto LAB_00145b3a;\n      }\n      dVar4 = ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) = dVar4;\n      iVar9 = *(int *)(iVar3 + 0x2a8);\n      if ((*(byte *)(iVar9 + 0x10) & 2) != 0) goto LAB_001458b1;\nLAB_001457b2:\n      if ((*(byte *)(iVar9 + 0x1c) & 2) == 0) goto LAB_001457bc;\nLAB_00145986:\n      dVar4 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10) = dVar4;\n      if ((*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0) goto LAB_00145a5b;\nLAB_001457c6:\n      iVar6 = iVar6 + 1;\n      iVar10 = iVar10 + 0x50;\n    }" { (while_statement "while (iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0) {\n        if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;\nLAB_001458b1:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;\n        iVar9 = *(int *)(iVar3 + 0x2a8);\n        if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;\nLAB_001457bc:\n        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        iVar6 = iVar6 + 1;\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;\n        iVar10 = iVar10 + 0x50;\n        if (iVar8 == iVar6) goto LAB_00145b3a;\n      }" while (parenthesized_expression "(iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0)" ( (comma_expression "iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0" (assignment_expression "iVar9 = *(int *)(iVar3 + 0x2a8)" identifier = (pointer_expression "*(int *)(iVar3 + 0x2a8)" * (cast_expression "(int *)(iVar3 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x2a8)" ( (binary_expression "iVar3 + 0x2a8" identifier + number_literal) ))))) , (binary_expression "(*(byte *)(iVar9 + 4) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar9 + 4) & 2)" ( (binary_expression "*(byte *)(iVar9 + 4) & 2" (pointer_expression "*(byte *)(iVar9 + 4)" * (cast_expression "(byte *)(iVar9 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 4)" ( (binary_expression "iVar9 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal)) )) (compound_statement "{\n        if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;\nLAB_001458b1:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;\n        iVar9 = *(int *)(iVar3 + 0x2a8);\n        if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;\nLAB_001457bc:\n        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        iVar6 = iVar6 + 1;\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;\n        iVar10 = iVar10 + 0x50;\n        if (iVar8 == iVar6) goto LAB_00145b3a;\n      }" { (if_statement "if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;" if (parenthesized_expression "((*(byte *)(iVar9 + 0x10) & 2) == 0)" ( (binary_expression "(*(byte *)(iVar9 + 0x10) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x10) & 2)" ( (binary_expression "*(byte *)(iVar9 + 0x10) & 2" (pointer_expression "*(byte *)(iVar9 + 0x10)" * (cast_expression "(byte *)(iVar9 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x10)" ( (binary_expression "iVar9 + 0x10" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001457b2;" goto statement_identifier ;)) (labeled_statement "LAB_001458b1:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;" statement_identifier : (expression_statement "dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;" (assignment_expression "dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8" identifier = (binary_expression "ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8" (call_expression "ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10))" identifier (argument_list "((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10))" ( (binary_expression "(double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)" (binary_expression "(double)uVar1 *\n                      _DAT_002df2e0" (cast_expression "(double)uVar1" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) * (pointer_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)" * (cast_expression "(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)" ( (binary_expression "*(int *)(iVar3 + 0x28) + 0x28 + iVar10" (binary_expression "*(int *)(iVar3 + 0x28) + 0x28" (pointer_expression "*(int *)(iVar3 + 0x28)" * (cast_expression "(int *)(iVar3 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x28)" ( (binary_expression "iVar3 + 0x28" identifier + number_literal) )))) + number_literal) + identifier) ))))) ))) * (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;)) (if_statement "if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }" if (parenthesized_expression "(2 < iVar7)" ( (binary_expression "2 < iVar7" number_literal < identifier) )) (compound_statement "{\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }" { (expression_statement "dVar4 = dVar4 / (double)(int)uVar1;" (assignment_expression "dVar4 = dVar4 / (double)(int)uVar1" identifier = (binary_expression "dVar4 / (double)(int)uVar1" identifier / (cast_expression "(double)(int)uVar1" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (expression_statement "*(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;" (assignment_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4" (pointer_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)" * (cast_expression "(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)" ( (binary_expression "*(int *)(iVar3 + 0x28) + 0x28 + iVar10" (binary_expression "*(int *)(iVar3 + 0x28) + 0x28" (pointer_expression "*(int *)(iVar3 + 0x28)" * (cast_expression "(int *)(iVar3 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x28)" ( (binary_expression "iVar3 + 0x28" identifier + number_literal) )))) + number_literal) + identifier) )))) = identifier) ;) (expression_statement "iVar9 = *(int *)(iVar3 + 0x2a8);" (assignment_expression "iVar9 = *(int *)(iVar3 + 0x2a8)" identifier = (pointer_expression "*(int *)(iVar3 + 0x2a8)" * (cast_expression "(int *)(iVar3 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x2a8)" ( (binary_expression "iVar3 + 0x2a8" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;" if (parenthesized_expression "((*(byte *)(iVar9 + 0x1c) & 2) != 0)" ( (binary_expression "(*(byte *)(iVar9 + 0x1c) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x1c) & 2)" ( (binary_expression "*(byte *)(iVar9 + 0x1c) & 2" (pointer_expression "*(byte *)(iVar9 + 0x1c)" * (cast_expression "(byte *)(iVar9 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x1c)" ( (binary_expression "iVar9 + 0x1c" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00145986;" goto statement_identifier ;)) (labeled_statement "LAB_001457bc:\n        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;" statement_identifier : (if_statement "if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;" if (parenthesized_expression "((*(byte *)(iVar9 + 0x34) & 2) == 0)" ( (binary_expression "(*(byte *)(iVar9 + 0x34) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x34) & 2)" ( (binary_expression "*(byte *)(iVar9 + 0x34) & 2" (pointer_expression "*(byte *)(iVar9 + 0x34)" * (cast_expression "(byte *)(iVar9 + 0x34)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x34)" ( (binary_expression "iVar9 + 0x34" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001457c6;" goto statement_identifier ;))) (labeled_statement "LAB_00145a5b:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;" statement_identifier : (expression_statement "dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;" (assignment_expression "dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8" identifier = (binary_expression "ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8" (call_expression "ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10))" identifier (argument_list "((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10))" ( (binary_expression "(double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)" (binary_expression "(double)uVar1 *\n                      _DAT_002df2e0" (cast_expression "(double)uVar1" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) * (pointer_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)" * (cast_expression "(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)" ( (binary_expression "*(int *)(iVar3 + 0x28) + 0x40 + iVar10" (binary_expression "*(int *)(iVar3 + 0x28) + 0x40" (pointer_expression "*(int *)(iVar3 + 0x28)" * (cast_expression "(int *)(iVar3 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x28)" ( (binary_expression "iVar3 + 0x28" identifier + number_literal) )))) + number_literal) + identifier) ))))) ))) * (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;)) (if_statement "if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }" if (parenthesized_expression "(2 < iVar7)" ( (binary_expression "2 < iVar7" number_literal < identifier) )) (compound_statement "{\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }" { (expression_statement "dVar4 = dVar4 / (double)(int)uVar1;" (assignment_expression "dVar4 = dVar4 / (double)(int)uVar1" identifier = (binary_expression "dVar4 / (double)(int)uVar1" identifier / (cast_expression "(double)(int)uVar1" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "*(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;" (assignment_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4" (pointer_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)" * (cast_expression "(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)" ( (binary_expression "*(int *)(iVar3 + 0x28) + 0x40 + iVar10" (binary_expression "*(int *)(iVar3 + 0x28) + 0x40" (pointer_expression "*(int *)(iVar3 + 0x28)" * (cast_expression "(int *)(iVar3 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x28)" ( (binary_expression "iVar3 + 0x28" identifier + number_literal) )))) + number_literal) + identifier) )))) = identifier) ;) (expression_statement "iVar10 = iVar10 + 0x50;" (assignment_expression "iVar10 = iVar10 + 0x50" identifier = (binary_expression "iVar10 + 0x50" identifier + number_literal)) ;) (if_statement "if (iVar8 == iVar6) goto LAB_00145b3a;" if (parenthesized_expression "(iVar8 == iVar6)" ( (binary_expression "iVar8 == iVar6" identifier == identifier) )) (goto_statement "goto LAB_00145b3a;" goto statement_identifier ;)) })) (expression_statement "dVar4 = ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *\n              (double)DAT_002df8a8;" (assignment_expression "dVar4 = ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *\n              (double)DAT_002df8a8" identifier = (binary_expression "ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *\n              (double)DAT_002df8a8" (call_expression "ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5)" identifier (argument_list "((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5)" ( (binary_expression "(double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5" (binary_expression "(double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10)" (cast_expression "(double)uVar1" ( (type_descriptor "double" primitive_type) ) identifier) * (pointer_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10)" * (cast_expression "(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 0x28) + 0x20 + iVar10)" ( (binary_expression "*(int *)(iVar3 + 0x28) + 0x20 + iVar10" (binary_expression "*(int *)(iVar3 + 0x28) + 0x20" (pointer_expression "*(int *)(iVar3 + 0x28)" * (cast_expression "(int *)(iVar3 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x28)" ( (binary_expression "iVar3 + 0x28" identifier + number_literal) )))) + number_literal) + identifier) ))))) * identifier) ))) * (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }" if (parenthesized_expression "(2 < iVar7)" ( (binary_expression "2 < iVar7" number_literal < identifier) )) (compound_statement "{\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }" { (expression_statement "dVar4 = dVar4 / (double)(int)uVar1;" (assignment_expression "dVar4 = dVar4 / (double)(int)uVar1" identifier = (binary_expression "dVar4 / (double)(int)uVar1" identifier / (cast_expression "(double)(int)uVar1" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (expression_statement "*(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) = dVar4;" (assignment_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) = dVar4" (pointer_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10)" * (cast_expression "(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 0x28) + 0x20 + iVar10)" ( (binary_expression "*(int *)(iVar3 + 0x28) + 0x20 + iVar10" (binary_expression "*(int *)(iVar3 + 0x28) + 0x20" (pointer_expression "*(int *)(iVar3 + 0x28)" * (cast_expression "(int *)(iVar3 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x28)" ( (binary_expression "iVar3 + 0x28" identifier + number_literal) )))) + number_literal) + identifier) )))) = identifier) ;) (expression_statement "iVar9 = *(int *)(iVar3 + 0x2a8);" (assignment_expression "iVar9 = *(int *)(iVar3 + 0x2a8)" identifier = (pointer_expression "*(int *)(iVar3 + 0x2a8)" * (cast_expression "(int *)(iVar3 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x2a8)" ( (binary_expression "iVar3 + 0x2a8" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(iVar9 + 0x10) & 2) != 0) goto LAB_001458b1;" if (parenthesized_expression "((*(byte *)(iVar9 + 0x10) & 2) != 0)" ( (binary_expression "(*(byte *)(iVar9 + 0x10) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x10) & 2)" ( (binary_expression "*(byte *)(iVar9 + 0x10) & 2" (pointer_expression "*(byte *)(iVar9 + 0x10)" * (cast_expression "(byte *)(iVar9 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x10)" ( (binary_expression "iVar9 + 0x10" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_001458b1;" goto statement_identifier ;)) (labeled_statement "LAB_001457b2:\n      if ((*(byte *)(iVar9 + 0x1c) & 2) == 0) goto LAB_001457bc;" statement_identifier : (if_statement "if ((*(byte *)(iVar9 + 0x1c) & 2) == 0) goto LAB_001457bc;" if (parenthesized_expression "((*(byte *)(iVar9 + 0x1c) & 2) == 0)" ( (binary_expression "(*(byte *)(iVar9 + 0x1c) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x1c) & 2)" ( (binary_expression "*(byte *)(iVar9 + 0x1c) & 2" (pointer_expression "*(byte *)(iVar9 + 0x1c)" * (cast_expression "(byte *)(iVar9 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x1c)" ( (binary_expression "iVar9 + 0x1c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001457bc;" goto statement_identifier ;))) (labeled_statement "LAB_00145986:\n      dVar4 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8;" statement_identifier : (expression_statement "dVar4 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8;" (assignment_expression "dVar4 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8" identifier = (binary_expression "ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8" (call_expression "ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10))" identifier (argument_list "((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10))" ( (binary_expression "(double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)" (binary_expression "(double)uVar1 *\n                    _DAT_002df2e0" (cast_expression "(double)uVar1" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) * (pointer_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)" * (cast_expression "(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)" ( (binary_expression "*(int *)(iVar3 + 0x28) + 0x30 + iVar10" (binary_expression "*(int *)(iVar3 + 0x28) + 0x30" (pointer_expression "*(int *)(iVar3 + 0x28)" * (cast_expression "(int *)(iVar3 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x28)" ( (binary_expression "iVar3 + 0x28" identifier + number_literal) )))) + number_literal) + identifier) ))))) ))) * (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;)) (if_statement "if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }" if (parenthesized_expression "(2 < iVar7)" ( (binary_expression "2 < iVar7" number_literal < identifier) )) (compound_statement "{\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }" { (expression_statement "dVar4 = dVar4 / (double)(int)uVar1;" (assignment_expression "dVar4 = dVar4 / (double)(int)uVar1" identifier = (binary_expression "dVar4 / (double)(int)uVar1" identifier / (cast_expression "(double)(int)uVar1" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (expression_statement "*(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10) = dVar4;" (assignment_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10) = dVar4" (pointer_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)" * (cast_expression "(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)" ( (binary_expression "*(int *)(iVar3 + 0x28) + 0x30 + iVar10" (binary_expression "*(int *)(iVar3 + 0x28) + 0x30" (pointer_expression "*(int *)(iVar3 + 0x28)" * (cast_expression "(int *)(iVar3 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x28)" ( (binary_expression "iVar3 + 0x28" identifier + number_literal) )))) + number_literal) + identifier) )))) = identifier) ;) (if_statement "if ((*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0) goto LAB_00145a5b;" if (parenthesized_expression "((*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0)" ( (binary_expression "(*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0" (parenthesized_expression "(*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2)" ( (binary_expression "*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2" (pointer_expression "*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34)" * (cast_expression "(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 0x2a8) + 0x34)" ( (binary_expression "*(int *)(iVar3 + 0x2a8) + 0x34" (pointer_expression "*(int *)(iVar3 + 0x2a8)" * (cast_expression "(int *)(iVar3 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x2a8)" ( (binary_expression "iVar3 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00145a5b;" goto statement_identifier ;)) (labeled_statement "LAB_001457c6:\n      iVar6 = iVar6 + 1;" statement_identifier : (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;)) (expression_statement "iVar10 = iVar10 + 0x50;" (assignment_expression "iVar10 = iVar10 + 0x50" identifier = (binary_expression "iVar10 + 0x50" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar8 != iVar6)" ( (binary_expression "iVar8 != iVar6" identifier != identifier) )) ;) })) (labeled_statement "LAB_00145b3a:\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" statement_identifier : (if_statement "if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" if (parenthesized_expression "(iVar2 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar2 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) comment (expression_statement "FUN_002decd0();" (call_expression "FUN_002decd0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\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/* DWARF original prototype: void PosterizeImage._omp_fn.1(anon_struct_8_2_5938f0ef * param_0) */\n\nvoid __thiscall PosterizeImage__omp_fn_1(anon_struct_8_2_5938f0ef *this)\n\n{\n  uint uVar1;\n  int iVar2;\n  Image *pIVar3;\n  size_t sVar4;\n  double dVar5;\n  double dVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  PixelChannelMap *pPVar10;\n  int in_GS_OFFSET;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  pIVar3 = this->image;\n  iVar7 = omp_get_num_threads();\n  iVar8 = omp_get_thread_num();\n  dVar6 = _DAT_002df2e0;\n  iVar9 = (int)pIVar3->colors / iVar7;\n  iVar7 = (int)pIVar3->colors % iVar7;\n  if (iVar8 < iVar7) {\n    iVar9 = iVar9 + 1;\n    iVar7 = 0;\n  }\n  iVar7 = iVar7 + iVar8 * iVar9;\n  iVar9 = iVar9 + iVar7;\n  if (iVar7 < iVar9) {\n    sVar4 = this->levels;\n    iVar8 = iVar7 * 0x50;\n    uVar1 = sVar4 - 1;\n    do {\n      while (pPVar10 = pIVar3->channel_map,\n            (pPVar10->traits & UpdatePixelTrait) == UndefinedPixelTrait) {\n        if ((pPVar10[1].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457b2;\nLAB_001458b1:\n        dVar5 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->green + iVar8)) *\n                (double)DAT_002df8a8;\n        if (2 < (int)sVar4) {\n          dVar5 = dVar5 / (double)(int)uVar1;\n        }\n        *(double *)((int)&pIVar3->colormap->green + iVar8) = dVar5;\n        pPVar10 = pIVar3->channel_map;\n        if ((pPVar10[2].traits & UpdatePixelTrait) != UndefinedPixelTrait) goto LAB_00145986;\nLAB_001457bc:\n        if ((pPVar10[4].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar5 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->alpha + iVar8)) *\n                (double)DAT_002df8a8;\n        if (2 < (int)sVar4) {\n          dVar5 = dVar5 / (double)(int)uVar1;\n        }\n        iVar7 = iVar7 + 1;\n        *(double *)((int)&pIVar3->colormap->alpha + iVar8) = dVar5;\n        iVar8 = iVar8 + 0x50;\n        if (iVar9 == iVar7) goto LAB_00145b3a;\n      }\n      dVar5 = ROUND((double)uVar1 * *(double *)((int)&pIVar3->colormap->red + iVar8) * dVar6) *\n              (double)DAT_002df8a8;\n      if (2 < (int)sVar4) {\n        dVar5 = dVar5 / (double)(int)uVar1;\n      }\n      *(double *)((int)&pIVar3->colormap->red + iVar8) = dVar5;\n      pPVar10 = pIVar3->channel_map;\n      if ((pPVar10[1].traits & UpdatePixelTrait) != UndefinedPixelTrait) goto LAB_001458b1;\nLAB_001457b2:\n      if ((pPVar10[2].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457bc;\nLAB_00145986:\n      dVar5 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->blue + iVar8)) *\n              (double)DAT_002df8a8;\n      if (2 < (int)sVar4) {\n        dVar5 = dVar5 / (double)(int)uVar1;\n      }\n      *(double *)((int)&pIVar3->colormap->blue + iVar8) = dVar5;\n      if ((pIVar3->channel_map[4].traits & UpdatePixelTrait) != UndefinedPixelTrait)\n      goto LAB_00145a5b;\nLAB_001457c6:\n      iVar7 = iVar7 + 1;\n      iVar8 = iVar8 + 0x50;\n    } while (iVar9 != iVar7);\n  }\nLAB_00145b3a:\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}\n\n" comment comment comment comment comment comment comment (function_definition "void __thiscall PosterizeImage__omp_fn_1(anon_struct_8_2_5938f0ef *this)\n\n{\n  uint uVar1;\n  int iVar2;\n  Image *pIVar3;\n  size_t sVar4;\n  double dVar5;\n  double dVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  PixelChannelMap *pPVar10;\n  int in_GS_OFFSET;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  pIVar3 = this->image;\n  iVar7 = omp_get_num_threads();\n  iVar8 = omp_get_thread_num();\n  dVar6 = _DAT_002df2e0;\n  iVar9 = (int)pIVar3->colors / iVar7;\n  iVar7 = (int)pIVar3->colors % iVar7;\n  if (iVar8 < iVar7) {\n    iVar9 = iVar9 + 1;\n    iVar7 = 0;\n  }\n  iVar7 = iVar7 + iVar8 * iVar9;\n  iVar9 = iVar9 + iVar7;\n  if (iVar7 < iVar9) {\n    sVar4 = this->levels;\n    iVar8 = iVar7 * 0x50;\n    uVar1 = sVar4 - 1;\n    do {\n      while (pPVar10 = pIVar3->channel_map,\n            (pPVar10->traits & UpdatePixelTrait) == UndefinedPixelTrait) {\n        if ((pPVar10[1].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457b2;\nLAB_001458b1:\n        dVar5 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->green + iVar8)) *\n                (double)DAT_002df8a8;\n        if (2 < (int)sVar4) {\n          dVar5 = dVar5 / (double)(int)uVar1;\n        }\n        *(double *)((int)&pIVar3->colormap->green + iVar8) = dVar5;\n        pPVar10 = pIVar3->channel_map;\n        if ((pPVar10[2].traits & UpdatePixelTrait) != UndefinedPixelTrait) goto LAB_00145986;\nLAB_001457bc:\n        if ((pPVar10[4].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar5 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->alpha + iVar8)) *\n                (double)DAT_002df8a8;\n        if (2 < (int)sVar4) {\n          dVar5 = dVar5 / (double)(int)uVar1;\n        }\n        iVar7 = iVar7 + 1;\n        *(double *)((int)&pIVar3->colormap->alpha + iVar8) = dVar5;\n        iVar8 = iVar8 + 0x50;\n        if (iVar9 == iVar7) goto LAB_00145b3a;\n      }\n      dVar5 = ROUND((double)uVar1 * *(double *)((int)&pIVar3->colormap->red + iVar8) * dVar6) *\n              (double)DAT_002df8a8;\n      if (2 < (int)sVar4) {\n        dVar5 = dVar5 / (double)(int)uVar1;\n      }\n      *(double *)((int)&pIVar3->colormap->red + iVar8) = dVar5;\n      pPVar10 = pIVar3->channel_map;\n      if ((pPVar10[1].traits & UpdatePixelTrait) != UndefinedPixelTrait) goto LAB_001458b1;\nLAB_001457b2:\n      if ((pPVar10[2].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457bc;\nLAB_00145986:\n      dVar5 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->blue + iVar8)) *\n              (double)DAT_002df8a8;\n      if (2 < (int)sVar4) {\n        dVar5 = dVar5 / (double)(int)uVar1;\n      }\n      *(double *)((int)&pIVar3->colormap->blue + iVar8) = dVar5;\n      if ((pIVar3->channel_map[4].traits & UpdatePixelTrait) != UndefinedPixelTrait)\n      goto LAB_00145a5b;\nLAB_001457c6:\n      iVar7 = iVar7 + 1;\n      iVar8 = iVar8 + 0x50;\n    } while (iVar9 != iVar7);\n  }\nLAB_00145b3a:\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (function_declarator "PosterizeImage__omp_fn_1(anon_struct_8_2_5938f0ef *this)" identifier (parameter_list "(anon_struct_8_2_5938f0ef *this)" ( (parameter_declaration "anon_struct_8_2_5938f0ef *this" type_identifier (pointer_declarator "*this" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  Image *pIVar3;\n  size_t sVar4;\n  double dVar5;\n  double dVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  PixelChannelMap *pPVar10;\n  int in_GS_OFFSET;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  pIVar3 = this->image;\n  iVar7 = omp_get_num_threads();\n  iVar8 = omp_get_thread_num();\n  dVar6 = _DAT_002df2e0;\n  iVar9 = (int)pIVar3->colors / iVar7;\n  iVar7 = (int)pIVar3->colors % iVar7;\n  if (iVar8 < iVar7) {\n    iVar9 = iVar9 + 1;\n    iVar7 = 0;\n  }\n  iVar7 = iVar7 + iVar8 * iVar9;\n  iVar9 = iVar9 + iVar7;\n  if (iVar7 < iVar9) {\n    sVar4 = this->levels;\n    iVar8 = iVar7 * 0x50;\n    uVar1 = sVar4 - 1;\n    do {\n      while (pPVar10 = pIVar3->channel_map,\n            (pPVar10->traits & UpdatePixelTrait) == UndefinedPixelTrait) {\n        if ((pPVar10[1].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457b2;\nLAB_001458b1:\n        dVar5 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->green + iVar8)) *\n                (double)DAT_002df8a8;\n        if (2 < (int)sVar4) {\n          dVar5 = dVar5 / (double)(int)uVar1;\n        }\n        *(double *)((int)&pIVar3->colormap->green + iVar8) = dVar5;\n        pPVar10 = pIVar3->channel_map;\n        if ((pPVar10[2].traits & UpdatePixelTrait) != UndefinedPixelTrait) goto LAB_00145986;\nLAB_001457bc:\n        if ((pPVar10[4].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar5 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->alpha + iVar8)) *\n                (double)DAT_002df8a8;\n        if (2 < (int)sVar4) {\n          dVar5 = dVar5 / (double)(int)uVar1;\n        }\n        iVar7 = iVar7 + 1;\n        *(double *)((int)&pIVar3->colormap->alpha + iVar8) = dVar5;\n        iVar8 = iVar8 + 0x50;\n        if (iVar9 == iVar7) goto LAB_00145b3a;\n      }\n      dVar5 = ROUND((double)uVar1 * *(double *)((int)&pIVar3->colormap->red + iVar8) * dVar6) *\n              (double)DAT_002df8a8;\n      if (2 < (int)sVar4) {\n        dVar5 = dVar5 / (double)(int)uVar1;\n      }\n      *(double *)((int)&pIVar3->colormap->red + iVar8) = dVar5;\n      pPVar10 = pIVar3->channel_map;\n      if ((pPVar10[1].traits & UpdatePixelTrait) != UndefinedPixelTrait) goto LAB_001458b1;\nLAB_001457b2:\n      if ((pPVar10[2].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457bc;\nLAB_00145986:\n      dVar5 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->blue + iVar8)) *\n              (double)DAT_002df8a8;\n      if (2 < (int)sVar4) {\n        dVar5 = dVar5 / (double)(int)uVar1;\n      }\n      *(double *)((int)&pIVar3->colormap->blue + iVar8) = dVar5;\n      if ((pIVar3->channel_map[4].traits & UpdatePixelTrait) != UndefinedPixelTrait)\n      goto LAB_00145a5b;\nLAB_001457c6:\n      iVar7 = iVar7 + 1;\n      iVar8 = iVar8 + 0x50;\n    } while (iVar9 != iVar7);\n  }\nLAB_00145b3a:\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "Image *pIVar3;" type_identifier (pointer_declarator "*pIVar3" * identifier) ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "double dVar5;" primitive_type identifier ;) (declaration "double dVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "PixelChannelMap *pPVar10;" type_identifier (pointer_declarator "*pPVar10" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (expression_statement "iVar2 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar2 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "pIVar3 = this->image;" (assignment_expression "pIVar3 = this->image" identifier = (field_expression "this->image" identifier -> field_identifier)) ;) (expression_statement "iVar7 = omp_get_num_threads();" (assignment_expression "iVar7 = omp_get_num_threads()" identifier = (call_expression "omp_get_num_threads()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar8 = omp_get_thread_num();" (assignment_expression "iVar8 = omp_get_thread_num()" identifier = (call_expression "omp_get_thread_num()" identifier (argument_list "()" ( )))) ;) (expression_statement "dVar6 = _DAT_002df2e0;" (assignment_expression "dVar6 = _DAT_002df2e0" identifier = identifier) ;) (expression_statement "iVar9 = (int)pIVar3->colors / iVar7;" (assignment_expression "iVar9 = (int)pIVar3->colors / iVar7" identifier = (binary_expression "(int)pIVar3->colors / iVar7" (cast_expression "(int)pIVar3->colors" ( (type_descriptor "int" primitive_type) ) (field_expression "pIVar3->colors" identifier -> field_identifier)) / identifier)) ;) (expression_statement "iVar7 = (int)pIVar3->colors % iVar7;" (assignment_expression "iVar7 = (int)pIVar3->colors % iVar7" identifier = (binary_expression "(int)pIVar3->colors % iVar7" (cast_expression "(int)pIVar3->colors" ( (type_descriptor "int" primitive_type) ) (field_expression "pIVar3->colors" identifier -> field_identifier)) % identifier)) ;) (if_statement "if (iVar8 < iVar7) {\n    iVar9 = iVar9 + 1;\n    iVar7 = 0;\n  }" if (parenthesized_expression "(iVar8 < iVar7)" ( (binary_expression "iVar8 < iVar7" identifier < identifier) )) (compound_statement "{\n    iVar9 = iVar9 + 1;\n    iVar7 = 0;\n  }" { (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) })) (expression_statement "iVar7 = iVar7 + iVar8 * iVar9;" (assignment_expression "iVar7 = iVar7 + iVar8 * iVar9" identifier = (binary_expression "iVar7 + iVar8 * iVar9" identifier + (binary_expression "iVar8 * iVar9" identifier * identifier))) ;) (expression_statement "iVar9 = iVar9 + iVar7;" (assignment_expression "iVar9 = iVar9 + iVar7" identifier = (binary_expression "iVar9 + iVar7" identifier + identifier)) ;) (if_statement "if (iVar7 < iVar9) {\n    sVar4 = this->levels;\n    iVar8 = iVar7 * 0x50;\n    uVar1 = sVar4 - 1;\n    do {\n      while (pPVar10 = pIVar3->channel_map,\n            (pPVar10->traits & UpdatePixelTrait) == UndefinedPixelTrait) {\n        if ((pPVar10[1].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457b2;\nLAB_001458b1:\n        dVar5 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->green + iVar8)) *\n                (double)DAT_002df8a8;\n        if (2 < (int)sVar4) {\n          dVar5 = dVar5 / (double)(int)uVar1;\n        }\n        *(double *)((int)&pIVar3->colormap->green + iVar8) = dVar5;\n        pPVar10 = pIVar3->channel_map;\n        if ((pPVar10[2].traits & UpdatePixelTrait) != UndefinedPixelTrait) goto LAB_00145986;\nLAB_001457bc:\n        if ((pPVar10[4].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar5 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->alpha + iVar8)) *\n                (double)DAT_002df8a8;\n        if (2 < (int)sVar4) {\n          dVar5 = dVar5 / (double)(int)uVar1;\n        }\n        iVar7 = iVar7 + 1;\n        *(double *)((int)&pIVar3->colormap->alpha + iVar8) = dVar5;\n        iVar8 = iVar8 + 0x50;\n        if (iVar9 == iVar7) goto LAB_00145b3a;\n      }\n      dVar5 = ROUND((double)uVar1 * *(double *)((int)&pIVar3->colormap->red + iVar8) * dVar6) *\n              (double)DAT_002df8a8;\n      if (2 < (int)sVar4) {\n        dVar5 = dVar5 / (double)(int)uVar1;\n      }\n      *(double *)((int)&pIVar3->colormap->red + iVar8) = dVar5;\n      pPVar10 = pIVar3->channel_map;\n      if ((pPVar10[1].traits & UpdatePixelTrait) != UndefinedPixelTrait) goto LAB_001458b1;\nLAB_001457b2:\n      if ((pPVar10[2].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457bc;\nLAB_00145986:\n      dVar5 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->blue + iVar8)) *\n              (double)DAT_002df8a8;\n      if (2 < (int)sVar4) {\n        dVar5 = dVar5 / (double)(int)uVar1;\n      }\n      *(double *)((int)&pIVar3->colormap->blue + iVar8) = dVar5;\n      if ((pIVar3->channel_map[4].traits & UpdatePixelTrait) != UndefinedPixelTrait)\n      goto LAB_00145a5b;\nLAB_001457c6:\n      iVar7 = iVar7 + 1;\n      iVar8 = iVar8 + 0x50;\n    } while (iVar9 != iVar7);\n  }" if (parenthesized_expression "(iVar7 < iVar9)" ( (binary_expression "iVar7 < iVar9" identifier < identifier) )) (compound_statement "{\n    sVar4 = this->levels;\n    iVar8 = iVar7 * 0x50;\n    uVar1 = sVar4 - 1;\n    do {\n      while (pPVar10 = pIVar3->channel_map,\n            (pPVar10->traits & UpdatePixelTrait) == UndefinedPixelTrait) {\n        if ((pPVar10[1].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457b2;\nLAB_001458b1:\n        dVar5 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->green + iVar8)) *\n                (double)DAT_002df8a8;\n        if (2 < (int)sVar4) {\n          dVar5 = dVar5 / (double)(int)uVar1;\n        }\n        *(double *)((int)&pIVar3->colormap->green + iVar8) = dVar5;\n        pPVar10 = pIVar3->channel_map;\n        if ((pPVar10[2].traits & UpdatePixelTrait) != UndefinedPixelTrait) goto LAB_00145986;\nLAB_001457bc:\n        if ((pPVar10[4].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar5 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->alpha + iVar8)) *\n                (double)DAT_002df8a8;\n        if (2 < (int)sVar4) {\n          dVar5 = dVar5 / (double)(int)uVar1;\n        }\n        iVar7 = iVar7 + 1;\n        *(double *)((int)&pIVar3->colormap->alpha + iVar8) = dVar5;\n        iVar8 = iVar8 + 0x50;\n        if (iVar9 == iVar7) goto LAB_00145b3a;\n      }\n      dVar5 = ROUND((double)uVar1 * *(double *)((int)&pIVar3->colormap->red + iVar8) * dVar6) *\n              (double)DAT_002df8a8;\n      if (2 < (int)sVar4) {\n        dVar5 = dVar5 / (double)(int)uVar1;\n      }\n      *(double *)((int)&pIVar3->colormap->red + iVar8) = dVar5;\n      pPVar10 = pIVar3->channel_map;\n      if ((pPVar10[1].traits & UpdatePixelTrait) != UndefinedPixelTrait) goto LAB_001458b1;\nLAB_001457b2:\n      if ((pPVar10[2].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457bc;\nLAB_00145986:\n      dVar5 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->blue + iVar8)) *\n              (double)DAT_002df8a8;\n      if (2 < (int)sVar4) {\n        dVar5 = dVar5 / (double)(int)uVar1;\n      }\n      *(double *)((int)&pIVar3->colormap->blue + iVar8) = dVar5;\n      if ((pIVar3->channel_map[4].traits & UpdatePixelTrait) != UndefinedPixelTrait)\n      goto LAB_00145a5b;\nLAB_001457c6:\n      iVar7 = iVar7 + 1;\n      iVar8 = iVar8 + 0x50;\n    } while (iVar9 != iVar7);\n  }" { (expression_statement "sVar4 = this->levels;" (assignment_expression "sVar4 = this->levels" identifier = (field_expression "this->levels" identifier -> field_identifier)) ;) (expression_statement "iVar8 = iVar7 * 0x50;" (assignment_expression "iVar8 = iVar7 * 0x50" identifier = (binary_expression "iVar7 * 0x50" identifier * number_literal)) ;) (expression_statement "uVar1 = sVar4 - 1;" (assignment_expression "uVar1 = sVar4 - 1" identifier = (binary_expression "sVar4 - 1" identifier - number_literal)) ;) (do_statement "do {\n      while (pPVar10 = pIVar3->channel_map,\n            (pPVar10->traits & UpdatePixelTrait) == UndefinedPixelTrait) {\n        if ((pPVar10[1].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457b2;\nLAB_001458b1:\n        dVar5 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->green + iVar8)) *\n                (double)DAT_002df8a8;\n        if (2 < (int)sVar4) {\n          dVar5 = dVar5 / (double)(int)uVar1;\n        }\n        *(double *)((int)&pIVar3->colormap->green + iVar8) = dVar5;\n        pPVar10 = pIVar3->channel_map;\n        if ((pPVar10[2].traits & UpdatePixelTrait) != UndefinedPixelTrait) goto LAB_00145986;\nLAB_001457bc:\n        if ((pPVar10[4].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar5 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->alpha + iVar8)) *\n                (double)DAT_002df8a8;\n        if (2 < (int)sVar4) {\n          dVar5 = dVar5 / (double)(int)uVar1;\n        }\n        iVar7 = iVar7 + 1;\n        *(double *)((int)&pIVar3->colormap->alpha + iVar8) = dVar5;\n        iVar8 = iVar8 + 0x50;\n        if (iVar9 == iVar7) goto LAB_00145b3a;\n      }\n      dVar5 = ROUND((double)uVar1 * *(double *)((int)&pIVar3->colormap->red + iVar8) * dVar6) *\n              (double)DAT_002df8a8;\n      if (2 < (int)sVar4) {\n        dVar5 = dVar5 / (double)(int)uVar1;\n      }\n      *(double *)((int)&pIVar3->colormap->red + iVar8) = dVar5;\n      pPVar10 = pIVar3->channel_map;\n      if ((pPVar10[1].traits & UpdatePixelTrait) != UndefinedPixelTrait) goto LAB_001458b1;\nLAB_001457b2:\n      if ((pPVar10[2].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457bc;\nLAB_00145986:\n      dVar5 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->blue + iVar8)) *\n              (double)DAT_002df8a8;\n      if (2 < (int)sVar4) {\n        dVar5 = dVar5 / (double)(int)uVar1;\n      }\n      *(double *)((int)&pIVar3->colormap->blue + iVar8) = dVar5;\n      if ((pIVar3->channel_map[4].traits & UpdatePixelTrait) != UndefinedPixelTrait)\n      goto LAB_00145a5b;\nLAB_001457c6:\n      iVar7 = iVar7 + 1;\n      iVar8 = iVar8 + 0x50;\n    } while (iVar9 != iVar7);" do (compound_statement "{\n      while (pPVar10 = pIVar3->channel_map,\n            (pPVar10->traits & UpdatePixelTrait) == UndefinedPixelTrait) {\n        if ((pPVar10[1].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457b2;\nLAB_001458b1:\n        dVar5 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->green + iVar8)) *\n                (double)DAT_002df8a8;\n        if (2 < (int)sVar4) {\n          dVar5 = dVar5 / (double)(int)uVar1;\n        }\n        *(double *)((int)&pIVar3->colormap->green + iVar8) = dVar5;\n        pPVar10 = pIVar3->channel_map;\n        if ((pPVar10[2].traits & UpdatePixelTrait) != UndefinedPixelTrait) goto LAB_00145986;\nLAB_001457bc:\n        if ((pPVar10[4].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar5 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->alpha + iVar8)) *\n                (double)DAT_002df8a8;\n        if (2 < (int)sVar4) {\n          dVar5 = dVar5 / (double)(int)uVar1;\n        }\n        iVar7 = iVar7 + 1;\n        *(double *)((int)&pIVar3->colormap->alpha + iVar8) = dVar5;\n        iVar8 = iVar8 + 0x50;\n        if (iVar9 == iVar7) goto LAB_00145b3a;\n      }\n      dVar5 = ROUND((double)uVar1 * *(double *)((int)&pIVar3->colormap->red + iVar8) * dVar6) *\n              (double)DAT_002df8a8;\n      if (2 < (int)sVar4) {\n        dVar5 = dVar5 / (double)(int)uVar1;\n      }\n      *(double *)((int)&pIVar3->colormap->red + iVar8) = dVar5;\n      pPVar10 = pIVar3->channel_map;\n      if ((pPVar10[1].traits & UpdatePixelTrait) != UndefinedPixelTrait) goto LAB_001458b1;\nLAB_001457b2:\n      if ((pPVar10[2].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457bc;\nLAB_00145986:\n      dVar5 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->blue + iVar8)) *\n              (double)DAT_002df8a8;\n      if (2 < (int)sVar4) {\n        dVar5 = dVar5 / (double)(int)uVar1;\n      }\n      *(double *)((int)&pIVar3->colormap->blue + iVar8) = dVar5;\n      if ((pIVar3->channel_map[4].traits & UpdatePixelTrait) != UndefinedPixelTrait)\n      goto LAB_00145a5b;\nLAB_001457c6:\n      iVar7 = iVar7 + 1;\n      iVar8 = iVar8 + 0x50;\n    }" { (while_statement "while (pPVar10 = pIVar3->channel_map,\n            (pPVar10->traits & UpdatePixelTrait) == UndefinedPixelTrait) {\n        if ((pPVar10[1].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457b2;\nLAB_001458b1:\n        dVar5 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->green + iVar8)) *\n                (double)DAT_002df8a8;\n        if (2 < (int)sVar4) {\n          dVar5 = dVar5 / (double)(int)uVar1;\n        }\n        *(double *)((int)&pIVar3->colormap->green + iVar8) = dVar5;\n        pPVar10 = pIVar3->channel_map;\n        if ((pPVar10[2].traits & UpdatePixelTrait) != UndefinedPixelTrait) goto LAB_00145986;\nLAB_001457bc:\n        if ((pPVar10[4].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar5 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->alpha + iVar8)) *\n                (double)DAT_002df8a8;\n        if (2 < (int)sVar4) {\n          dVar5 = dVar5 / (double)(int)uVar1;\n        }\n        iVar7 = iVar7 + 1;\n        *(double *)((int)&pIVar3->colormap->alpha + iVar8) = dVar5;\n        iVar8 = iVar8 + 0x50;\n        if (iVar9 == iVar7) goto LAB_00145b3a;\n      }" while (parenthesized_expression "(pPVar10 = pIVar3->channel_map,\n            (pPVar10->traits & UpdatePixelTrait) == UndefinedPixelTrait)" ( (comma_expression "pPVar10 = pIVar3->channel_map,\n            (pPVar10->traits & UpdatePixelTrait) == UndefinedPixelTrait" (assignment_expression "pPVar10 = pIVar3->channel_map" identifier = (field_expression "pIVar3->channel_map" identifier -> field_identifier)) , (binary_expression "(pPVar10->traits & UpdatePixelTrait) == UndefinedPixelTrait" (parenthesized_expression "(pPVar10->traits & UpdatePixelTrait)" ( (binary_expression "pPVar10->traits & UpdatePixelTrait" (field_expression "pPVar10->traits" identifier -> field_identifier) & identifier) )) == identifier)) )) (compound_statement "{\n        if ((pPVar10[1].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457b2;\nLAB_001458b1:\n        dVar5 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->green + iVar8)) *\n                (double)DAT_002df8a8;\n        if (2 < (int)sVar4) {\n          dVar5 = dVar5 / (double)(int)uVar1;\n        }\n        *(double *)((int)&pIVar3->colormap->green + iVar8) = dVar5;\n        pPVar10 = pIVar3->channel_map;\n        if ((pPVar10[2].traits & UpdatePixelTrait) != UndefinedPixelTrait) goto LAB_00145986;\nLAB_001457bc:\n        if ((pPVar10[4].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar5 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->alpha + iVar8)) *\n                (double)DAT_002df8a8;\n        if (2 < (int)sVar4) {\n          dVar5 = dVar5 / (double)(int)uVar1;\n        }\n        iVar7 = iVar7 + 1;\n        *(double *)((int)&pIVar3->colormap->alpha + iVar8) = dVar5;\n        iVar8 = iVar8 + 0x50;\n        if (iVar9 == iVar7) goto LAB_00145b3a;\n      }" { (if_statement "if ((pPVar10[1].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457b2;" if (parenthesized_expression "((pPVar10[1].traits & UpdatePixelTrait) == UndefinedPixelTrait)" ( (binary_expression "(pPVar10[1].traits & UpdatePixelTrait) == UndefinedPixelTrait" (parenthesized_expression "(pPVar10[1].traits & UpdatePixelTrait)" ( (binary_expression "pPVar10[1].traits & UpdatePixelTrait" (field_expression "pPVar10[1].traits" (subscript_expression "pPVar10[1]" identifier [ number_literal ]) . field_identifier) & identifier) )) == identifier) )) (goto_statement "goto LAB_001457b2;" goto statement_identifier ;)) (labeled_statement "LAB_001458b1:\n        dVar5 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->green + iVar8)) *\n                (double)DAT_002df8a8;" statement_identifier : (expression_statement "dVar5 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->green + iVar8)) *\n                (double)DAT_002df8a8;" (assignment_expression "dVar5 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->green + iVar8)) *\n                (double)DAT_002df8a8" identifier = (binary_expression "ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->green + iVar8)) *\n                (double)DAT_002df8a8" (call_expression "ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->green + iVar8))" identifier (argument_list "((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->green + iVar8))" ( (binary_expression "(double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->green + iVar8)" (binary_expression "(double)uVar1 *\n                      _DAT_002df2e0" (cast_expression "(double)uVar1" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) * (pointer_expression "*(double *)((int)&pIVar3->colormap->green + iVar8)" * (cast_expression "(double *)((int)&pIVar3->colormap->green + iVar8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pIVar3->colormap->green + iVar8)" ( (binary_expression "(int)&pIVar3->colormap->green + iVar8" (cast_expression "(int)&pIVar3->colormap->green" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pIVar3->colormap->green" & (field_expression "pIVar3->colormap->green" (field_expression "pIVar3->colormap" identifier -> field_identifier) -> field_identifier))) + identifier) ))))) ))) * (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;)) (if_statement "if (2 < (int)sVar4) {\n          dVar5 = dVar5 / (double)(int)uVar1;\n        }" if (parenthesized_expression "(2 < (int)sVar4)" ( (binary_expression "2 < (int)sVar4" number_literal < (cast_expression "(int)sVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          dVar5 = dVar5 / (double)(int)uVar1;\n        }" { (expression_statement "dVar5 = dVar5 / (double)(int)uVar1;" (assignment_expression "dVar5 = dVar5 / (double)(int)uVar1" identifier = (binary_expression "dVar5 / (double)(int)uVar1" identifier / (cast_expression "(double)(int)uVar1" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (expression_statement "*(double *)((int)&pIVar3->colormap->green + iVar8) = dVar5;" (assignment_expression "*(double *)((int)&pIVar3->colormap->green + iVar8) = dVar5" (pointer_expression "*(double *)((int)&pIVar3->colormap->green + iVar8)" * (cast_expression "(double *)((int)&pIVar3->colormap->green + iVar8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pIVar3->colormap->green + iVar8)" ( (binary_expression "(int)&pIVar3->colormap->green + iVar8" (cast_expression "(int)&pIVar3->colormap->green" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pIVar3->colormap->green" & (field_expression "pIVar3->colormap->green" (field_expression "pIVar3->colormap" identifier -> field_identifier) -> field_identifier))) + identifier) )))) = identifier) ;) (expression_statement "pPVar10 = pIVar3->channel_map;" (assignment_expression "pPVar10 = pIVar3->channel_map" identifier = (field_expression "pIVar3->channel_map" identifier -> field_identifier)) ;) (if_statement "if ((pPVar10[2].traits & UpdatePixelTrait) != UndefinedPixelTrait) goto LAB_00145986;" if (parenthesized_expression "((pPVar10[2].traits & UpdatePixelTrait) != UndefinedPixelTrait)" ( (binary_expression "(pPVar10[2].traits & UpdatePixelTrait) != UndefinedPixelTrait" (parenthesized_expression "(pPVar10[2].traits & UpdatePixelTrait)" ( (binary_expression "pPVar10[2].traits & UpdatePixelTrait" (field_expression "pPVar10[2].traits" (subscript_expression "pPVar10[2]" identifier [ number_literal ]) . field_identifier) & identifier) )) != identifier) )) (goto_statement "goto LAB_00145986;" goto statement_identifier ;)) (labeled_statement "LAB_001457bc:\n        if ((pPVar10[4].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457c6;" statement_identifier : (if_statement "if ((pPVar10[4].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457c6;" if (parenthesized_expression "((pPVar10[4].traits & UpdatePixelTrait) == UndefinedPixelTrait)" ( (binary_expression "(pPVar10[4].traits & UpdatePixelTrait) == UndefinedPixelTrait" (parenthesized_expression "(pPVar10[4].traits & UpdatePixelTrait)" ( (binary_expression "pPVar10[4].traits & UpdatePixelTrait" (field_expression "pPVar10[4].traits" (subscript_expression "pPVar10[4]" identifier [ number_literal ]) . field_identifier) & identifier) )) == identifier) )) (goto_statement "goto LAB_001457c6;" goto statement_identifier ;))) (labeled_statement "LAB_00145a5b:\n        dVar5 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->alpha + iVar8)) *\n                (double)DAT_002df8a8;" statement_identifier : (expression_statement "dVar5 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->alpha + iVar8)) *\n                (double)DAT_002df8a8;" (assignment_expression "dVar5 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->alpha + iVar8)) *\n                (double)DAT_002df8a8" identifier = (binary_expression "ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->alpha + iVar8)) *\n                (double)DAT_002df8a8" (call_expression "ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->alpha + iVar8))" identifier (argument_list "((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->alpha + iVar8))" ( (binary_expression "(double)uVar1 *\n                      _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->alpha + iVar8)" (binary_expression "(double)uVar1 *\n                      _DAT_002df2e0" (cast_expression "(double)uVar1" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) * (pointer_expression "*(double *)((int)&pIVar3->colormap->alpha + iVar8)" * (cast_expression "(double *)((int)&pIVar3->colormap->alpha + iVar8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pIVar3->colormap->alpha + iVar8)" ( (binary_expression "(int)&pIVar3->colormap->alpha + iVar8" (cast_expression "(int)&pIVar3->colormap->alpha" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pIVar3->colormap->alpha" & (field_expression "pIVar3->colormap->alpha" (field_expression "pIVar3->colormap" identifier -> field_identifier) -> field_identifier))) + identifier) ))))) ))) * (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;)) (if_statement "if (2 < (int)sVar4) {\n          dVar5 = dVar5 / (double)(int)uVar1;\n        }" if (parenthesized_expression "(2 < (int)sVar4)" ( (binary_expression "2 < (int)sVar4" number_literal < (cast_expression "(int)sVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          dVar5 = dVar5 / (double)(int)uVar1;\n        }" { (expression_statement "dVar5 = dVar5 / (double)(int)uVar1;" (assignment_expression "dVar5 = dVar5 / (double)(int)uVar1" identifier = (binary_expression "dVar5 / (double)(int)uVar1" identifier / (cast_expression "(double)(int)uVar1" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "*(double *)((int)&pIVar3->colormap->alpha + iVar8) = dVar5;" (assignment_expression "*(double *)((int)&pIVar3->colormap->alpha + iVar8) = dVar5" (pointer_expression "*(double *)((int)&pIVar3->colormap->alpha + iVar8)" * (cast_expression "(double *)((int)&pIVar3->colormap->alpha + iVar8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pIVar3->colormap->alpha + iVar8)" ( (binary_expression "(int)&pIVar3->colormap->alpha + iVar8" (cast_expression "(int)&pIVar3->colormap->alpha" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pIVar3->colormap->alpha" & (field_expression "pIVar3->colormap->alpha" (field_expression "pIVar3->colormap" identifier -> field_identifier) -> field_identifier))) + identifier) )))) = identifier) ;) (expression_statement "iVar8 = iVar8 + 0x50;" (assignment_expression "iVar8 = iVar8 + 0x50" identifier = (binary_expression "iVar8 + 0x50" identifier + number_literal)) ;) (if_statement "if (iVar9 == iVar7) goto LAB_00145b3a;" if (parenthesized_expression "(iVar9 == iVar7)" ( (binary_expression "iVar9 == iVar7" identifier == identifier) )) (goto_statement "goto LAB_00145b3a;" goto statement_identifier ;)) })) (expression_statement "dVar5 = ROUND((double)uVar1 * *(double *)((int)&pIVar3->colormap->red + iVar8) * dVar6) *\n              (double)DAT_002df8a8;" (assignment_expression "dVar5 = ROUND((double)uVar1 * *(double *)((int)&pIVar3->colormap->red + iVar8) * dVar6) *\n              (double)DAT_002df8a8" identifier = (binary_expression "ROUND((double)uVar1 * *(double *)((int)&pIVar3->colormap->red + iVar8) * dVar6) *\n              (double)DAT_002df8a8" (call_expression "ROUND((double)uVar1 * *(double *)((int)&pIVar3->colormap->red + iVar8) * dVar6)" identifier (argument_list "((double)uVar1 * *(double *)((int)&pIVar3->colormap->red + iVar8) * dVar6)" ( (binary_expression "(double)uVar1 * *(double *)((int)&pIVar3->colormap->red + iVar8) * dVar6" (binary_expression "(double)uVar1 * *(double *)((int)&pIVar3->colormap->red + iVar8)" (cast_expression "(double)uVar1" ( (type_descriptor "double" primitive_type) ) identifier) * (pointer_expression "*(double *)((int)&pIVar3->colormap->red + iVar8)" * (cast_expression "(double *)((int)&pIVar3->colormap->red + iVar8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pIVar3->colormap->red + iVar8)" ( (binary_expression "(int)&pIVar3->colormap->red + iVar8" (cast_expression "(int)&pIVar3->colormap->red" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pIVar3->colormap->red" & (field_expression "pIVar3->colormap->red" (field_expression "pIVar3->colormap" identifier -> field_identifier) -> field_identifier))) + identifier) ))))) * identifier) ))) * (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (2 < (int)sVar4) {\n        dVar5 = dVar5 / (double)(int)uVar1;\n      }" if (parenthesized_expression "(2 < (int)sVar4)" ( (binary_expression "2 < (int)sVar4" number_literal < (cast_expression "(int)sVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        dVar5 = dVar5 / (double)(int)uVar1;\n      }" { (expression_statement "dVar5 = dVar5 / (double)(int)uVar1;" (assignment_expression "dVar5 = dVar5 / (double)(int)uVar1" identifier = (binary_expression "dVar5 / (double)(int)uVar1" identifier / (cast_expression "(double)(int)uVar1" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (expression_statement "*(double *)((int)&pIVar3->colormap->red + iVar8) = dVar5;" (assignment_expression "*(double *)((int)&pIVar3->colormap->red + iVar8) = dVar5" (pointer_expression "*(double *)((int)&pIVar3->colormap->red + iVar8)" * (cast_expression "(double *)((int)&pIVar3->colormap->red + iVar8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pIVar3->colormap->red + iVar8)" ( (binary_expression "(int)&pIVar3->colormap->red + iVar8" (cast_expression "(int)&pIVar3->colormap->red" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pIVar3->colormap->red" & (field_expression "pIVar3->colormap->red" (field_expression "pIVar3->colormap" identifier -> field_identifier) -> field_identifier))) + identifier) )))) = identifier) ;) (expression_statement "pPVar10 = pIVar3->channel_map;" (assignment_expression "pPVar10 = pIVar3->channel_map" identifier = (field_expression "pIVar3->channel_map" identifier -> field_identifier)) ;) (if_statement "if ((pPVar10[1].traits & UpdatePixelTrait) != UndefinedPixelTrait) goto LAB_001458b1;" if (parenthesized_expression "((pPVar10[1].traits & UpdatePixelTrait) != UndefinedPixelTrait)" ( (binary_expression "(pPVar10[1].traits & UpdatePixelTrait) != UndefinedPixelTrait" (parenthesized_expression "(pPVar10[1].traits & UpdatePixelTrait)" ( (binary_expression "pPVar10[1].traits & UpdatePixelTrait" (field_expression "pPVar10[1].traits" (subscript_expression "pPVar10[1]" identifier [ number_literal ]) . field_identifier) & identifier) )) != identifier) )) (goto_statement "goto LAB_001458b1;" goto statement_identifier ;)) (labeled_statement "LAB_001457b2:\n      if ((pPVar10[2].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457bc;" statement_identifier : (if_statement "if ((pPVar10[2].traits & UpdatePixelTrait) == UndefinedPixelTrait) goto LAB_001457bc;" if (parenthesized_expression "((pPVar10[2].traits & UpdatePixelTrait) == UndefinedPixelTrait)" ( (binary_expression "(pPVar10[2].traits & UpdatePixelTrait) == UndefinedPixelTrait" (parenthesized_expression "(pPVar10[2].traits & UpdatePixelTrait)" ( (binary_expression "pPVar10[2].traits & UpdatePixelTrait" (field_expression "pPVar10[2].traits" (subscript_expression "pPVar10[2]" identifier [ number_literal ]) . field_identifier) & identifier) )) == identifier) )) (goto_statement "goto LAB_001457bc;" goto statement_identifier ;))) (labeled_statement "LAB_00145986:\n      dVar5 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->blue + iVar8)) *\n              (double)DAT_002df8a8;" statement_identifier : (expression_statement "dVar5 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->blue + iVar8)) *\n              (double)DAT_002df8a8;" (assignment_expression "dVar5 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->blue + iVar8)) *\n              (double)DAT_002df8a8" identifier = (binary_expression "ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->blue + iVar8)) *\n              (double)DAT_002df8a8" (call_expression "ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->blue + iVar8))" identifier (argument_list "((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->blue + iVar8))" ( (binary_expression "(double)uVar1 *\n                    _DAT_002df2e0 * *(double *)((int)&pIVar3->colormap->blue + iVar8)" (binary_expression "(double)uVar1 *\n                    _DAT_002df2e0" (cast_expression "(double)uVar1" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) * (pointer_expression "*(double *)((int)&pIVar3->colormap->blue + iVar8)" * (cast_expression "(double *)((int)&pIVar3->colormap->blue + iVar8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pIVar3->colormap->blue + iVar8)" ( (binary_expression "(int)&pIVar3->colormap->blue + iVar8" (cast_expression "(int)&pIVar3->colormap->blue" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pIVar3->colormap->blue" & (field_expression "pIVar3->colormap->blue" (field_expression "pIVar3->colormap" identifier -> field_identifier) -> field_identifier))) + identifier) ))))) ))) * (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;)) (if_statement "if (2 < (int)sVar4) {\n        dVar5 = dVar5 / (double)(int)uVar1;\n      }" if (parenthesized_expression "(2 < (int)sVar4)" ( (binary_expression "2 < (int)sVar4" number_literal < (cast_expression "(int)sVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        dVar5 = dVar5 / (double)(int)uVar1;\n      }" { (expression_statement "dVar5 = dVar5 / (double)(int)uVar1;" (assignment_expression "dVar5 = dVar5 / (double)(int)uVar1" identifier = (binary_expression "dVar5 / (double)(int)uVar1" identifier / (cast_expression "(double)(int)uVar1" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (expression_statement "*(double *)((int)&pIVar3->colormap->blue + iVar8) = dVar5;" (assignment_expression "*(double *)((int)&pIVar3->colormap->blue + iVar8) = dVar5" (pointer_expression "*(double *)((int)&pIVar3->colormap->blue + iVar8)" * (cast_expression "(double *)((int)&pIVar3->colormap->blue + iVar8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pIVar3->colormap->blue + iVar8)" ( (binary_expression "(int)&pIVar3->colormap->blue + iVar8" (cast_expression "(int)&pIVar3->colormap->blue" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pIVar3->colormap->blue" & (field_expression "pIVar3->colormap->blue" (field_expression "pIVar3->colormap" identifier -> field_identifier) -> field_identifier))) + identifier) )))) = identifier) ;) (if_statement "if ((pIVar3->channel_map[4].traits & UpdatePixelTrait) != UndefinedPixelTrait)\n      goto LAB_00145a5b;" if (parenthesized_expression "((pIVar3->channel_map[4].traits & UpdatePixelTrait) != UndefinedPixelTrait)" ( (binary_expression "(pIVar3->channel_map[4].traits & UpdatePixelTrait) != UndefinedPixelTrait" (parenthesized_expression "(pIVar3->channel_map[4].traits & UpdatePixelTrait)" ( (binary_expression "pIVar3->channel_map[4].traits & UpdatePixelTrait" (field_expression "pIVar3->channel_map[4].traits" (subscript_expression "pIVar3->channel_map[4]" (field_expression "pIVar3->channel_map" identifier -> field_identifier) [ number_literal ]) . field_identifier) & identifier) )) != identifier) )) (goto_statement "goto LAB_00145a5b;" goto statement_identifier ;)) (labeled_statement "LAB_001457c6:\n      iVar7 = iVar7 + 1;" statement_identifier : (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;)) (expression_statement "iVar8 = iVar8 + 0x50;" (assignment_expression "iVar8 = iVar8 + 0x50" identifier = (binary_expression "iVar8 + 0x50" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar9 != iVar7)" ( (binary_expression "iVar9 != iVar7" identifier != identifier) )) ;) })) (labeled_statement "LAB_00145b3a:\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" statement_identifier : (if_statement "if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" if (parenthesized_expression "(iVar2 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar2 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "void FUN_00145730(int *param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  double dVar4;\n  double dVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int in_GS_OFFSET;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = *param_1;\n  iVar6 = omp_get_num_threads();\n  iVar7 = omp_get_thread_num();\n  dVar5 = _DAT_002df2e0;\n  iVar8 = *(int *)(iVar3 + 0x24) / iVar6;\n  iVar6 = *(int *)(iVar3 + 0x24) % iVar6;\n  if (iVar7 < iVar6) {\n    iVar8 = iVar8 + 1;\n    iVar6 = 0;\n  }\n  iVar6 = iVar6 + iVar7 * iVar8;\n  iVar8 = iVar8 + iVar6;\n  if (iVar6 < iVar8) {\n    iVar7 = param_1[1];\n    iVar10 = iVar6 * 0x50;\n    uVar1 = iVar7 - 1;\n    do {\n      while (iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0) {\n        if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;\nLAB_001458b1:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;\n        iVar9 = *(int *)(iVar3 + 0x2a8);\n        if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;\nLAB_001457bc:\n        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        iVar6 = iVar6 + 1;\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;\n        iVar10 = iVar10 + 0x50;\n        if (iVar8 == iVar6) goto LAB_00145b3a;\n      }\n      dVar4 = ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) = dVar4;\n      iVar9 = *(int *)(iVar3 + 0x2a8);\n      if ((*(byte *)(iVar9 + 0x10) & 2) != 0) goto LAB_001458b1;\nLAB_001457b2:\n      if ((*(byte *)(iVar9 + 0x1c) & 2) == 0) goto LAB_001457bc;\nLAB_00145986:\n      dVar4 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10) = dVar4;\n      if ((*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0) goto LAB_00145a5b;\nLAB_001457c6:\n      iVar6 = iVar6 + 1;\n      iVar10 = iVar10 + 0x50;\n    } while (iVar8 != iVar6);\n  }\nLAB_00145b3a:\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_002decd0();\n}\n\n" (function_definition "void FUN_00145730(int *param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  double dVar4;\n  double dVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int in_GS_OFFSET;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = *param_1;\n  iVar6 = omp_get_num_threads();\n  iVar7 = omp_get_thread_num();\n  dVar5 = _DAT_002df2e0;\n  iVar8 = *(int *)(iVar3 + 0x24) / iVar6;\n  iVar6 = *(int *)(iVar3 + 0x24) % iVar6;\n  if (iVar7 < iVar6) {\n    iVar8 = iVar8 + 1;\n    iVar6 = 0;\n  }\n  iVar6 = iVar6 + iVar7 * iVar8;\n  iVar8 = iVar8 + iVar6;\n  if (iVar6 < iVar8) {\n    iVar7 = param_1[1];\n    iVar10 = iVar6 * 0x50;\n    uVar1 = iVar7 - 1;\n    do {\n      while (iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0) {\n        if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;\nLAB_001458b1:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;\n        iVar9 = *(int *)(iVar3 + 0x2a8);\n        if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;\nLAB_001457bc:\n        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        iVar6 = iVar6 + 1;\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;\n        iVar10 = iVar10 + 0x50;\n        if (iVar8 == iVar6) goto LAB_00145b3a;\n      }\n      dVar4 = ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) = dVar4;\n      iVar9 = *(int *)(iVar3 + 0x2a8);\n      if ((*(byte *)(iVar9 + 0x10) & 2) != 0) goto LAB_001458b1;\nLAB_001457b2:\n      if ((*(byte *)(iVar9 + 0x1c) & 2) == 0) goto LAB_001457bc;\nLAB_00145986:\n      dVar4 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10) = dVar4;\n      if ((*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0) goto LAB_00145a5b;\nLAB_001457c6:\n      iVar6 = iVar6 + 1;\n      iVar10 = iVar10 + 0x50;\n    } while (iVar8 != iVar6);\n  }\nLAB_00145b3a:\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_002decd0();\n}" primitive_type (function_declarator "FUN_00145730(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  double dVar4;\n  double dVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int in_GS_OFFSET;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = *param_1;\n  iVar6 = omp_get_num_threads();\n  iVar7 = omp_get_thread_num();\n  dVar5 = _DAT_002df2e0;\n  iVar8 = *(int *)(iVar3 + 0x24) / iVar6;\n  iVar6 = *(int *)(iVar3 + 0x24) % iVar6;\n  if (iVar7 < iVar6) {\n    iVar8 = iVar8 + 1;\n    iVar6 = 0;\n  }\n  iVar6 = iVar6 + iVar7 * iVar8;\n  iVar8 = iVar8 + iVar6;\n  if (iVar6 < iVar8) {\n    iVar7 = param_1[1];\n    iVar10 = iVar6 * 0x50;\n    uVar1 = iVar7 - 1;\n    do {\n      while (iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0) {\n        if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;\nLAB_001458b1:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;\n        iVar9 = *(int *)(iVar3 + 0x2a8);\n        if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;\nLAB_001457bc:\n        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        iVar6 = iVar6 + 1;\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;\n        iVar10 = iVar10 + 0x50;\n        if (iVar8 == iVar6) goto LAB_00145b3a;\n      }\n      dVar4 = ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) = dVar4;\n      iVar9 = *(int *)(iVar3 + 0x2a8);\n      if ((*(byte *)(iVar9 + 0x10) & 2) != 0) goto LAB_001458b1;\nLAB_001457b2:\n      if ((*(byte *)(iVar9 + 0x1c) & 2) == 0) goto LAB_001457bc;\nLAB_00145986:\n      dVar4 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10) = dVar4;\n      if ((*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0) goto LAB_00145a5b;\nLAB_001457c6:\n      iVar6 = iVar6 + 1;\n      iVar10 = iVar10 + 0x50;\n    } while (iVar8 != iVar6);\n  }\nLAB_00145b3a:\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_002decd0();\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "double dVar4;" primitive_type identifier ;) (declaration "double dVar5;" 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 in_GS_OFFSET;" primitive_type identifier ;) (expression_statement "iVar2 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar2 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = *param_1;" (assignment_expression "iVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "iVar6 = omp_get_num_threads();" (assignment_expression "iVar6 = omp_get_num_threads()" identifier = (call_expression "omp_get_num_threads()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar7 = omp_get_thread_num();" (assignment_expression "iVar7 = omp_get_thread_num()" identifier = (call_expression "omp_get_thread_num()" identifier (argument_list "()" ( )))) ;) (expression_statement "dVar5 = _DAT_002df2e0;" (assignment_expression "dVar5 = _DAT_002df2e0" identifier = identifier) ;) (expression_statement "iVar8 = *(int *)(iVar3 + 0x24) / iVar6;" (assignment_expression "iVar8 = *(int *)(iVar3 + 0x24) / iVar6" identifier = (binary_expression "*(int *)(iVar3 + 0x24) / iVar6" (pointer_expression "*(int *)(iVar3 + 0x24)" * (cast_expression "(int *)(iVar3 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x24)" ( (binary_expression "iVar3 + 0x24" identifier + number_literal) )))) / identifier)) ;) (expression_statement "iVar6 = *(int *)(iVar3 + 0x24) % iVar6;" (assignment_expression "iVar6 = *(int *)(iVar3 + 0x24) % iVar6" identifier = (binary_expression "*(int *)(iVar3 + 0x24) % iVar6" (pointer_expression "*(int *)(iVar3 + 0x24)" * (cast_expression "(int *)(iVar3 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x24)" ( (binary_expression "iVar3 + 0x24" identifier + number_literal) )))) % identifier)) ;) (if_statement "if (iVar7 < iVar6) {\n    iVar8 = iVar8 + 1;\n    iVar6 = 0;\n  }" if (parenthesized_expression "(iVar7 < iVar6)" ( (binary_expression "iVar7 < iVar6" identifier < identifier) )) (compound_statement "{\n    iVar8 = iVar8 + 1;\n    iVar6 = 0;\n  }" { (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) })) (expression_statement "iVar6 = iVar6 + iVar7 * iVar8;" (assignment_expression "iVar6 = iVar6 + iVar7 * iVar8" identifier = (binary_expression "iVar6 + iVar7 * iVar8" identifier + (binary_expression "iVar7 * iVar8" identifier * identifier))) ;) (expression_statement "iVar8 = iVar8 + iVar6;" (assignment_expression "iVar8 = iVar8 + iVar6" identifier = (binary_expression "iVar8 + iVar6" identifier + identifier)) ;) (if_statement "if (iVar6 < iVar8) {\n    iVar7 = param_1[1];\n    iVar10 = iVar6 * 0x50;\n    uVar1 = iVar7 - 1;\n    do {\n      while (iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0) {\n        if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;\nLAB_001458b1:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;\n        iVar9 = *(int *)(iVar3 + 0x2a8);\n        if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;\nLAB_001457bc:\n        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        iVar6 = iVar6 + 1;\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;\n        iVar10 = iVar10 + 0x50;\n        if (iVar8 == iVar6) goto LAB_00145b3a;\n      }\n      dVar4 = ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) = dVar4;\n      iVar9 = *(int *)(iVar3 + 0x2a8);\n      if ((*(byte *)(iVar9 + 0x10) & 2) != 0) goto LAB_001458b1;\nLAB_001457b2:\n      if ((*(byte *)(iVar9 + 0x1c) & 2) == 0) goto LAB_001457bc;\nLAB_00145986:\n      dVar4 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10) = dVar4;\n      if ((*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0) goto LAB_00145a5b;\nLAB_001457c6:\n      iVar6 = iVar6 + 1;\n      iVar10 = iVar10 + 0x50;\n    } while (iVar8 != iVar6);\n  }" if (parenthesized_expression "(iVar6 < iVar8)" ( (binary_expression "iVar6 < iVar8" identifier < identifier) )) (compound_statement "{\n    iVar7 = param_1[1];\n    iVar10 = iVar6 * 0x50;\n    uVar1 = iVar7 - 1;\n    do {\n      while (iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0) {\n        if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;\nLAB_001458b1:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;\n        iVar9 = *(int *)(iVar3 + 0x2a8);\n        if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;\nLAB_001457bc:\n        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        iVar6 = iVar6 + 1;\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;\n        iVar10 = iVar10 + 0x50;\n        if (iVar8 == iVar6) goto LAB_00145b3a;\n      }\n      dVar4 = ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) = dVar4;\n      iVar9 = *(int *)(iVar3 + 0x2a8);\n      if ((*(byte *)(iVar9 + 0x10) & 2) != 0) goto LAB_001458b1;\nLAB_001457b2:\n      if ((*(byte *)(iVar9 + 0x1c) & 2) == 0) goto LAB_001457bc;\nLAB_00145986:\n      dVar4 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10) = dVar4;\n      if ((*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0) goto LAB_00145a5b;\nLAB_001457c6:\n      iVar6 = iVar6 + 1;\n      iVar10 = iVar10 + 0x50;\n    } while (iVar8 != iVar6);\n  }" { (expression_statement "iVar7 = param_1[1];" (assignment_expression "iVar7 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "iVar10 = iVar6 * 0x50;" (assignment_expression "iVar10 = iVar6 * 0x50" identifier = (binary_expression "iVar6 * 0x50" identifier * number_literal)) ;) (expression_statement "uVar1 = iVar7 - 1;" (assignment_expression "uVar1 = iVar7 - 1" identifier = (binary_expression "iVar7 - 1" identifier - number_literal)) ;) (do_statement "do {\n      while (iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0) {\n        if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;\nLAB_001458b1:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;\n        iVar9 = *(int *)(iVar3 + 0x2a8);\n        if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;\nLAB_001457bc:\n        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        iVar6 = iVar6 + 1;\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;\n        iVar10 = iVar10 + 0x50;\n        if (iVar8 == iVar6) goto LAB_00145b3a;\n      }\n      dVar4 = ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) = dVar4;\n      iVar9 = *(int *)(iVar3 + 0x2a8);\n      if ((*(byte *)(iVar9 + 0x10) & 2) != 0) goto LAB_001458b1;\nLAB_001457b2:\n      if ((*(byte *)(iVar9 + 0x1c) & 2) == 0) goto LAB_001457bc;\nLAB_00145986:\n      dVar4 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10) = dVar4;\n      if ((*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0) goto LAB_00145a5b;\nLAB_001457c6:\n      iVar6 = iVar6 + 1;\n      iVar10 = iVar10 + 0x50;\n    } while (iVar8 != iVar6);" do (compound_statement "{\n      while (iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0) {\n        if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;\nLAB_001458b1:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;\n        iVar9 = *(int *)(iVar3 + 0x2a8);\n        if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;\nLAB_001457bc:\n        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        iVar6 = iVar6 + 1;\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;\n        iVar10 = iVar10 + 0x50;\n        if (iVar8 == iVar6) goto LAB_00145b3a;\n      }\n      dVar4 = ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) = dVar4;\n      iVar9 = *(int *)(iVar3 + 0x2a8);\n      if ((*(byte *)(iVar9 + 0x10) & 2) != 0) goto LAB_001458b1;\nLAB_001457b2:\n      if ((*(byte *)(iVar9 + 0x1c) & 2) == 0) goto LAB_001457bc;\nLAB_00145986:\n      dVar4 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10) = dVar4;\n      if ((*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0) goto LAB_00145a5b;\nLAB_001457c6:\n      iVar6 = iVar6 + 1;\n      iVar10 = iVar10 + 0x50;\n    }" { (while_statement "while (iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0) {\n        if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;\nLAB_001458b1:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;\n        iVar9 = *(int *)(iVar3 + 0x2a8);\n        if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;\nLAB_001457bc:\n        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        iVar6 = iVar6 + 1;\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;\n        iVar10 = iVar10 + 0x50;\n        if (iVar8 == iVar6) goto LAB_00145b3a;\n      }" while (parenthesized_expression "(iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0)" ( (comma_expression "iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0" (assignment_expression "iVar9 = *(int *)(iVar3 + 0x2a8)" identifier = (pointer_expression "*(int *)(iVar3 + 0x2a8)" * (cast_expression "(int *)(iVar3 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x2a8)" ( (binary_expression "iVar3 + 0x2a8" identifier + number_literal) ))))) , (binary_expression "(*(byte *)(iVar9 + 4) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar9 + 4) & 2)" ( (binary_expression "*(byte *)(iVar9 + 4) & 2" (pointer_expression "*(byte *)(iVar9 + 4)" * (cast_expression "(byte *)(iVar9 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 4)" ( (binary_expression "iVar9 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal)) )) (compound_statement "{\n        if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;\nLAB_001458b1:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;\n        iVar9 = *(int *)(iVar3 + 0x2a8);\n        if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;\nLAB_001457bc:\n        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        iVar6 = iVar6 + 1;\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;\n        iVar10 = iVar10 + 0x50;\n        if (iVar8 == iVar6) goto LAB_00145b3a;\n      }" { (if_statement "if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;" if (parenthesized_expression "((*(byte *)(iVar9 + 0x10) & 2) == 0)" ( (binary_expression "(*(byte *)(iVar9 + 0x10) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x10) & 2)" ( (binary_expression "*(byte *)(iVar9 + 0x10) & 2" (pointer_expression "*(byte *)(iVar9 + 0x10)" * (cast_expression "(byte *)(iVar9 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x10)" ( (binary_expression "iVar9 + 0x10" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001457b2;" goto statement_identifier ;)) (labeled_statement "LAB_001458b1:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;" statement_identifier : (expression_statement "dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;" (assignment_expression "dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8" identifier = (binary_expression "ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8" (call_expression "ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10))" identifier (argument_list "((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10))" ( (binary_expression "(double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)" (binary_expression "(double)uVar1 *\n                      _DAT_002df2e0" (cast_expression "(double)uVar1" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) * (pointer_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)" * (cast_expression "(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)" ( (binary_expression "*(int *)(iVar3 + 0x28) + 0x28 + iVar10" (binary_expression "*(int *)(iVar3 + 0x28) + 0x28" (pointer_expression "*(int *)(iVar3 + 0x28)" * (cast_expression "(int *)(iVar3 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x28)" ( (binary_expression "iVar3 + 0x28" identifier + number_literal) )))) + number_literal) + identifier) ))))) ))) * (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;)) (if_statement "if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }" if (parenthesized_expression "(2 < iVar7)" ( (binary_expression "2 < iVar7" number_literal < identifier) )) (compound_statement "{\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }" { (expression_statement "dVar4 = dVar4 / (double)(int)uVar1;" (assignment_expression "dVar4 = dVar4 / (double)(int)uVar1" identifier = (binary_expression "dVar4 / (double)(int)uVar1" identifier / (cast_expression "(double)(int)uVar1" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (expression_statement "*(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;" (assignment_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4" (pointer_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)" * (cast_expression "(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)" ( (binary_expression "*(int *)(iVar3 + 0x28) + 0x28 + iVar10" (binary_expression "*(int *)(iVar3 + 0x28) + 0x28" (pointer_expression "*(int *)(iVar3 + 0x28)" * (cast_expression "(int *)(iVar3 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x28)" ( (binary_expression "iVar3 + 0x28" identifier + number_literal) )))) + number_literal) + identifier) )))) = identifier) ;) (expression_statement "iVar9 = *(int *)(iVar3 + 0x2a8);" (assignment_expression "iVar9 = *(int *)(iVar3 + 0x2a8)" identifier = (pointer_expression "*(int *)(iVar3 + 0x2a8)" * (cast_expression "(int *)(iVar3 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x2a8)" ( (binary_expression "iVar3 + 0x2a8" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;" if (parenthesized_expression "((*(byte *)(iVar9 + 0x1c) & 2) != 0)" ( (binary_expression "(*(byte *)(iVar9 + 0x1c) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x1c) & 2)" ( (binary_expression "*(byte *)(iVar9 + 0x1c) & 2" (pointer_expression "*(byte *)(iVar9 + 0x1c)" * (cast_expression "(byte *)(iVar9 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x1c)" ( (binary_expression "iVar9 + 0x1c" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00145986;" goto statement_identifier ;)) (labeled_statement "LAB_001457bc:\n        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;" statement_identifier : (if_statement "if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;" if (parenthesized_expression "((*(byte *)(iVar9 + 0x34) & 2) == 0)" ( (binary_expression "(*(byte *)(iVar9 + 0x34) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x34) & 2)" ( (binary_expression "*(byte *)(iVar9 + 0x34) & 2" (pointer_expression "*(byte *)(iVar9 + 0x34)" * (cast_expression "(byte *)(iVar9 + 0x34)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x34)" ( (binary_expression "iVar9 + 0x34" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001457c6;" goto statement_identifier ;))) (labeled_statement "LAB_00145a5b:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;" statement_identifier : (expression_statement "dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;" (assignment_expression "dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8" identifier = (binary_expression "ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8" (call_expression "ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10))" identifier (argument_list "((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10))" ( (binary_expression "(double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)" (binary_expression "(double)uVar1 *\n                      _DAT_002df2e0" (cast_expression "(double)uVar1" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) * (pointer_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)" * (cast_expression "(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)" ( (binary_expression "*(int *)(iVar3 + 0x28) + 0x40 + iVar10" (binary_expression "*(int *)(iVar3 + 0x28) + 0x40" (pointer_expression "*(int *)(iVar3 + 0x28)" * (cast_expression "(int *)(iVar3 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x28)" ( (binary_expression "iVar3 + 0x28" identifier + number_literal) )))) + number_literal) + identifier) ))))) ))) * (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;)) (if_statement "if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }" if (parenthesized_expression "(2 < iVar7)" ( (binary_expression "2 < iVar7" number_literal < identifier) )) (compound_statement "{\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }" { (expression_statement "dVar4 = dVar4 / (double)(int)uVar1;" (assignment_expression "dVar4 = dVar4 / (double)(int)uVar1" identifier = (binary_expression "dVar4 / (double)(int)uVar1" identifier / (cast_expression "(double)(int)uVar1" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "*(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;" (assignment_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4" (pointer_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)" * (cast_expression "(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)" ( (binary_expression "*(int *)(iVar3 + 0x28) + 0x40 + iVar10" (binary_expression "*(int *)(iVar3 + 0x28) + 0x40" (pointer_expression "*(int *)(iVar3 + 0x28)" * (cast_expression "(int *)(iVar3 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x28)" ( (binary_expression "iVar3 + 0x28" identifier + number_literal) )))) + number_literal) + identifier) )))) = identifier) ;) (expression_statement "iVar10 = iVar10 + 0x50;" (assignment_expression "iVar10 = iVar10 + 0x50" identifier = (binary_expression "iVar10 + 0x50" identifier + number_literal)) ;) (if_statement "if (iVar8 == iVar6) goto LAB_00145b3a;" if (parenthesized_expression "(iVar8 == iVar6)" ( (binary_expression "iVar8 == iVar6" identifier == identifier) )) (goto_statement "goto LAB_00145b3a;" goto statement_identifier ;)) })) (expression_statement "dVar4 = ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *\n              (double)DAT_002df8a8;" (assignment_expression "dVar4 = ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *\n              (double)DAT_002df8a8" identifier = (binary_expression "ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *\n              (double)DAT_002df8a8" (call_expression "ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5)" identifier (argument_list "((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5)" ( (binary_expression "(double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5" (binary_expression "(double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10)" (cast_expression "(double)uVar1" ( (type_descriptor "double" primitive_type) ) identifier) * (pointer_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10)" * (cast_expression "(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 0x28) + 0x20 + iVar10)" ( (binary_expression "*(int *)(iVar3 + 0x28) + 0x20 + iVar10" (binary_expression "*(int *)(iVar3 + 0x28) + 0x20" (pointer_expression "*(int *)(iVar3 + 0x28)" * (cast_expression "(int *)(iVar3 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x28)" ( (binary_expression "iVar3 + 0x28" identifier + number_literal) )))) + number_literal) + identifier) ))))) * identifier) ))) * (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }" if (parenthesized_expression "(2 < iVar7)" ( (binary_expression "2 < iVar7" number_literal < identifier) )) (compound_statement "{\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }" { (expression_statement "dVar4 = dVar4 / (double)(int)uVar1;" (assignment_expression "dVar4 = dVar4 / (double)(int)uVar1" identifier = (binary_expression "dVar4 / (double)(int)uVar1" identifier / (cast_expression "(double)(int)uVar1" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (expression_statement "*(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) = dVar4;" (assignment_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) = dVar4" (pointer_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10)" * (cast_expression "(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 0x28) + 0x20 + iVar10)" ( (binary_expression "*(int *)(iVar3 + 0x28) + 0x20 + iVar10" (binary_expression "*(int *)(iVar3 + 0x28) + 0x20" (pointer_expression "*(int *)(iVar3 + 0x28)" * (cast_expression "(int *)(iVar3 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x28)" ( (binary_expression "iVar3 + 0x28" identifier + number_literal) )))) + number_literal) + identifier) )))) = identifier) ;) (expression_statement "iVar9 = *(int *)(iVar3 + 0x2a8);" (assignment_expression "iVar9 = *(int *)(iVar3 + 0x2a8)" identifier = (pointer_expression "*(int *)(iVar3 + 0x2a8)" * (cast_expression "(int *)(iVar3 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x2a8)" ( (binary_expression "iVar3 + 0x2a8" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(iVar9 + 0x10) & 2) != 0) goto LAB_001458b1;" if (parenthesized_expression "((*(byte *)(iVar9 + 0x10) & 2) != 0)" ( (binary_expression "(*(byte *)(iVar9 + 0x10) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x10) & 2)" ( (binary_expression "*(byte *)(iVar9 + 0x10) & 2" (pointer_expression "*(byte *)(iVar9 + 0x10)" * (cast_expression "(byte *)(iVar9 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x10)" ( (binary_expression "iVar9 + 0x10" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_001458b1;" goto statement_identifier ;)) (labeled_statement "LAB_001457b2:\n      if ((*(byte *)(iVar9 + 0x1c) & 2) == 0) goto LAB_001457bc;" statement_identifier : (if_statement "if ((*(byte *)(iVar9 + 0x1c) & 2) == 0) goto LAB_001457bc;" if (parenthesized_expression "((*(byte *)(iVar9 + 0x1c) & 2) == 0)" ( (binary_expression "(*(byte *)(iVar9 + 0x1c) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x1c) & 2)" ( (binary_expression "*(byte *)(iVar9 + 0x1c) & 2" (pointer_expression "*(byte *)(iVar9 + 0x1c)" * (cast_expression "(byte *)(iVar9 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x1c)" ( (binary_expression "iVar9 + 0x1c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001457bc;" goto statement_identifier ;))) (labeled_statement "LAB_00145986:\n      dVar4 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8;" statement_identifier : (expression_statement "dVar4 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8;" (assignment_expression "dVar4 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8" identifier = (binary_expression "ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8" (call_expression "ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10))" identifier (argument_list "((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10))" ( (binary_expression "(double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)" (binary_expression "(double)uVar1 *\n                    _DAT_002df2e0" (cast_expression "(double)uVar1" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) * (pointer_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)" * (cast_expression "(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)" ( (binary_expression "*(int *)(iVar3 + 0x28) + 0x30 + iVar10" (binary_expression "*(int *)(iVar3 + 0x28) + 0x30" (pointer_expression "*(int *)(iVar3 + 0x28)" * (cast_expression "(int *)(iVar3 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x28)" ( (binary_expression "iVar3 + 0x28" identifier + number_literal) )))) + number_literal) + identifier) ))))) ))) * (cast_expression "(double)DAT_002df8a8" ( (type_descriptor "double" primitive_type) ) identifier))) ;)) (if_statement "if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }" if (parenthesized_expression "(2 < iVar7)" ( (binary_expression "2 < iVar7" number_literal < identifier) )) (compound_statement "{\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }" { (expression_statement "dVar4 = dVar4 / (double)(int)uVar1;" (assignment_expression "dVar4 = dVar4 / (double)(int)uVar1" identifier = (binary_expression "dVar4 / (double)(int)uVar1" identifier / (cast_expression "(double)(int)uVar1" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (expression_statement "*(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10) = dVar4;" (assignment_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10) = dVar4" (pointer_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)" * (cast_expression "(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)" ( (binary_expression "*(int *)(iVar3 + 0x28) + 0x30 + iVar10" (binary_expression "*(int *)(iVar3 + 0x28) + 0x30" (pointer_expression "*(int *)(iVar3 + 0x28)" * (cast_expression "(int *)(iVar3 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x28)" ( (binary_expression "iVar3 + 0x28" identifier + number_literal) )))) + number_literal) + identifier) )))) = identifier) ;) (if_statement "if ((*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0) goto LAB_00145a5b;" if (parenthesized_expression "((*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0)" ( (binary_expression "(*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0" (parenthesized_expression "(*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2)" ( (binary_expression "*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2" (pointer_expression "*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34)" * (cast_expression "(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 0x2a8) + 0x34)" ( (binary_expression "*(int *)(iVar3 + 0x2a8) + 0x34" (pointer_expression "*(int *)(iVar3 + 0x2a8)" * (cast_expression "(int *)(iVar3 + 0x2a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x2a8)" ( (binary_expression "iVar3 + 0x2a8" identifier + number_literal) )))) + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00145a5b;" goto statement_identifier ;)) (labeled_statement "LAB_001457c6:\n      iVar6 = iVar6 + 1;" statement_identifier : (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;)) (expression_statement "iVar10 = iVar10 + 0x50;" (assignment_expression "iVar10 = iVar10 + 0x50" identifier = (binary_expression "iVar10 + 0x50" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar8 != iVar6)" ( (binary_expression "iVar8 != iVar6" identifier != identifier) )) ;) })) (labeled_statement "LAB_00145b3a:\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" statement_identifier : (if_statement "if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" if (parenthesized_expression "(iVar2 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar2 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "FUN_002decd0();" (call_expression "FUN_002decd0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (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 * 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 = 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)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) % IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (call_expression IDENT (argument_list ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT) * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + IDENT) ))))) ))) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + IDENT) )))) = IDENT) ;) (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 (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (call_expression IDENT (argument_list ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT) * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + IDENT) ))))) ))) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + IDENT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression IDENT (argument_list ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + IDENT) ))))) * IDENT) ))) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + IDENT) )))) = IDENT) ;) (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 (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (call_expression IDENT (argument_list ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT) * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + IDENT) ))))) ))) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + IDENT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return ;) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "void FUN_00145730(int *param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  double dVar4;\n  double dVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int in_GS_OFFSET;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = *param_1;\n  iVar6 = omp_get_num_threads();\n  iVar7 = omp_get_thread_num();\n  dVar5 = _DAT_002df2e0;\n  iVar8 = *(int *)(iVar3 + 0x24) / iVar6;\n  iVar6 = *(int *)(iVar3 + 0x24) % iVar6;\n  if (iVar7 < iVar6) {\n    iVar8 = iVar8 + 1;\n    iVar6 = 0;\n  }\n  iVar6 = iVar6 + iVar7 * iVar8;\n  iVar8 = iVar8 + iVar6;\n  if (iVar6 < iVar8) {\n    iVar7 = param_1[1];\n    iVar10 = iVar6 * 0x50;\n    uVar1 = iVar7 - 1;\n    do {\n      while (iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0) {\n        if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;\nLAB_001458b1:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;\n        iVar9 = *(int *)(iVar3 + 0x2a8);\n        if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;\nLAB_001457bc:\n        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        iVar6 = iVar6 + 1;\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;\n        iVar10 = iVar10 + 0x50;\n        if (iVar8 == iVar6) goto LAB_00145b3a;\n      }\n      dVar4 = ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) = dVar4;\n      iVar9 = *(int *)(iVar3 + 0x2a8);\n      if ((*(byte *)(iVar9 + 0x10) & 2) != 0) goto LAB_001458b1;\nLAB_001457b2:\n      if ((*(byte *)(iVar9 + 0x1c) & 2) == 0) goto LAB_001457bc;\nLAB_00145986:\n      dVar4 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10) = dVar4;\n      if ((*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0) goto LAB_00145a5b;\nLAB_001457c6:\n      iVar6 = iVar6 + 1;\n      iVar10 = iVar10 + 0x50;\n    } while (iVar8 != iVar6);\n  }\nLAB_00145b3a:\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_002decd0();\n}" (primitive_type "void") (function_declarator "FUN_00145730(int *param_1)" (identifier "FUN_00145730") (parameter_list "(int *param_1)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int iVar3;\n  double dVar4;\n  double dVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  int iVar10;\n  int in_GS_OFFSET;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = *param_1;\n  iVar6 = omp_get_num_threads();\n  iVar7 = omp_get_thread_num();\n  dVar5 = _DAT_002df2e0;\n  iVar8 = *(int *)(iVar3 + 0x24) / iVar6;\n  iVar6 = *(int *)(iVar3 + 0x24) % iVar6;\n  if (iVar7 < iVar6) {\n    iVar8 = iVar8 + 1;\n    iVar6 = 0;\n  }\n  iVar6 = iVar6 + iVar7 * iVar8;\n  iVar8 = iVar8 + iVar6;\n  if (iVar6 < iVar8) {\n    iVar7 = param_1[1];\n    iVar10 = iVar6 * 0x50;\n    uVar1 = iVar7 - 1;\n    do {\n      while (iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0) {\n        if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;\nLAB_001458b1:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;\n        iVar9 = *(int *)(iVar3 + 0x2a8);\n        if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;\nLAB_001457bc:\n        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        iVar6 = iVar6 + 1;\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;\n        iVar10 = iVar10 + 0x50;\n        if (iVar8 == iVar6) goto LAB_00145b3a;\n      }\n      dVar4 = ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) = dVar4;\n      iVar9 = *(int *)(iVar3 + 0x2a8);\n      if ((*(byte *)(iVar9 + 0x10) & 2) != 0) goto LAB_001458b1;\nLAB_001457b2:\n      if ((*(byte *)(iVar9 + 0x1c) & 2) == 0) goto LAB_001457bc;\nLAB_00145986:\n      dVar4 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10) = dVar4;\n      if ((*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0) goto LAB_00145a5b;\nLAB_001457c6:\n      iVar6 = iVar6 + 1;\n      iVar10 = iVar10 + 0x50;\n    } while (iVar8 != iVar6);\n  }\nLAB_00145b3a:\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_002decd0();\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "double dVar4;" (primitive_type "double") (identifier "dVar4") (; ";")) (declaration "double dVar5;" (primitive_type "double") (identifier "dVar5") (; ";")) (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 in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (expression_statement "iVar2 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar2 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "iVar3 = *param_1;" (assignment_expression "iVar3 = *param_1" (identifier "iVar3") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "iVar6 = omp_get_num_threads();" (assignment_expression "iVar6 = omp_get_num_threads()" (identifier "iVar6") (= "=") (call_expression "omp_get_num_threads()" (identifier "omp_get_num_threads") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar7 = omp_get_thread_num();" (assignment_expression "iVar7 = omp_get_thread_num()" (identifier "iVar7") (= "=") (call_expression "omp_get_thread_num()" (identifier "omp_get_thread_num") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "dVar5 = _DAT_002df2e0;" (assignment_expression "dVar5 = _DAT_002df2e0" (identifier "dVar5") (= "=") (identifier "_DAT_002df2e0")) (; ";")) (expression_statement "iVar8 = *(int *)(iVar3 + 0x24) / iVar6;" (assignment_expression "iVar8 = *(int *)(iVar3 + 0x24) / iVar6" (identifier "iVar8") (= "=") (binary_expression "*(int *)(iVar3 + 0x24) / iVar6" (pointer_expression "*(int *)(iVar3 + 0x24)" (* "*") (cast_expression "(int *)(iVar3 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x24)" (( "(") (binary_expression "iVar3 + 0x24" (identifier "iVar3") (+ "+") (number_literal "0x24")) () ")")))) (/ "/") (identifier "iVar6"))) (; ";")) (expression_statement "iVar6 = *(int *)(iVar3 + 0x24) % iVar6;" (assignment_expression "iVar6 = *(int *)(iVar3 + 0x24) % iVar6" (identifier "iVar6") (= "=") (binary_expression "*(int *)(iVar3 + 0x24) % iVar6" (pointer_expression "*(int *)(iVar3 + 0x24)" (* "*") (cast_expression "(int *)(iVar3 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x24)" (( "(") (binary_expression "iVar3 + 0x24" (identifier "iVar3") (+ "+") (number_literal "0x24")) () ")")))) (% "%") (identifier "iVar6"))) (; ";")) (if_statement "if (iVar7 < iVar6) {\n    iVar8 = iVar8 + 1;\n    iVar6 = 0;\n  }" (if "if") (parenthesized_expression "(iVar7 < iVar6)" (( "(") (binary_expression "iVar7 < iVar6" (identifier "iVar7") (< "<") (identifier "iVar6")) () ")")) (compound_statement "{\n    iVar8 = iVar8 + 1;\n    iVar6 = 0;\n  }" ({ "{") (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "iVar6 = iVar6 + iVar7 * iVar8;" (assignment_expression "iVar6 = iVar6 + iVar7 * iVar8" (identifier "iVar6") (= "=") (binary_expression "iVar6 + iVar7 * iVar8" (identifier "iVar6") (+ "+") (binary_expression "iVar7 * iVar8" (identifier "iVar7") (* "*") (identifier "iVar8")))) (; ";")) (expression_statement "iVar8 = iVar8 + iVar6;" (assignment_expression "iVar8 = iVar8 + iVar6" (identifier "iVar8") (= "=") (binary_expression "iVar8 + iVar6" (identifier "iVar8") (+ "+") (identifier "iVar6"))) (; ";")) (if_statement "if (iVar6 < iVar8) {\n    iVar7 = param_1[1];\n    iVar10 = iVar6 * 0x50;\n    uVar1 = iVar7 - 1;\n    do {\n      while (iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0) {\n        if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;\nLAB_001458b1:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;\n        iVar9 = *(int *)(iVar3 + 0x2a8);\n        if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;\nLAB_001457bc:\n        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        iVar6 = iVar6 + 1;\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;\n        iVar10 = iVar10 + 0x50;\n        if (iVar8 == iVar6) goto LAB_00145b3a;\n      }\n      dVar4 = ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) = dVar4;\n      iVar9 = *(int *)(iVar3 + 0x2a8);\n      if ((*(byte *)(iVar9 + 0x10) & 2) != 0) goto LAB_001458b1;\nLAB_001457b2:\n      if ((*(byte *)(iVar9 + 0x1c) & 2) == 0) goto LAB_001457bc;\nLAB_00145986:\n      dVar4 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10) = dVar4;\n      if ((*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0) goto LAB_00145a5b;\nLAB_001457c6:\n      iVar6 = iVar6 + 1;\n      iVar10 = iVar10 + 0x50;\n    } while (iVar8 != iVar6);\n  }" (if "if") (parenthesized_expression "(iVar6 < iVar8)" (( "(") (binary_expression "iVar6 < iVar8" (identifier "iVar6") (< "<") (identifier "iVar8")) () ")")) (compound_statement "{\n    iVar7 = param_1[1];\n    iVar10 = iVar6 * 0x50;\n    uVar1 = iVar7 - 1;\n    do {\n      while (iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0) {\n        if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;\nLAB_001458b1:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;\n        iVar9 = *(int *)(iVar3 + 0x2a8);\n        if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;\nLAB_001457bc:\n        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        iVar6 = iVar6 + 1;\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;\n        iVar10 = iVar10 + 0x50;\n        if (iVar8 == iVar6) goto LAB_00145b3a;\n      }\n      dVar4 = ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) = dVar4;\n      iVar9 = *(int *)(iVar3 + 0x2a8);\n      if ((*(byte *)(iVar9 + 0x10) & 2) != 0) goto LAB_001458b1;\nLAB_001457b2:\n      if ((*(byte *)(iVar9 + 0x1c) & 2) == 0) goto LAB_001457bc;\nLAB_00145986:\n      dVar4 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10) = dVar4;\n      if ((*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0) goto LAB_00145a5b;\nLAB_001457c6:\n      iVar6 = iVar6 + 1;\n      iVar10 = iVar10 + 0x50;\n    } while (iVar8 != iVar6);\n  }" ({ "{") (expression_statement "iVar7 = param_1[1];" (assignment_expression "iVar7 = param_1[1]" (identifier "iVar7") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "iVar10 = iVar6 * 0x50;" (assignment_expression "iVar10 = iVar6 * 0x50" (identifier "iVar10") (= "=") (binary_expression "iVar6 * 0x50" (identifier "iVar6") (* "*") (number_literal "0x50"))) (; ";")) (expression_statement "uVar1 = iVar7 - 1;" (assignment_expression "uVar1 = iVar7 - 1" (identifier "uVar1") (= "=") (binary_expression "iVar7 - 1" (identifier "iVar7") (- "-") (number_literal "1"))) (; ";")) (do_statement "do {\n      while (iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0) {\n        if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;\nLAB_001458b1:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;\n        iVar9 = *(int *)(iVar3 + 0x2a8);\n        if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;\nLAB_001457bc:\n        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        iVar6 = iVar6 + 1;\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;\n        iVar10 = iVar10 + 0x50;\n        if (iVar8 == iVar6) goto LAB_00145b3a;\n      }\n      dVar4 = ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) = dVar4;\n      iVar9 = *(int *)(iVar3 + 0x2a8);\n      if ((*(byte *)(iVar9 + 0x10) & 2) != 0) goto LAB_001458b1;\nLAB_001457b2:\n      if ((*(byte *)(iVar9 + 0x1c) & 2) == 0) goto LAB_001457bc;\nLAB_00145986:\n      dVar4 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10) = dVar4;\n      if ((*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0) goto LAB_00145a5b;\nLAB_001457c6:\n      iVar6 = iVar6 + 1;\n      iVar10 = iVar10 + 0x50;\n    } while (iVar8 != iVar6);" (do "do") (compound_statement "{\n      while (iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0) {\n        if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;\nLAB_001458b1:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;\n        iVar9 = *(int *)(iVar3 + 0x2a8);\n        if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;\nLAB_001457bc:\n        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        iVar6 = iVar6 + 1;\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;\n        iVar10 = iVar10 + 0x50;\n        if (iVar8 == iVar6) goto LAB_00145b3a;\n      }\n      dVar4 = ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) = dVar4;\n      iVar9 = *(int *)(iVar3 + 0x2a8);\n      if ((*(byte *)(iVar9 + 0x10) & 2) != 0) goto LAB_001458b1;\nLAB_001457b2:\n      if ((*(byte *)(iVar9 + 0x1c) & 2) == 0) goto LAB_001457bc;\nLAB_00145986:\n      dVar4 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8;\n      if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }\n      *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10) = dVar4;\n      if ((*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0) goto LAB_00145a5b;\nLAB_001457c6:\n      iVar6 = iVar6 + 1;\n      iVar10 = iVar10 + 0x50;\n    }" ({ "{") (while_statement "while (iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0) {\n        if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;\nLAB_001458b1:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;\n        iVar9 = *(int *)(iVar3 + 0x2a8);\n        if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;\nLAB_001457bc:\n        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        iVar6 = iVar6 + 1;\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;\n        iVar10 = iVar10 + 0x50;\n        if (iVar8 == iVar6) goto LAB_00145b3a;\n      }" (while "while") (parenthesized_expression "(iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0)" (( "(") (comma_expression "iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0" (assignment_expression "iVar9 = *(int *)(iVar3 + 0x2a8)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(iVar3 + 0x2a8)" (* "*") (cast_expression "(int *)(iVar3 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x2a8)" (( "(") (binary_expression "iVar3 + 0x2a8" (identifier "iVar3") (+ "+") (number_literal "0x2a8")) () ")"))))) (, ",") (binary_expression "(*(byte *)(iVar9 + 4) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar9 + 4) & 2)" (( "(") (binary_expression "*(byte *)(iVar9 + 4) & 2" (pointer_expression "*(byte *)(iVar9 + 4)" (* "*") (cast_expression "(byte *)(iVar9 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 4)" (( "(") (binary_expression "iVar9 + 4" (identifier "iVar9") (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n        if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;\nLAB_001458b1:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;\n        iVar9 = *(int *)(iVar3 + 0x2a8);\n        if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;\nLAB_001457bc:\n        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;\nLAB_00145a5b:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;\n        if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }\n        iVar6 = iVar6 + 1;\n        *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;\n        iVar10 = iVar10 + 0x50;\n        if (iVar8 == iVar6) goto LAB_00145b3a;\n      }" ({ "{") (if_statement "if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;" (if "if") (parenthesized_expression "((*(byte *)(iVar9 + 0x10) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(iVar9 + 0x10) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x10) & 2)" (( "(") (binary_expression "*(byte *)(iVar9 + 0x10) & 2" (pointer_expression "*(byte *)(iVar9 + 0x10)" (* "*") (cast_expression "(byte *)(iVar9 + 0x10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x10)" (( "(") (binary_expression "iVar9 + 0x10" (identifier "iVar9") (+ "+") (number_literal "0x10")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001457b2;" (goto "goto") (statement_identifier "LAB_001457b2") (; ";"))) (labeled_statement "LAB_001458b1:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;" (statement_identifier "LAB_001458b1") (: ":") (expression_statement "dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8;" (assignment_expression "dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8" (identifier "dVar4") (= "=") (binary_expression "ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *\n                (double)DAT_002df8a8" (call_expression "ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10))" (identifier "ROUND") (argument_list "((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10))" (( "(") (binary_expression "(double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)" (binary_expression "(double)uVar1 *\n                      _DAT_002df2e0" (cast_expression "(double)uVar1" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "uVar1")) (* "*") (identifier "_DAT_002df2e0")) (* "*") (pointer_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)" (* "*") (cast_expression "(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)" (( "(") (binary_expression "*(int *)(iVar3 + 0x28) + 0x28 + iVar10" (binary_expression "*(int *)(iVar3 + 0x28) + 0x28" (pointer_expression "*(int *)(iVar3 + 0x28)" (* "*") (cast_expression "(int *)(iVar3 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x28)" (( "(") (binary_expression "iVar3 + 0x28" (identifier "iVar3") (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "0x28")) (+ "+") (identifier "iVar10")) () ")"))))) () ")"))) (* "*") (cast_expression "(double)DAT_002df8a8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8a8")))) (; ";"))) (if_statement "if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }" (if "if") (parenthesized_expression "(2 < iVar7)" (( "(") (binary_expression "2 < iVar7" (number_literal "2") (< "<") (identifier "iVar7")) () ")")) (compound_statement "{\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }" ({ "{") (expression_statement "dVar4 = dVar4 / (double)(int)uVar1;" (assignment_expression "dVar4 = dVar4 / (double)(int)uVar1" (identifier "dVar4") (= "=") (binary_expression "dVar4 / (double)(int)uVar1" (identifier "dVar4") (/ "/") (cast_expression "(double)(int)uVar1" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (cast_expression "(int)uVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar1"))))) (; ";")) (} "}"))) (expression_statement "*(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;" (assignment_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4" (pointer_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)" (* "*") (cast_expression "(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)" (( "(") (binary_expression "*(int *)(iVar3 + 0x28) + 0x28 + iVar10" (binary_expression "*(int *)(iVar3 + 0x28) + 0x28" (pointer_expression "*(int *)(iVar3 + 0x28)" (* "*") (cast_expression "(int *)(iVar3 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x28)" (( "(") (binary_expression "iVar3 + 0x28" (identifier "iVar3") (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "0x28")) (+ "+") (identifier "iVar10")) () ")")))) (= "=") (identifier "dVar4")) (; ";")) (expression_statement "iVar9 = *(int *)(iVar3 + 0x2a8);" (assignment_expression "iVar9 = *(int *)(iVar3 + 0x2a8)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(iVar3 + 0x2a8)" (* "*") (cast_expression "(int *)(iVar3 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x2a8)" (( "(") (binary_expression "iVar3 + 0x2a8" (identifier "iVar3") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";")) (if_statement "if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;" (if "if") (parenthesized_expression "((*(byte *)(iVar9 + 0x1c) & 2) != 0)" (( "(") (binary_expression "(*(byte *)(iVar9 + 0x1c) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x1c) & 2)" (( "(") (binary_expression "*(byte *)(iVar9 + 0x1c) & 2" (pointer_expression "*(byte *)(iVar9 + 0x1c)" (* "*") (cast_expression "(byte *)(iVar9 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x1c)" (( "(") (binary_expression "iVar9 + 0x1c" (identifier "iVar9") (+ "+") (number_literal "0x1c")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00145986;" (goto "goto") (statement_identifier "LAB_00145986") (; ";"))) (labeled_statement "LAB_001457bc:\n        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;" (statement_identifier "LAB_001457bc") (: ":") (if_statement "if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;" (if "if") (parenthesized_expression "((*(byte *)(iVar9 + 0x34) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(iVar9 + 0x34) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x34) & 2)" (( "(") (binary_expression "*(byte *)(iVar9 + 0x34) & 2" (pointer_expression "*(byte *)(iVar9 + 0x34)" (* "*") (cast_expression "(byte *)(iVar9 + 0x34)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x34)" (( "(") (binary_expression "iVar9 + 0x34" (identifier "iVar9") (+ "+") (number_literal "0x34")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001457c6;" (goto "goto") (statement_identifier "LAB_001457c6") (; ";")))) (labeled_statement "LAB_00145a5b:\n        dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;" (statement_identifier "LAB_00145a5b") (: ":") (expression_statement "dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8;" (assignment_expression "dVar4 = ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8" (identifier "dVar4") (= "=") (binary_expression "ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *\n                (double)DAT_002df8a8" (call_expression "ROUND((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10))" (identifier "ROUND") (argument_list "((double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10))" (( "(") (binary_expression "(double)uVar1 *\n                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)" (binary_expression "(double)uVar1 *\n                      _DAT_002df2e0" (cast_expression "(double)uVar1" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "uVar1")) (* "*") (identifier "_DAT_002df2e0")) (* "*") (pointer_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)" (* "*") (cast_expression "(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)" (( "(") (binary_expression "*(int *)(iVar3 + 0x28) + 0x40 + iVar10" (binary_expression "*(int *)(iVar3 + 0x28) + 0x40" (pointer_expression "*(int *)(iVar3 + 0x28)" (* "*") (cast_expression "(int *)(iVar3 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x28)" (( "(") (binary_expression "iVar3 + 0x28" (identifier "iVar3") (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "0x40")) (+ "+") (identifier "iVar10")) () ")"))))) () ")"))) (* "*") (cast_expression "(double)DAT_002df8a8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8a8")))) (; ";"))) (if_statement "if (2 < iVar7) {\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }" (if "if") (parenthesized_expression "(2 < iVar7)" (( "(") (binary_expression "2 < iVar7" (number_literal "2") (< "<") (identifier "iVar7")) () ")")) (compound_statement "{\n          dVar4 = dVar4 / (double)(int)uVar1;\n        }" ({ "{") (expression_statement "dVar4 = dVar4 / (double)(int)uVar1;" (assignment_expression "dVar4 = dVar4 / (double)(int)uVar1" (identifier "dVar4") (= "=") (binary_expression "dVar4 / (double)(int)uVar1" (identifier "dVar4") (/ "/") (cast_expression "(double)(int)uVar1" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (cast_expression "(int)uVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar1"))))) (; ";")) (} "}"))) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" (identifier "iVar6") (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;" (assignment_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4" (pointer_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)" (* "*") (cast_expression "(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)" (( "(") (binary_expression "*(int *)(iVar3 + 0x28) + 0x40 + iVar10" (binary_expression "*(int *)(iVar3 + 0x28) + 0x40" (pointer_expression "*(int *)(iVar3 + 0x28)" (* "*") (cast_expression "(int *)(iVar3 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x28)" (( "(") (binary_expression "iVar3 + 0x28" (identifier "iVar3") (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "0x40")) (+ "+") (identifier "iVar10")) () ")")))) (= "=") (identifier "dVar4")) (; ";")) (expression_statement "iVar10 = iVar10 + 0x50;" (assignment_expression "iVar10 = iVar10 + 0x50" (identifier "iVar10") (= "=") (binary_expression "iVar10 + 0x50" (identifier "iVar10") (+ "+") (number_literal "0x50"))) (; ";")) (if_statement "if (iVar8 == iVar6) goto LAB_00145b3a;" (if "if") (parenthesized_expression "(iVar8 == iVar6)" (( "(") (binary_expression "iVar8 == iVar6" (identifier "iVar8") (== "==") (identifier "iVar6")) () ")")) (goto_statement "goto LAB_00145b3a;" (goto "goto") (statement_identifier "LAB_00145b3a") (; ";"))) (} "}"))) (expression_statement "dVar4 = ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *\n              (double)DAT_002df8a8;" (assignment_expression "dVar4 = ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *\n              (double)DAT_002df8a8" (identifier "dVar4") (= "=") (binary_expression "ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *\n              (double)DAT_002df8a8" (call_expression "ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5)" (identifier "ROUND") (argument_list "((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5)" (( "(") (binary_expression "(double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5" (binary_expression "(double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10)" (cast_expression "(double)uVar1" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "uVar1")) (* "*") (pointer_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10)" (* "*") (cast_expression "(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar3 + 0x28) + 0x20 + iVar10)" (( "(") (binary_expression "*(int *)(iVar3 + 0x28) + 0x20 + iVar10" (binary_expression "*(int *)(iVar3 + 0x28) + 0x20" (pointer_expression "*(int *)(iVar3 + 0x28)" (* "*") (cast_expression "(int *)(iVar3 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x28)" (( "(") (binary_expression "iVar3 + 0x28" (identifier "iVar3") (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "0x20")) (+ "+") (identifier "iVar10")) () ")"))))) (* "*") (identifier "dVar5")) () ")"))) (* "*") (cast_expression "(double)DAT_002df8a8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8a8")))) (; ";")) (if_statement "if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }" (if "if") (parenthesized_expression "(2 < iVar7)" (( "(") (binary_expression "2 < iVar7" (number_literal "2") (< "<") (identifier "iVar7")) () ")")) (compound_statement "{\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }" ({ "{") (expression_statement "dVar4 = dVar4 / (double)(int)uVar1;" (assignment_expression "dVar4 = dVar4 / (double)(int)uVar1" (identifier "dVar4") (= "=") (binary_expression "dVar4 / (double)(int)uVar1" (identifier "dVar4") (/ "/") (cast_expression "(double)(int)uVar1" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (cast_expression "(int)uVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar1"))))) (; ";")) (} "}"))) (expression_statement "*(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) = dVar4;" (assignment_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) = dVar4" (pointer_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10)" (* "*") (cast_expression "(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar3 + 0x28) + 0x20 + iVar10)" (( "(") (binary_expression "*(int *)(iVar3 + 0x28) + 0x20 + iVar10" (binary_expression "*(int *)(iVar3 + 0x28) + 0x20" (pointer_expression "*(int *)(iVar3 + 0x28)" (* "*") (cast_expression "(int *)(iVar3 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x28)" (( "(") (binary_expression "iVar3 + 0x28" (identifier "iVar3") (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "0x20")) (+ "+") (identifier "iVar10")) () ")")))) (= "=") (identifier "dVar4")) (; ";")) (expression_statement "iVar9 = *(int *)(iVar3 + 0x2a8);" (assignment_expression "iVar9 = *(int *)(iVar3 + 0x2a8)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(iVar3 + 0x2a8)" (* "*") (cast_expression "(int *)(iVar3 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x2a8)" (( "(") (binary_expression "iVar3 + 0x2a8" (identifier "iVar3") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";")) (if_statement "if ((*(byte *)(iVar9 + 0x10) & 2) != 0) goto LAB_001458b1;" (if "if") (parenthesized_expression "((*(byte *)(iVar9 + 0x10) & 2) != 0)" (( "(") (binary_expression "(*(byte *)(iVar9 + 0x10) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x10) & 2)" (( "(") (binary_expression "*(byte *)(iVar9 + 0x10) & 2" (pointer_expression "*(byte *)(iVar9 + 0x10)" (* "*") (cast_expression "(byte *)(iVar9 + 0x10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x10)" (( "(") (binary_expression "iVar9 + 0x10" (identifier "iVar9") (+ "+") (number_literal "0x10")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_001458b1;" (goto "goto") (statement_identifier "LAB_001458b1") (; ";"))) (labeled_statement "LAB_001457b2:\n      if ((*(byte *)(iVar9 + 0x1c) & 2) == 0) goto LAB_001457bc;" (statement_identifier "LAB_001457b2") (: ":") (if_statement "if ((*(byte *)(iVar9 + 0x1c) & 2) == 0) goto LAB_001457bc;" (if "if") (parenthesized_expression "((*(byte *)(iVar9 + 0x1c) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(iVar9 + 0x1c) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar9 + 0x1c) & 2)" (( "(") (binary_expression "*(byte *)(iVar9 + 0x1c) & 2" (pointer_expression "*(byte *)(iVar9 + 0x1c)" (* "*") (cast_expression "(byte *)(iVar9 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x1c)" (( "(") (binary_expression "iVar9 + 0x1c" (identifier "iVar9") (+ "+") (number_literal "0x1c")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001457bc;" (goto "goto") (statement_identifier "LAB_001457bc") (; ";")))) (labeled_statement "LAB_00145986:\n      dVar4 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8;" (statement_identifier "LAB_00145986") (: ":") (expression_statement "dVar4 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8;" (assignment_expression "dVar4 = ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8" (identifier "dVar4") (= "=") (binary_expression "ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *\n              (double)DAT_002df8a8" (call_expression "ROUND((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10))" (identifier "ROUND") (argument_list "((double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10))" (( "(") (binary_expression "(double)uVar1 *\n                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)" (binary_expression "(double)uVar1 *\n                    _DAT_002df2e0" (cast_expression "(double)uVar1" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "uVar1")) (* "*") (identifier "_DAT_002df2e0")) (* "*") (pointer_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)" (* "*") (cast_expression "(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)" (( "(") (binary_expression "*(int *)(iVar3 + 0x28) + 0x30 + iVar10" (binary_expression "*(int *)(iVar3 + 0x28) + 0x30" (pointer_expression "*(int *)(iVar3 + 0x28)" (* "*") (cast_expression "(int *)(iVar3 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x28)" (( "(") (binary_expression "iVar3 + 0x28" (identifier "iVar3") (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "0x30")) (+ "+") (identifier "iVar10")) () ")"))))) () ")"))) (* "*") (cast_expression "(double)DAT_002df8a8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8a8")))) (; ";"))) (if_statement "if (2 < iVar7) {\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }" (if "if") (parenthesized_expression "(2 < iVar7)" (( "(") (binary_expression "2 < iVar7" (number_literal "2") (< "<") (identifier "iVar7")) () ")")) (compound_statement "{\n        dVar4 = dVar4 / (double)(int)uVar1;\n      }" ({ "{") (expression_statement "dVar4 = dVar4 / (double)(int)uVar1;" (assignment_expression "dVar4 = dVar4 / (double)(int)uVar1" (identifier "dVar4") (= "=") (binary_expression "dVar4 / (double)(int)uVar1" (identifier "dVar4") (/ "/") (cast_expression "(double)(int)uVar1" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (cast_expression "(int)uVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar1"))))) (; ";")) (} "}"))) (expression_statement "*(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10) = dVar4;" (assignment_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10) = dVar4" (pointer_expression "*(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)" (* "*") (cast_expression "(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)" (( "(") (binary_expression "*(int *)(iVar3 + 0x28) + 0x30 + iVar10" (binary_expression "*(int *)(iVar3 + 0x28) + 0x30" (pointer_expression "*(int *)(iVar3 + 0x28)" (* "*") (cast_expression "(int *)(iVar3 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x28)" (( "(") (binary_expression "iVar3 + 0x28" (identifier "iVar3") (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "0x30")) (+ "+") (identifier "iVar10")) () ")")))) (= "=") (identifier "dVar4")) (; ";")) (if_statement "if ((*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0) goto LAB_00145a5b;" (if "if") (parenthesized_expression "((*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0)" (( "(") (binary_expression "(*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0" (parenthesized_expression "(*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2)" (( "(") (binary_expression "*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2" (pointer_expression "*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34)" (* "*") (cast_expression "(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar3 + 0x2a8) + 0x34)" (( "(") (binary_expression "*(int *)(iVar3 + 0x2a8) + 0x34" (pointer_expression "*(int *)(iVar3 + 0x2a8)" (* "*") (cast_expression "(int *)(iVar3 + 0x2a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x2a8)" (( "(") (binary_expression "iVar3 + 0x2a8" (identifier "iVar3") (+ "+") (number_literal "0x2a8")) () ")")))) (+ "+") (number_literal "0x34")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00145a5b;" (goto "goto") (statement_identifier "LAB_00145a5b") (; ";"))) (labeled_statement "LAB_001457c6:\n      iVar6 = iVar6 + 1;" (statement_identifier "LAB_001457c6") (: ":") (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" (identifier "iVar6") (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "iVar10 = iVar10 + 0x50;" (assignment_expression "iVar10 = iVar10 + 0x50" (identifier "iVar10") (= "=") (binary_expression "iVar10 + 0x50" (identifier "iVar10") (+ "+") (number_literal "0x50"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar8 != iVar6)" (( "(") (binary_expression "iVar8 != iVar6" (identifier "iVar8") (!= "!=") (identifier "iVar6")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00145b3a:\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" (statement_identifier "LAB_00145b3a") (: ":") (if_statement "if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" (if "if") (parenthesized_expression "(iVar2 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "iVar2 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "iVar2") (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}")))) (expression_statement "FUN_002decd0();" (call_expression "FUN_002decd0()" (identifier "FUN_002decd0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* 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 */
/* DWARF original prototype: void PosterizeImage._omp_fn.1(anon_struct_8_2_5938f0ef * param_0) */

void __thiscall function_1(type_1 *this)

{
  type_2 uVar1;
  int var_14;
  type_3 *pIVar3;
  size_t var_7;
  double var_12;
  double var_13;
  int var_4;
  int var_5;
  int var_6;
  type_4 *pPVar10;
  int var_1;
  
  var_14 = *(int *)(var_1 + 0x14);
  pIVar3 = this->image;
  var_4 = var_2();
  var_5 = var_3();
  var_13 = var_11;
  var_6 = (int)pIVar3->colors / var_4;
  var_4 = (int)pIVar3->colors % var_4;
  if (var_5 < var_4) {
    var_6 = var_6 + 1;
    var_4 = 0;
  }
  var_4 = var_4 + var_5 * var_6;
  var_6 = var_6 + var_4;
  if (var_4 < var_6) {
    var_7 = this->levels;
    var_5 = var_4 * 0x50;
    uVar1 = var_7 - 1;
    do {
      while (pPVar10 = pIVar3->channel_map,
            (pPVar10->traits & var_8) == var_9) {
        if ((pPVar10[1].traits & var_8) == var_9) goto LAB_001457b2;
LAB_001458b1:
        var_12 = var_10((double)uVar1 *
                      var_11 * *(double *)((int)&pIVar3->colormap->green + var_5)) *
                (double)DAT_002df8a8;
        if (2 < (int)var_7) {
          var_12 = var_12 / (double)(int)uVar1;
        }
        *(double *)((int)&pIVar3->colormap->green + var_5) = var_12;
        pPVar10 = pIVar3->channel_map;
        if ((pPVar10[2].traits & var_8) != var_9) goto LAB_00145986;
LAB_001457bc:
        if ((pPVar10[4].traits & var_8) == var_9) goto LAB_001457c6;
LAB_00145a5b:
        var_12 = var_10((double)uVar1 *
                      var_11 * *(double *)((int)&pIVar3->colormap->alpha + var_5)) *
                (double)DAT_002df8a8;
        if (2 < (int)var_7) {
          var_12 = var_12 / (double)(int)uVar1;
        }
        var_4 = var_4 + 1;
        *(double *)((int)&pIVar3->colormap->alpha + var_5) = var_12;
        var_5 = var_5 + 0x50;
        if (var_6 == var_4) goto LAB_00145b3a;
      }
      var_12 = var_10((double)uVar1 * *(double *)((int)&pIVar3->colormap->red + var_5) * var_13) *
              (double)DAT_002df8a8;
      if (2 < (int)var_7) {
        var_12 = var_12 / (double)(int)uVar1;
      }
      *(double *)((int)&pIVar3->colormap->red + var_5) = var_12;
      pPVar10 = pIVar3->channel_map;
      if ((pPVar10[1].traits & var_8) != var_9) goto LAB_001458b1;
LAB_001457b2:
      if ((pPVar10[2].traits & var_8) == var_9) goto LAB_001457bc;
LAB_00145986:
      var_12 = var_10((double)uVar1 *
                    var_11 * *(double *)((int)&pIVar3->colormap->blue + var_5)) *
              (double)DAT_002df8a8;
      if (2 < (int)var_7) {
        var_12 = var_12 / (double)(int)uVar1;
      }
      *(double *)((int)&pIVar3->colormap->blue + var_5) = var_12;
      if ((pIVar3->channel_map[4].traits & var_8) != var_9)
      goto LAB_00145a5b;
LAB_001457c6:
      var_4 = var_4 + 1;
      var_5 = var_5 + 0x50;
    } while (var_6 != var_4);
  }
LAB_00145b3a:
  if (var_14 == *(int *)(var_1 + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  var_15();
}


(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)) (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: (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: (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)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (comma_expression left: (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)))))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal)))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (identifier)))))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (identifier))))) right: (identifier))) (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: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (identifier)))))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (identifier))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (identifier)))))) right: (identifier)))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (identifier))))) right: (identifier))) (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: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (identifier)))))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (identifier))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (return_statement)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void MASKED(int *param_1)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  double dVar4;
  double dVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int in_GS_OFFSET;
  
  iVar2 = *(int *)(in_GS_OFFSET + 0x14);
  iVar3 = *param_1;
  iVar6 = omp_get_num_threads();
  iVar7 = omp_get_thread_num();
  dVar5 = _DAT_002df2e0;
  iVar8 = *(int *)(iVar3 + 0x24) / iVar6;
  iVar6 = *(int *)(iVar3 + 0x24) % iVar6;
  if (iVar7 < iVar6) {
    iVar8 = iVar8 + 1;
    iVar6 = 0;
  }
  iVar6 = iVar6 + iVar7 * iVar8;
  iVar8 = iVar8 + iVar6;
  if (iVar6 < iVar8) {
    iVar7 = param_1[1];
    iVar10 = iVar6 * 0x50;
    uVar1 = iVar7 - 1;
    do {
      while (iVar9 = *(int *)(iVar3 + 0x2a8), (*(byte *)(iVar9 + 4) & 2) == 0) {
        if ((*(byte *)(iVar9 + 0x10) & 2) == 0) goto LAB_001457b2;
LAB_001458b1:
        dVar4 = ROUND((double)uVar1 *
                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10)) *
                (double)DAT_002df8a8;
        if (2 < iVar7) {
          dVar4 = dVar4 / (double)(int)uVar1;
        }
        *(double *)(*(int *)(iVar3 + 0x28) + 0x28 + iVar10) = dVar4;
        iVar9 = *(int *)(iVar3 + 0x2a8);
        if ((*(byte *)(iVar9 + 0x1c) & 2) != 0) goto LAB_00145986;
LAB_001457bc:
        if ((*(byte *)(iVar9 + 0x34) & 2) == 0) goto LAB_001457c6;
LAB_00145a5b:
        dVar4 = ROUND((double)uVar1 *
                      _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10)) *
                (double)DAT_002df8a8;
        if (2 < iVar7) {
          dVar4 = dVar4 / (double)(int)uVar1;
        }
        iVar6 = iVar6 + 1;
        *(double *)(*(int *)(iVar3 + 0x28) + 0x40 + iVar10) = dVar4;
        iVar10 = iVar10 + 0x50;
        if (iVar8 == iVar6) goto LAB_00145b3a;
      }
      dVar4 = ROUND((double)uVar1 * *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) * dVar5) *
              (double)DAT_002df8a8;
      if (2 < iVar7) {
        dVar4 = dVar4 / (double)(int)uVar1;
      }
      *(double *)(*(int *)(iVar3 + 0x28) + 0x20 + iVar10) = dVar4;
      iVar9 = *(int *)(iVar3 + 0x2a8);
      if ((*(byte *)(iVar9 + 0x10) & 2) != 0) goto LAB_001458b1;
LAB_001457b2:
      if ((*(byte *)(iVar9 + 0x1c) & 2) == 0) goto LAB_001457bc;
LAB_00145986:
      dVar4 = ROUND((double)uVar1 *
                    _DAT_002df2e0 * *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10)) *
              (double)DAT_002df8a8;
      if (2 < iVar7) {
        dVar4 = dVar4 / (double)(int)uVar1;
      }
      *(double *)(*(int *)(iVar3 + 0x28) + 0x30 + iVar10) = dVar4;
      if ((*(byte *)(*(int *)(iVar3 + 0x2a8) + 0x34) & 2) != 0) goto LAB_00145a5b;
LAB_001457c6:
      iVar6 = iVar6 + 1;
      iVar10 = iVar10 + 0x50;
    } while (iVar8 != iVar6);
  }
LAB_00145b3a:
  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_002decd0();
}

