
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Variable defined which should be unmapped: channel_distortion */
/* WARNING: Enum "GravityType": Some values do not have unique names */
/* WARNING: Enum "DisposeType": Some values do not have unique names */
/* WARNING: Enum "ChannelType": Some values do not have unique names */
/* WARNING: Enum "PixelChannel": Some values do not have unique names */
/* WARNING: Enum "ExceptionType": Some values do not have unique names */

MagickBooleanType __regparm3
GetMeanSquaredDistortion
          (Image *image,Image *reconstruct_image,double *distortion,ExceptionInfo *exception)

{
  int iVar1;
  PixelChannelMap *pPVar2;
  bool bVar3;
  double dVar4;
  double dVar5;
  MagickBooleanType MVar6;
  uint uVar7;
  CacheType CVar8;
  double *pdVar9;
  double *pdVar10;
  PixelChannelMap *pPVar11;
  CacheView *pCVar12;
  int iVar13;
  int in_GS_OFFSET;
  MagickSizeType MVar14;
  double channel_distortion [65];
  
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  uVar7 = image->rows;
  if (image->rows <= reconstruct_image->rows) {
    uVar7 = reconstruct_image->rows;
  }
  channel_distortion[0x36] = (double)CONCAT44(channel_distortion[0x36]._4_4_,uVar7);
  channel_distortion[0x37]._4_4_ = image->columns;
  if (image->columns <= reconstruct_image->columns) {
    channel_distortion[0x37]._4_4_ = reconstruct_image->columns;
  }
  channel_distortion[0x32]._4_4_ = exception;
  channel_distortion[0x31]._4_4_ = 0x67933;
  channel_distortion[0x32]._0_4_ = (code *)image;
  channel_distortion[0x34]._4_4_ = distortion;
  channel_distortion[0x35]._0_4_ = AcquireVirtualCacheView(image,exception);
  channel_distortion[0x32]._4_4_ = exception;
  channel_distortion[0x31]._4_4_ = 0x67940;
  channel_distortion[0x32]._0_4_ = (code *)reconstruct_image;
  channel_distortion[0x37]._0_4_ = AcquireVirtualCacheView(reconstruct_image,exception);
  channel_distortion[0x31]._4_4_ = 0x6794c;
  channel_distortion[0x32]._0_4_ = (code *)image;
  CVar8 = GetImagePixelCacheType(image);
  if (CVar8 == MemoryCache) {
LAB_00067aec:
    channel_distortion[0x31]._4_4_ = 0x67af5;
    channel_distortion[0x32]._0_4_ = (code *)image;
    CVar8 = GetImagePixelCacheType(image);
    if (CVar8 != MemoryCache) {
      channel_distortion[0x31]._4_4_ = 0x67b06;
      channel_distortion[0x32]._0_4_ = (code *)image;
      CVar8 = GetImagePixelCacheType(image);
      if (CVar8 != MapCache) goto LAB_0006796d;
    }
    channel_distortion[0x32]._0_4_ = (code *)0x7;
    channel_distortion[0x31]._4_4_ = 0x67b1c;
    MVar14 = GetMagickResourceLimit(ThreadResource);
    iVar13 = channel_distortion[0x36]._0_4_ + 0x3f;
    if (-1 < channel_distortion[0x36]._0_4_) {
      iVar13 = channel_distortion[0x36]._0_4_;
    }
    channel_distortion[0x38]._0_4_ = iVar13 >> 6;
    bVar3 = 0x7f < channel_distortion[0x36]._0_4_;
    iVar13 = channel_distortion[0x38]._0_4_;
    if ((int)MVar14 < channel_distortion[0x38]._0_4_) {
      channel_distortion[0x32]._0_4_ = (code *)0x7;
      channel_distortion[0x31]._4_4_ = 0x67b4a;
      channel_distortion[0x38]._4_4_ = channel_distortion[0x38]._0_4_;
      MVar14 = GetMagickResourceLimit(ThreadResource);
      bVar3 = 1 < (int)MVar14;
      iVar13 = channel_distortion[0x38]._4_4_;
    }
    if (bVar3) {
      channel_distortion[0x32]._0_4_ = (code *)0x7;
      channel_distortion[0x31]._4_4_ = 0x67bdb;
      channel_distortion[0x38]._4_4_ = iVar13;
      MVar14 = GetMagickResourceLimit(ThreadResource);
      channel_distortion[0x33]._0_4_ = channel_distortion[0x38]._0_4_;
      if ((int)MVar14 < channel_distortion[0x38]._4_4_) {
        channel_distortion[0x32]._0_4_ = (code *)0x7;
        channel_distortion[0x31]._4_4_ = 0x67bf9;
        MVar14 = GetMagickResourceLimit(ThreadResource);
        channel_distortion[0x33]._0_4_ = (int)MVar14;
      }
    }
    else {
LAB_00067b5b:
      channel_distortion[0x33]._0_4_ = 1;
    }
  }
  else {
    channel_distortion[0x31]._4_4_ = 0x67961;
    channel_distortion[0x32]._0_4_ = (code *)image;
    CVar8 = GetImagePixelCacheType(image);
    if (CVar8 == MapCache) goto LAB_00067aec;
LAB_0006796d:
    channel_distortion[0x32]._0_4_ = (code *)0x7;
    channel_distortion[0x31]._4_4_ = 0x67977;
    MVar14 = GetMagickResourceLimit(ThreadResource);
    if (((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2)) {
      channel_distortion[0x32]._0_4_ = (code *)0x7;
      channel_distortion[0x31]._4_4_ = 0x67b78;
      MVar14 = GetMagickResourceLimit(ThreadResource);
      if (((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2)) goto LAB_00067b5b;
    }
    channel_distortion[0x32]._0_4_ = (code *)0x7;
    channel_distortion[0x31]._4_4_ = 0x6798d;
    MVar14 = GetMagickResourceLimit(ThreadResource);
    if (((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2)) {
      channel_distortion[0x32]._0_4_ = (code *)0x7;
      channel_distortion[0x31]._4_4_ = 0x67bc5;
      MVar14 = GetMagickResourceLimit(ThreadResource);
      channel_distortion[0x33]._0_4_ = (int)MVar14;
    }
    else {
      channel_distortion[0x33]._0_4_ = 2;
    }
  }
  channel_distortion[0x3d]._4_4_ = exception;
  channel_distortion[0x3b] = 0.0;
  channel_distortion[0x40]._0_4_ = channel_distortion[0x36]._0_4_;
  channel_distortion[0x38]._0_4_ = 0;
  channel_distortion[0x3e]._0_4_ = channel_distortion[0x35]._0_4_;
  channel_distortion[0x3d]._0_4_ = channel_distortion[0x34]._4_4_;
  channel_distortion[0x3f]._4_4_ = channel_distortion[0x37]._4_4_;
  channel_distortion[0x3f]._0_4_ = 0;
  channel_distortion[0x40]._4_4_ = MagickTrue;
  channel_distortion[0x3e]._4_4_ = channel_distortion[0x37]._0_4_;
  channel_distortion[0x33]._4_4_ = (undefined *)0x0;
  channel_distortion[0x32]._4_4_ = (ExceptionInfo *)(channel_distortion + 0x3b);
  channel_distortion[0x32]._0_4_ = GetMeanSquaredDistortion__omp_fn_4;
  channel_distortion[0x31]._4_4_ = 0x67a00;
  channel_distortion[0x3c]._0_4_ = image;
  channel_distortion[0x3c]._4_4_ = reconstruct_image;
  GOMP_parallel(GetMeanSquaredDistortion__omp_fn_4,channel_distortion[0x32]._4_4_,
                channel_distortion[0x33]._0_4_,0);
  MVar6 = channel_distortion[0x40]._4_4_;
  channel_distortion[0x36] = channel_distortion[0x3b];
  channel_distortion[0x32]._0_4_ = (code *)channel_distortion[0x37]._0_4_;
  channel_distortion[0x31]._4_4_ = 0x67a16;
  DestroyCacheView(channel_distortion[0x37]._0_4_);
  channel_distortion[0x32]._0_4_ = (code *)channel_distortion[0x35]._0_4_;
  channel_distortion[0x31]._4_4_ = 0x67a20;
  DestroyCacheView(channel_distortion[0x35]._0_4_);
  if (channel_distortion[0x36] < 0.0) {
    dVar5 = -channel_distortion[0x36];
    dVar4 = -1.0;
  }
  else {
    dVar4 = 1.0;
    dVar5 = channel_distortion[0x36];
  }
  if (dVar5 < DAT_0029f138) {
    dVar4 = dVar4 / DAT_0029f138;
  }
  else {
    dVar4 = (double)DAT_0029f718 / channel_distortion[0x36];
  }
  pdVar9 = channel_distortion[0x34]._4_4_;
  do {
    pdVar10 = pdVar9 + 1;
    *pdVar9 = *pdVar9 * dVar4;
    pdVar9 = pdVar10;
  } while (channel_distortion[0x34]._4_4_ + 0x41 != pdVar10);
  if (0 < (int)image->number_channels) {
    pPVar2 = image->channel_map;
    pCVar12 = (CacheView *)0x0;
    pPVar11 = pPVar2;
    do {
      pCVar12 = (CacheView *)
                ((int)&pCVar12->image +
                (uint)((pPVar2[pPVar11->channel].traits & UpdatePixelTrait) != UndefinedPixelTrait))
      ;
      pPVar11 = pPVar11 + 1;
    } while (pPVar11 != pPVar2 + image->number_channels);
    if (pCVar12 != (CacheView *)0x0) {
      channel_distortion[0x35]._4_4_ = 0;
      dVar4 = (double)pCVar12;
      channel_distortion[0x35]._0_4_ = pCVar12;
      goto LAB_00067ac1;
    }
  }
  dVar4 = 1.0;
LAB_00067ac1:
  channel_distortion[0x34]._4_4_[0x40] = channel_distortion[0x34]._4_4_[0x40] / dVar4;
  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    channel_distortion[0x33]._4_4_ = &UNK_00067c07;
    __stack_chk_fail_local();
  }
  return MVar6;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

undefined4 __regparm3 FUN_000678e0(int param_1,int param_2,double *param_3,undefined4 param_4)

{
  int *piVar1;
  bool bVar2;
  double dVar3;
  double dVar4;
  double dVar5;
  undefined4 uVar6;
  uint uVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  int iVar10;
  int iVar11;
  double *pdVar12;
  double *pdVar13;
  int *piVar14;
  uint uVar15;
  uint uVar16;
  int in_GS_OFFSET;
  undefined8 uVar17;
  double local_54;
  int local_4c;
  int local_48;
  double *local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  uint local_30;
  uint local_2c;
  undefined4 local_28;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x678ed;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  uVar15 = *(uint *)(param_1 + 0x1c);
  if (*(uint *)(param_1 + 0x1c) <= *(uint *)(param_2 + 0x1c)) {
    uVar15 = *(uint *)(param_2 + 0x1c);
  }
  uVar7 = *(uint *)(param_1 + 0x18);
  if (*(uint *)(param_1 + 0x18) <= *(uint *)(param_2 + 0x18)) {
    uVar7 = *(uint *)(param_2 + 0x18);
  }
  uVar8 = AcquireVirtualCacheView(param_1,param_4);
  uVar9 = AcquireVirtualCacheView(param_2,param_4);
  iVar10 = GetImagePixelCacheType(param_1);
  if (((iVar10 == 4) || (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)) &&
     ((iVar10 = GetImagePixelCacheType(param_1), iVar10 == 4 ||
      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)))) {
    iVar10 = GetMagickResourceLimit(7);
    uVar16 = uVar15 + 0x3f;
    if (-1 < (int)uVar15) {
      uVar16 = uVar15;
    }
    iVar11 = (int)uVar16 >> 6;
    bVar2 = 0x7f < (int)uVar15;
    if (iVar10 < iVar11) {
      iVar10 = GetMagickResourceLimit(7);
      bVar2 = 1 < iVar10;
    }
    if (bVar2) {
      iVar10 = GetMagickResourceLimit(7);
      if (iVar10 < iVar11) {
        iVar11 = GetMagickResourceLimit(7);
      }
    }
    else {
LAB_00067b5b:
      iVar11 = 1;
    }
  }
  else {
    uVar17 = GetMagickResourceLimit(7);
    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {
      uVar17 = GetMagickResourceLimit(7);
      if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) goto LAB_00067b5b;
    }
    uVar17 = GetMagickResourceLimit(7);
    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {
      iVar11 = GetMagickResourceLimit(7);
    }
    else {
      iVar11 = 2;
    }
  }
  local_40 = param_4;
  local_54 = 0.0;
  local_34 = 0;
  local_28 = 1;
  local_4c = param_1;
  local_48 = param_2;
  local_44 = param_3;
  local_3c = uVar8;
  local_38 = uVar9;
  local_30 = uVar7;
  local_2c = uVar15;
  GOMP_parallel(FUN_00069e50,&local_54,iVar11,0);
  uVar6 = local_28;
  dVar3 = local_54;
  DestroyCacheView(uVar9);
  DestroyCacheView(uVar8);
  if (dVar3 < 0.0) {
    dVar4 = -dVar3;
    dVar5 = -1.0;
  }
  else {
    dVar5 = 1.0;
    dVar4 = dVar3;
  }
  if (dVar4 < DAT_0029f138) {
    dVar3 = dVar5 / DAT_0029f138;
  }
  else {
    dVar3 = (double)DAT_0029f718 / dVar3;
  }
  pdVar12 = param_3;
  do {
    pdVar13 = pdVar12 + 1;
    *pdVar12 = *pdVar12 * dVar3;
    pdVar12 = pdVar13;
  } while (param_3 + 0x41 != pdVar13);
  if (0 < *(int *)(param_1 + 0x298)) {
    piVar1 = *(int **)(param_1 + 0x2a8);
    uVar15 = 0;
    piVar14 = piVar1;
    do {
      uVar15 = (uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0);
      piVar14 = piVar14 + 3;
    } while (piVar14 != piVar1 + *(int *)(param_1 + 0x298) * 3);
    if (uVar15 != 0) {
      dVar3 = (double)uVar15;
      goto LAB_00067ac1;
    }
  }
  dVar3 = 1.0;
LAB_00067ac1:
  param_3[0x40] = param_3[0x40] / dVar3;
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_0029eab0();
  }
  return uVar6;
}


PUSH EBP
PUSH EDI
MOV EDI,EAX
PUSH ESI
MOV ESI,EDX
PUSH EBX
CALL 0x00038830
ADD EBX,0x371713
SUB ESP,0x84
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x74],EAX
XOR EAX,EAX
MOV EBP,dword ptr [ESP + 0x98]
MOV dword ptr [ESP + 0xc],ECX
MOV EAX,dword ptr [EDI + 0x1c]
CMP dword ptr [EDX + 0x1c],EAX
CMOVNC EAX,dword ptr [EDX + 0x1c]
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,dword ptr [EDI + 0x18]
CMP dword ptr [EDX + 0x18],EAX
CMOVNC EAX,dword ptr [EDX + 0x18]
MOV dword ptr [ESP + 0x24],EAX
PUSH EBP
PUSH EDI
CALL 0x00030eb0
MOV dword ptr [ESP + 0x18],EAX
POP ECX
POP EAX
PUSH EBP
PUSH ESI
CALL 0x00030eb0
MOV dword ptr [ESP],EDI
MOV dword ptr [ESP + 0x28],EAX
CALL 0x000318f0
ADD ESP,0x10
CMP EAX,0x4
JZ 0x00067aec
SUB ESP,0xc
PUSH EDI
CALL 0x000318f0
ADD ESP,0x10
CMP EAX,0x3
JZ 0x00067aec
SUB ESP,0xc
PUSH 0x7
CALL 0x00032640
ADD ESP,0x10
CMP EDX,0x0
JBE 0x00067b65
SUB ESP,0xc
PUSH 0x7
CALL 0x00032640
ADD ESP,0x10
CMP EDX,0x0
JBE 0x00067bb2
MOV EAX,0x2
MOV ECX,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x4c],EBP
FLDZ
MOV EDX,dword ptr [ESP + 0x8]
MOV dword ptr [ESP + 0x44],ESI
MOV EBP,dword ptr [ESP + 0x4]
MOV dword ptr [ESP + 0x40],EDI
FST qword ptr [ESP + 0x38]
MOV dword ptr [ESP + 0x60],ECX
MOV ECX,dword ptr [ESP + 0x1c]
FSTP dword ptr [ESP + 0x20]
MOV dword ptr [ESP + 0x50],EDX
MOV dword ptr [ESP + 0x48],EBP
MOV dword ptr [ESP + 0x5c],ECX
MOV ECX,dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x58],0x0
MOV dword ptr [ESP + 0x64],0x1
MOV dword ptr [ESP + 0x54],ECX
PUSH 0x0
PUSH EAX
LEA EAX,[ESP + 0x40]
PUSH EAX
LEA EAX,[EBX + 0xffc90e50]
PUSH EAX
CALL 0x000324d0
FLD qword ptr [ESP + 0x48]
FSTP qword ptr [ESP + 0x20]
MOV ESI,dword ptr [ESP + 0x74]
POP EAX
PUSH dword ptr [ESP + 0x24]
CALL 0x00032f30
POP EDX
PUSH dword ptr [ESP + 0x14]
CALL 0x00032f30
ADD ESP,0x10
FLDZ
FLD qword ptr [ESP + 0x10]
FLD ST0
FXCH ST2
FUCOMIP ST0,ST1
JA 0x00067b9f
FLD1
FLD qword ptr [EBX + 0xffec6138]
FXCH ST3
FUCOMIP ST0,ST3
JC 0x00067b8f
FSTP ST0
FSTP ST1
FDIVR dword ptr [EBX + 0xffec6718]
MOV ECX,dword ptr [ESP + 0x4]
LEA EDX,[ECX + 0x208]
MOV EAX,ECX
LEA ESI,[ESI]
FLD qword ptr [EAX]
ADD EAX,0x8
FMUL ST1
FSTP qword ptr [EAX + -0x8]
CMP EDX,EAX
JNZ 0x00067a60
FSTP ST0
MOV EDX,dword ptr [EDI + 0x298]
TEST EDX,EDX
JLE 0x00067b98
MOV EDI,dword ptr [EDI + 0x2a8]
LEA EDX,[EDX + EDX*0x2]
XOR ECX,ECX
LEA EBP,[EDI + EDX*0x4]
MOV EAX,EDI
NOP
MOV EDX,dword ptr [EAX]
LEA EDX,[EDX + EDX*0x2]
MOV EDX,dword ptr [EDI + EDX*0x4 + 0x4]
AND EDX,0x2
CMP EDX,0x1
SBB ECX,-0x1
ADD EAX,0xc
CMP EAX,EBP
JNZ 0x00067a90
TEST ECX,ECX
JZ 0x00067b98
MOV dword ptr [ESP + 0x8],ECX
MOV dword ptr [ESP + 0xc],0x0
FILD qword ptr [ESP + 0x8]
MOV EAX,dword ptr [ESP + 0x4]
FDIVR qword ptr [EAX + 0x200]
FSTP qword ptr [EAX + 0x200]
MOV EAX,ESI
MOV ESI,dword ptr [ESP + 0x6c]
XOR ESI,dword ptr GS:[0x14]
JNZ 0x00067c02
ADD ESP,0x7c
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0xc
PUSH EDI
CALL 0x000318f0
ADD ESP,0x10
CMP EAX,0x4
JZ 0x00067b12
SUB ESP,0xc
PUSH EDI
CALL 0x000318f0
ADD ESP,0x10
CMP EAX,0x3
JNZ 0x0006796d
SUB ESP,0xc
PUSH 0x7
CALL 0x00032640
MOV EDX,dword ptr [ESP + 0x20]
ADD ESP,0x10
LEA ECX,[EDX + 0x3f]
TEST EDX,EDX
CMOVNS ECX,EDX
SAR ECX,0x6
CMP EDX,0x7f
SETG DL
CMP ECX,EAX
MOV dword ptr [ESP + 0x20],ECX
JLE 0x00067b57
MOV dword ptr [ESP + 0x24],ECX
SUB ESP,0xc
PUSH 0x7
CALL 0x00032640
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x24]
CMP EAX,0x1
SETG DL
TEST DL,DL
JNZ 0x00067bcd
MOV EAX,0x1
JMP 0x0006799e
CMP EAX,0x1
JA 0x00067983
SUB ESP,0xc
PUSH 0x7
CALL 0x00032640
ADD ESP,0x10
CMP EDX,0x0
JA 0x00067983
CMP EAX,0x1
JA 0x00067983
JMP 0x00067b5b
FSTP ST1
FDIVRP
JMP 0x00067a51
FLD1
JMP 0x00067ac1
FXCH
FCHS
FLD1
FCHS
FXCH
FXCH ST2
FXCH
JMP 0x00067a37
CMP EAX,0x1
JA 0x00067999
SUB ESP,0xc
PUSH 0x7
CALL 0x00032640
ADD ESP,0x10
JMP 0x0006799e
MOV dword ptr [ESP + 0x24],ECX
SUB ESP,0xc
PUSH 0x7
CALL 0x00032640
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x24]
CMP ECX,EAX
JG 0x00067bef
MOV EAX,dword ptr [ESP + 0x20]
JMP 0x0006799e
SUB ESP,0xc
PUSH 0x7
CALL 0x00032640
MOV dword ptr [ESP + 0x30],EAX
ADD ESP,0x10
JMP 0x00067be6
CALL 0x0029eab0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 __regparm3 FUN_000678e0(int param_1,int param_2,double *param_3,undefined4 param_4)\n\n{\n  int *piVar1;\n  bool bVar2;\n  double dVar3;\n  double dVar4;\n  double dVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  double *pdVar12;\n  double *pdVar13;\n  int *piVar14;\n  uint uVar15;\n  uint uVar16;\n  int in_GS_OFFSET;\n  undefined8 uVar17;\n  double local_54;\n  int local_4c;\n  int local_48;\n  double *local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  uint local_30;\n  uint local_2c;\n  undefined4 local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x678ed;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar15 = *(uint *)(param_1 + 0x1c);\n  if (*(uint *)(param_1 + 0x1c) <= *(uint *)(param_2 + 0x1c)) {\n    uVar15 = *(uint *)(param_2 + 0x1c);\n  }\n  uVar7 = *(uint *)(param_1 + 0x18);\n  if (*(uint *)(param_1 + 0x18) <= *(uint *)(param_2 + 0x18)) {\n    uVar7 = *(uint *)(param_2 + 0x18);\n  }\n  uVar8 = AcquireVirtualCacheView(param_1,param_4);\n  uVar9 = AcquireVirtualCacheView(param_2,param_4);\n  iVar10 = GetImagePixelCacheType(param_1);\n  if (((iVar10 == 4) || (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)) &&\n     ((iVar10 = GetImagePixelCacheType(param_1), iVar10 == 4 ||\n      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)))) {\n    iVar10 = GetMagickResourceLimit(7);\n    uVar16 = uVar15 + 0x3f;\n    if (-1 < (int)uVar15) {\n      uVar16 = uVar15;\n    }\n    iVar11 = (int)uVar16 >> 6;\n    bVar2 = 0x7f < (int)uVar15;\n    if (iVar10 < iVar11) {\n      iVar10 = GetMagickResourceLimit(7);\n      bVar2 = 1 < iVar10;\n    }\n    if (bVar2) {\n      iVar10 = GetMagickResourceLimit(7);\n      if (iVar10 < iVar11) {\n        iVar11 = GetMagickResourceLimit(7);\n      }\n    }\n    else {\nLAB_00067b5b:\n      iVar11 = 1;\n    }\n  }\n  else {\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      uVar17 = GetMagickResourceLimit(7);\n      if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) goto LAB_00067b5b;\n    }\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      iVar11 = GetMagickResourceLimit(7);\n    }\n    else {\n      iVar11 = 2;\n    }\n  }\n  local_40 = param_4;\n  local_54 = 0.0;\n  local_34 = 0;\n  local_28 = 1;\n  local_4c = param_1;\n  local_48 = param_2;\n  local_44 = param_3;\n  local_3c = uVar8;\n  local_38 = uVar9;\n  local_30 = uVar7;\n  local_2c = uVar15;\n  GOMP_parallel(FUN_00069e50,&local_54,iVar11,0);\n  uVar6 = local_28;\n  dVar3 = local_54;\n  DestroyCacheView(uVar9);\n  DestroyCacheView(uVar8);\n  if (dVar3 < 0.0) {\n    dVar4 = -dVar3;\n    dVar5 = -1.0;\n  }\n  else {\n    dVar5 = 1.0;\n    dVar4 = dVar3;\n  }\n  if (dVar4 < DAT_0029f138) {\n    dVar3 = dVar5 / DAT_0029f138;\n  }\n  else {\n    dVar3 = (double)DAT_0029f718 / dVar3;\n  }\n  pdVar12 = param_3;\n  do {\n    pdVar13 = pdVar12 + 1;\n    *pdVar12 = *pdVar12 * dVar3;\n    pdVar12 = pdVar13;\n  } while (param_3 + 0x41 != pdVar13);\n  if (0 < *(int *)(param_1 + 0x298)) {\n    piVar1 = *(int **)(param_1 + 0x2a8);\n    uVar15 = 0;\n    piVar14 = piVar1;\n    do {\n      uVar15 = (uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0);\n      piVar14 = piVar14 + 3;\n    } while (piVar14 != piVar1 + *(int *)(param_1 + 0x298) * 3);\n    if (uVar15 != 0) {\n      dVar3 = (double)uVar15;\n      goto LAB_00067ac1;\n    }\n  }\n  dVar3 = 1.0;\nLAB_00067ac1:\n  param_3[0x40] = param_3[0x40] / dVar3;\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0029eab0();\n  }\n  return uVar6;\n}\n\n" comment (function_definition "undefined4 __regparm3 FUN_000678e0(int param_1,int param_2,double *param_3,undefined4 param_4)\n\n{\n  int *piVar1;\n  bool bVar2;\n  double dVar3;\n  double dVar4;\n  double dVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  double *pdVar12;\n  double *pdVar13;\n  int *piVar14;\n  uint uVar15;\n  uint uVar16;\n  int in_GS_OFFSET;\n  undefined8 uVar17;\n  double local_54;\n  int local_4c;\n  int local_48;\n  double *local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  uint local_30;\n  uint local_2c;\n  undefined4 local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x678ed;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar15 = *(uint *)(param_1 + 0x1c);\n  if (*(uint *)(param_1 + 0x1c) <= *(uint *)(param_2 + 0x1c)) {\n    uVar15 = *(uint *)(param_2 + 0x1c);\n  }\n  uVar7 = *(uint *)(param_1 + 0x18);\n  if (*(uint *)(param_1 + 0x18) <= *(uint *)(param_2 + 0x18)) {\n    uVar7 = *(uint *)(param_2 + 0x18);\n  }\n  uVar8 = AcquireVirtualCacheView(param_1,param_4);\n  uVar9 = AcquireVirtualCacheView(param_2,param_4);\n  iVar10 = GetImagePixelCacheType(param_1);\n  if (((iVar10 == 4) || (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)) &&\n     ((iVar10 = GetImagePixelCacheType(param_1), iVar10 == 4 ||\n      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)))) {\n    iVar10 = GetMagickResourceLimit(7);\n    uVar16 = uVar15 + 0x3f;\n    if (-1 < (int)uVar15) {\n      uVar16 = uVar15;\n    }\n    iVar11 = (int)uVar16 >> 6;\n    bVar2 = 0x7f < (int)uVar15;\n    if (iVar10 < iVar11) {\n      iVar10 = GetMagickResourceLimit(7);\n      bVar2 = 1 < iVar10;\n    }\n    if (bVar2) {\n      iVar10 = GetMagickResourceLimit(7);\n      if (iVar10 < iVar11) {\n        iVar11 = GetMagickResourceLimit(7);\n      }\n    }\n    else {\nLAB_00067b5b:\n      iVar11 = 1;\n    }\n  }\n  else {\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      uVar17 = GetMagickResourceLimit(7);\n      if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) goto LAB_00067b5b;\n    }\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      iVar11 = GetMagickResourceLimit(7);\n    }\n    else {\n      iVar11 = 2;\n    }\n  }\n  local_40 = param_4;\n  local_54 = 0.0;\n  local_34 = 0;\n  local_28 = 1;\n  local_4c = param_1;\n  local_48 = param_2;\n  local_44 = param_3;\n  local_3c = uVar8;\n  local_38 = uVar9;\n  local_30 = uVar7;\n  local_2c = uVar15;\n  GOMP_parallel(FUN_00069e50,&local_54,iVar11,0);\n  uVar6 = local_28;\n  dVar3 = local_54;\n  DestroyCacheView(uVar9);\n  DestroyCacheView(uVar8);\n  if (dVar3 < 0.0) {\n    dVar4 = -dVar3;\n    dVar5 = -1.0;\n  }\n  else {\n    dVar5 = 1.0;\n    dVar4 = dVar3;\n  }\n  if (dVar4 < DAT_0029f138) {\n    dVar3 = dVar5 / DAT_0029f138;\n  }\n  else {\n    dVar3 = (double)DAT_0029f718 / dVar3;\n  }\n  pdVar12 = param_3;\n  do {\n    pdVar13 = pdVar12 + 1;\n    *pdVar12 = *pdVar12 * dVar3;\n    pdVar12 = pdVar13;\n  } while (param_3 + 0x41 != pdVar13);\n  if (0 < *(int *)(param_1 + 0x298)) {\n    piVar1 = *(int **)(param_1 + 0x2a8);\n    uVar15 = 0;\n    piVar14 = piVar1;\n    do {\n      uVar15 = (uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0);\n      piVar14 = piVar14 + 3;\n    } while (piVar14 != piVar1 + *(int *)(param_1 + 0x298) * 3);\n    if (uVar15 != 0) {\n      dVar3 = (double)uVar15;\n      goto LAB_00067ac1;\n    }\n  }\n  dVar3 = 1.0;\nLAB_00067ac1:\n  param_3[0x40] = param_3[0x40] / dVar3;\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0029eab0();\n  }\n  return uVar6;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_000678e0(int param_1,int param_2,double *param_3,undefined4 param_4)" identifier (parameter_list "(int param_1,int param_2,double *param_3,undefined4 param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "double *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  int *piVar1;\n  bool bVar2;\n  double dVar3;\n  double dVar4;\n  double dVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  double *pdVar12;\n  double *pdVar13;\n  int *piVar14;\n  uint uVar15;\n  uint uVar16;\n  int in_GS_OFFSET;\n  undefined8 uVar17;\n  double local_54;\n  int local_4c;\n  int local_48;\n  double *local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  uint local_30;\n  uint local_2c;\n  undefined4 local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x678ed;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar15 = *(uint *)(param_1 + 0x1c);\n  if (*(uint *)(param_1 + 0x1c) <= *(uint *)(param_2 + 0x1c)) {\n    uVar15 = *(uint *)(param_2 + 0x1c);\n  }\n  uVar7 = *(uint *)(param_1 + 0x18);\n  if (*(uint *)(param_1 + 0x18) <= *(uint *)(param_2 + 0x18)) {\n    uVar7 = *(uint *)(param_2 + 0x18);\n  }\n  uVar8 = AcquireVirtualCacheView(param_1,param_4);\n  uVar9 = AcquireVirtualCacheView(param_2,param_4);\n  iVar10 = GetImagePixelCacheType(param_1);\n  if (((iVar10 == 4) || (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)) &&\n     ((iVar10 = GetImagePixelCacheType(param_1), iVar10 == 4 ||\n      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)))) {\n    iVar10 = GetMagickResourceLimit(7);\n    uVar16 = uVar15 + 0x3f;\n    if (-1 < (int)uVar15) {\n      uVar16 = uVar15;\n    }\n    iVar11 = (int)uVar16 >> 6;\n    bVar2 = 0x7f < (int)uVar15;\n    if (iVar10 < iVar11) {\n      iVar10 = GetMagickResourceLimit(7);\n      bVar2 = 1 < iVar10;\n    }\n    if (bVar2) {\n      iVar10 = GetMagickResourceLimit(7);\n      if (iVar10 < iVar11) {\n        iVar11 = GetMagickResourceLimit(7);\n      }\n    }\n    else {\nLAB_00067b5b:\n      iVar11 = 1;\n    }\n  }\n  else {\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      uVar17 = GetMagickResourceLimit(7);\n      if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) goto LAB_00067b5b;\n    }\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      iVar11 = GetMagickResourceLimit(7);\n    }\n    else {\n      iVar11 = 2;\n    }\n  }\n  local_40 = param_4;\n  local_54 = 0.0;\n  local_34 = 0;\n  local_28 = 1;\n  local_4c = param_1;\n  local_48 = param_2;\n  local_44 = param_3;\n  local_3c = uVar8;\n  local_38 = uVar9;\n  local_30 = uVar7;\n  local_2c = uVar15;\n  GOMP_parallel(FUN_00069e50,&local_54,iVar11,0);\n  uVar6 = local_28;\n  dVar3 = local_54;\n  DestroyCacheView(uVar9);\n  DestroyCacheView(uVar8);\n  if (dVar3 < 0.0) {\n    dVar4 = -dVar3;\n    dVar5 = -1.0;\n  }\n  else {\n    dVar5 = 1.0;\n    dVar4 = dVar3;\n  }\n  if (dVar4 < DAT_0029f138) {\n    dVar3 = dVar5 / DAT_0029f138;\n  }\n  else {\n    dVar3 = (double)DAT_0029f718 / dVar3;\n  }\n  pdVar12 = param_3;\n  do {\n    pdVar13 = pdVar12 + 1;\n    *pdVar12 = *pdVar12 * dVar3;\n    pdVar12 = pdVar13;\n  } while (param_3 + 0x41 != pdVar13);\n  if (0 < *(int *)(param_1 + 0x298)) {\n    piVar1 = *(int **)(param_1 + 0x2a8);\n    uVar15 = 0;\n    piVar14 = piVar1;\n    do {\n      uVar15 = (uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0);\n      piVar14 = piVar14 + 3;\n    } while (piVar14 != piVar1 + *(int *)(param_1 + 0x298) * 3);\n    if (uVar15 != 0) {\n      dVar3 = (double)uVar15;\n      goto LAB_00067ac1;\n    }\n  }\n  dVar3 = 1.0;\nLAB_00067ac1:\n  param_3[0x40] = param_3[0x40] / dVar3;\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0029eab0();\n  }\n  return uVar6;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "double dVar3;" primitive_type identifier ;) (declaration "double dVar4;" primitive_type identifier ;) (declaration "double dVar5;" primitive_type identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "double *pdVar12;" primitive_type (pointer_declarator "*pdVar12" * identifier) ;) (declaration "double *pdVar13;" primitive_type (pointer_declarator "*pdVar13" * identifier) ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined8 uVar17;" type_identifier identifier ;) (declaration "double local_54;" primitive_type identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "double *local_44;" primitive_type (pointer_declarator "*local_44" * identifier) ;) (declaration "undefined4 local_40;" type_identifier identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "undefined4 local_38;" type_identifier identifier ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x678ed;" (assignment_expression "uStack_14 = 0x678ed" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar15 = *(uint *)(param_1 + 0x1c);" (assignment_expression "uVar15 = *(uint *)(param_1 + 0x1c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x1c)" * (cast_expression "(uint *)(param_1 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) ))))) ;) (if_statement "if (*(uint *)(param_1 + 0x1c) <= *(uint *)(param_2 + 0x1c)) {\n    uVar15 = *(uint *)(param_2 + 0x1c);\n  }" if (parenthesized_expression "(*(uint *)(param_1 + 0x1c) <= *(uint *)(param_2 + 0x1c))" ( (binary_expression "*(uint *)(param_1 + 0x1c) <= *(uint *)(param_2 + 0x1c)" (pointer_expression "*(uint *)(param_1 + 0x1c)" * (cast_expression "(uint *)(param_1 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) <= (pointer_expression "*(uint *)(param_2 + 0x1c)" * (cast_expression "(uint *)(param_2 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) ))))) )) (compound_statement "{\n    uVar15 = *(uint *)(param_2 + 0x1c);\n  }" { (expression_statement "uVar15 = *(uint *)(param_2 + 0x1c);" (assignment_expression "uVar15 = *(uint *)(param_2 + 0x1c)" identifier = (pointer_expression "*(uint *)(param_2 + 0x1c)" * (cast_expression "(uint *)(param_2 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) ))))) ;) })) (expression_statement "uVar7 = *(uint *)(param_1 + 0x18);" (assignment_expression "uVar7 = *(uint *)(param_1 + 0x18)" identifier = (pointer_expression "*(uint *)(param_1 + 0x18)" * (cast_expression "(uint *)(param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (*(uint *)(param_1 + 0x18) <= *(uint *)(param_2 + 0x18)) {\n    uVar7 = *(uint *)(param_2 + 0x18);\n  }" if (parenthesized_expression "(*(uint *)(param_1 + 0x18) <= *(uint *)(param_2 + 0x18))" ( (binary_expression "*(uint *)(param_1 + 0x18) <= *(uint *)(param_2 + 0x18)" (pointer_expression "*(uint *)(param_1 + 0x18)" * (cast_expression "(uint *)(param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) <= (pointer_expression "*(uint *)(param_2 + 0x18)" * (cast_expression "(uint *)(param_2 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n    uVar7 = *(uint *)(param_2 + 0x18);\n  }" { (expression_statement "uVar7 = *(uint *)(param_2 + 0x18);" (assignment_expression "uVar7 = *(uint *)(param_2 + 0x18)" identifier = (pointer_expression "*(uint *)(param_2 + 0x18)" * (cast_expression "(uint *)(param_2 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) ;) })) (expression_statement "uVar8 = AcquireVirtualCacheView(param_1,param_4);" (assignment_expression "uVar8 = AcquireVirtualCacheView(param_1,param_4)" identifier = (call_expression "AcquireVirtualCacheView(param_1,param_4)" identifier (argument_list "(param_1,param_4)" ( identifier , identifier )))) ;) (expression_statement "uVar9 = AcquireVirtualCacheView(param_2,param_4);" (assignment_expression "uVar9 = AcquireVirtualCacheView(param_2,param_4)" identifier = (call_expression "AcquireVirtualCacheView(param_2,param_4)" identifier (argument_list "(param_2,param_4)" ( identifier , identifier )))) ;) (expression_statement "iVar10 = GetImagePixelCacheType(param_1);" (assignment_expression "iVar10 = GetImagePixelCacheType(param_1)" identifier = (call_expression "GetImagePixelCacheType(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (((iVar10 == 4) || (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)) &&\n     ((iVar10 = GetImagePixelCacheType(param_1), iVar10 == 4 ||\n      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)))) {\n    iVar10 = GetMagickResourceLimit(7);\n    uVar16 = uVar15 + 0x3f;\n    if (-1 < (int)uVar15) {\n      uVar16 = uVar15;\n    }\n    iVar11 = (int)uVar16 >> 6;\n    bVar2 = 0x7f < (int)uVar15;\n    if (iVar10 < iVar11) {\n      iVar10 = GetMagickResourceLimit(7);\n      bVar2 = 1 < iVar10;\n    }\n    if (bVar2) {\n      iVar10 = GetMagickResourceLimit(7);\n      if (iVar10 < iVar11) {\n        iVar11 = GetMagickResourceLimit(7);\n      }\n    }\n    else {\nLAB_00067b5b:\n      iVar11 = 1;\n    }\n  }\n  else {\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      uVar17 = GetMagickResourceLimit(7);\n      if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) goto LAB_00067b5b;\n    }\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      iVar11 = GetMagickResourceLimit(7);\n    }\n    else {\n      iVar11 = 2;\n    }\n  }" if (parenthesized_expression "(((iVar10 == 4) || (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)) &&\n     ((iVar10 = GetImagePixelCacheType(param_1), iVar10 == 4 ||\n      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3))))" ( (binary_expression "((iVar10 == 4) || (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)) &&\n     ((iVar10 = GetImagePixelCacheType(param_1), iVar10 == 4 ||\n      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)))" (parenthesized_expression "((iVar10 == 4) || (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3))" ( (binary_expression "(iVar10 == 4) || (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)" (parenthesized_expression "(iVar10 == 4)" ( (binary_expression "iVar10 == 4" identifier == number_literal) )) || (parenthesized_expression "(iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)" ( (comma_expression "iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3" (assignment_expression "iVar10 = GetImagePixelCacheType(param_1)" identifier = (call_expression "GetImagePixelCacheType(param_1)" identifier (argument_list "(param_1)" ( identifier )))) , (binary_expression "iVar10 == 3" identifier == number_literal)) ))) )) && (parenthesized_expression "((iVar10 = GetImagePixelCacheType(param_1), iVar10 == 4 ||\n      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)))" ( (parenthesized_expression "(iVar10 = GetImagePixelCacheType(param_1), iVar10 == 4 ||\n      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3))" ( (comma_expression "iVar10 = GetImagePixelCacheType(param_1), iVar10 == 4 ||\n      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)" (assignment_expression "iVar10 = GetImagePixelCacheType(param_1)" identifier = (call_expression "GetImagePixelCacheType(param_1)" identifier (argument_list "(param_1)" ( identifier )))) , (binary_expression "iVar10 == 4 ||\n      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)" (binary_expression "iVar10 == 4" identifier == number_literal) || (parenthesized_expression "(iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)" ( (comma_expression "iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3" (assignment_expression "iVar10 = GetImagePixelCacheType(param_1)" identifier = (call_expression "GetImagePixelCacheType(param_1)" identifier (argument_list "(param_1)" ( identifier )))) , (binary_expression "iVar10 == 3" identifier == number_literal)) )))) )) ))) )) (compound_statement "{\n    iVar10 = GetMagickResourceLimit(7);\n    uVar16 = uVar15 + 0x3f;\n    if (-1 < (int)uVar15) {\n      uVar16 = uVar15;\n    }\n    iVar11 = (int)uVar16 >> 6;\n    bVar2 = 0x7f < (int)uVar15;\n    if (iVar10 < iVar11) {\n      iVar10 = GetMagickResourceLimit(7);\n      bVar2 = 1 < iVar10;\n    }\n    if (bVar2) {\n      iVar10 = GetMagickResourceLimit(7);\n      if (iVar10 < iVar11) {\n        iVar11 = GetMagickResourceLimit(7);\n      }\n    }\n    else {\nLAB_00067b5b:\n      iVar11 = 1;\n    }\n  }" { (expression_statement "iVar10 = GetMagickResourceLimit(7);" (assignment_expression "iVar10 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) ;) (expression_statement "uVar16 = uVar15 + 0x3f;" (assignment_expression "uVar16 = uVar15 + 0x3f" identifier = (binary_expression "uVar15 + 0x3f" identifier + number_literal)) ;) (if_statement "if (-1 < (int)uVar15) {\n      uVar16 = uVar15;\n    }" if (parenthesized_expression "(-1 < (int)uVar15)" ( (binary_expression "-1 < (int)uVar15" number_literal < (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      uVar16 = uVar15;\n    }" { (expression_statement "uVar16 = uVar15;" (assignment_expression "uVar16 = uVar15" identifier = identifier) ;) })) (expression_statement "iVar11 = (int)uVar16 >> 6;" (assignment_expression "iVar11 = (int)uVar16 >> 6" identifier = (binary_expression "(int)uVar16 >> 6" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "bVar2 = 0x7f < (int)uVar15;" (assignment_expression "bVar2 = 0x7f < (int)uVar15" identifier = (binary_expression "0x7f < (int)uVar15" number_literal < (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (iVar10 < iVar11) {\n      iVar10 = GetMagickResourceLimit(7);\n      bVar2 = 1 < iVar10;\n    }" if (parenthesized_expression "(iVar10 < iVar11)" ( (binary_expression "iVar10 < iVar11" identifier < identifier) )) (compound_statement "{\n      iVar10 = GetMagickResourceLimit(7);\n      bVar2 = 1 < iVar10;\n    }" { (expression_statement "iVar10 = GetMagickResourceLimit(7);" (assignment_expression "iVar10 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) ;) (expression_statement "bVar2 = 1 < iVar10;" (assignment_expression "bVar2 = 1 < iVar10" identifier = (binary_expression "1 < iVar10" number_literal < identifier)) ;) })) (if_statement "if (bVar2) {\n      iVar10 = GetMagickResourceLimit(7);\n      if (iVar10 < iVar11) {\n        iVar11 = GetMagickResourceLimit(7);\n      }\n    }\n    else {\nLAB_00067b5b:\n      iVar11 = 1;\n    }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n      iVar10 = GetMagickResourceLimit(7);\n      if (iVar10 < iVar11) {\n        iVar11 = GetMagickResourceLimit(7);\n      }\n    }" { (expression_statement "iVar10 = GetMagickResourceLimit(7);" (assignment_expression "iVar10 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) ;) (if_statement "if (iVar10 < iVar11) {\n        iVar11 = GetMagickResourceLimit(7);\n      }" if (parenthesized_expression "(iVar10 < iVar11)" ( (binary_expression "iVar10 < iVar11" identifier < identifier) )) (compound_statement "{\n        iVar11 = GetMagickResourceLimit(7);\n      }" { (expression_statement "iVar11 = GetMagickResourceLimit(7);" (assignment_expression "iVar11 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) ;) })) }) (else_clause "else {\nLAB_00067b5b:\n      iVar11 = 1;\n    }" else (compound_statement "{\nLAB_00067b5b:\n      iVar11 = 1;\n    }" { (labeled_statement "LAB_00067b5b:\n      iVar11 = 1;" statement_identifier : (expression_statement "iVar11 = 1;" (assignment_expression "iVar11 = 1" identifier = number_literal) ;)) }))) }) (else_clause "else {\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      uVar17 = GetMagickResourceLimit(7);\n      if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) goto LAB_00067b5b;\n    }\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      iVar11 = GetMagickResourceLimit(7);\n    }\n    else {\n      iVar11 = 2;\n    }\n  }" else (compound_statement "{\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      uVar17 = GetMagickResourceLimit(7);\n      if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) goto LAB_00067b5b;\n    }\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      iVar11 = GetMagickResourceLimit(7);\n    }\n    else {\n      iVar11 = 2;\n    }\n  }" { (expression_statement "uVar17 = GetMagickResourceLimit(7);" (assignment_expression "uVar17 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) ;) (if_statement "if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      uVar17 = GetMagickResourceLimit(7);\n      if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) goto LAB_00067b5b;\n    }" if (parenthesized_expression "(((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2))" ( (binary_expression "((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)" (parenthesized_expression "((int)((ulonglong)uVar17 >> 0x20) == 0)" ( (binary_expression "(int)((ulonglong)uVar17 >> 0x20) == 0" (cast_expression "(int)((ulonglong)uVar17 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar17 >> 0x20)" ( (binary_expression "(ulonglong)uVar17 >> 0x20" (cast_expression "(ulonglong)uVar17" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) == number_literal) )) && (parenthesized_expression "((uint)uVar17 < 2)" ( (binary_expression "(uint)uVar17 < 2" (cast_expression "(uint)uVar17" ( (type_descriptor "uint" type_identifier) ) identifier) < number_literal) ))) )) (compound_statement "{\n      uVar17 = GetMagickResourceLimit(7);\n      if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) goto LAB_00067b5b;\n    }" { (expression_statement "uVar17 = GetMagickResourceLimit(7);" (assignment_expression "uVar17 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) ;) (if_statement "if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) goto LAB_00067b5b;" if (parenthesized_expression "(((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2))" ( (binary_expression "((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)" (parenthesized_expression "((int)((ulonglong)uVar17 >> 0x20) == 0)" ( (binary_expression "(int)((ulonglong)uVar17 >> 0x20) == 0" (cast_expression "(int)((ulonglong)uVar17 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar17 >> 0x20)" ( (binary_expression "(ulonglong)uVar17 >> 0x20" (cast_expression "(ulonglong)uVar17" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) == number_literal) )) && (parenthesized_expression "((uint)uVar17 < 2)" ( (binary_expression "(uint)uVar17 < 2" (cast_expression "(uint)uVar17" ( (type_descriptor "uint" type_identifier) ) identifier) < number_literal) ))) )) (goto_statement "goto LAB_00067b5b;" goto statement_identifier ;)) })) (expression_statement "uVar17 = GetMagickResourceLimit(7);" (assignment_expression "uVar17 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) ;) (if_statement "if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      iVar11 = GetMagickResourceLimit(7);\n    }\n    else {\n      iVar11 = 2;\n    }" if (parenthesized_expression "(((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2))" ( (binary_expression "((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)" (parenthesized_expression "((int)((ulonglong)uVar17 >> 0x20) == 0)" ( (binary_expression "(int)((ulonglong)uVar17 >> 0x20) == 0" (cast_expression "(int)((ulonglong)uVar17 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar17 >> 0x20)" ( (binary_expression "(ulonglong)uVar17 >> 0x20" (cast_expression "(ulonglong)uVar17" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) == number_literal) )) && (parenthesized_expression "((uint)uVar17 < 2)" ( (binary_expression "(uint)uVar17 < 2" (cast_expression "(uint)uVar17" ( (type_descriptor "uint" type_identifier) ) identifier) < number_literal) ))) )) (compound_statement "{\n      iVar11 = GetMagickResourceLimit(7);\n    }" { (expression_statement "iVar11 = GetMagickResourceLimit(7);" (assignment_expression "iVar11 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) ;) }) (else_clause "else {\n      iVar11 = 2;\n    }" else (compound_statement "{\n      iVar11 = 2;\n    }" { (expression_statement "iVar11 = 2;" (assignment_expression "iVar11 = 2" identifier = number_literal) ;) }))) }))) (expression_statement "local_40 = param_4;" (assignment_expression "local_40 = param_4" identifier = identifier) ;) (expression_statement "local_54 = 0.0;" (assignment_expression "local_54 = 0.0" identifier = number_literal) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" identifier = number_literal) ;) (expression_statement "local_4c = param_1;" (assignment_expression "local_4c = param_1" identifier = identifier) ;) (expression_statement "local_48 = param_2;" (assignment_expression "local_48 = param_2" identifier = identifier) ;) (expression_statement "local_44 = param_3;" (assignment_expression "local_44 = param_3" identifier = identifier) ;) (expression_statement "local_3c = uVar8;" (assignment_expression "local_3c = uVar8" identifier = identifier) ;) (expression_statement "local_38 = uVar9;" (assignment_expression "local_38 = uVar9" identifier = identifier) ;) (expression_statement "local_30 = uVar7;" (assignment_expression "local_30 = uVar7" identifier = identifier) ;) (expression_statement "local_2c = uVar15;" (assignment_expression "local_2c = uVar15" identifier = identifier) ;) (expression_statement "GOMP_parallel(FUN_00069e50,&local_54,iVar11,0);" (call_expression "GOMP_parallel(FUN_00069e50,&local_54,iVar11,0)" identifier (argument_list "(FUN_00069e50,&local_54,iVar11,0)" ( identifier , (pointer_expression "&local_54" & identifier) , identifier , number_literal ))) ;) (expression_statement "uVar6 = local_28;" (assignment_expression "uVar6 = local_28" identifier = identifier) ;) (expression_statement "dVar3 = local_54;" (assignment_expression "dVar3 = local_54" identifier = identifier) ;) (expression_statement "DestroyCacheView(uVar9);" (call_expression "DestroyCacheView(uVar9)" identifier (argument_list "(uVar9)" ( identifier ))) ;) (expression_statement "DestroyCacheView(uVar8);" (call_expression "DestroyCacheView(uVar8)" identifier (argument_list "(uVar8)" ( identifier ))) ;) (if_statement "if (dVar3 < 0.0) {\n    dVar4 = -dVar3;\n    dVar5 = -1.0;\n  }\n  else {\n    dVar5 = 1.0;\n    dVar4 = dVar3;\n  }" if (parenthesized_expression "(dVar3 < 0.0)" ( (binary_expression "dVar3 < 0.0" identifier < number_literal) )) (compound_statement "{\n    dVar4 = -dVar3;\n    dVar5 = -1.0;\n  }" { (expression_statement "dVar4 = -dVar3;" (assignment_expression "dVar4 = -dVar3" identifier = (unary_expression "-dVar3" - identifier)) ;) (expression_statement "dVar5 = -1.0;" (assignment_expression "dVar5 = -1.0" identifier = number_literal) ;) }) (else_clause "else {\n    dVar5 = 1.0;\n    dVar4 = dVar3;\n  }" else (compound_statement "{\n    dVar5 = 1.0;\n    dVar4 = dVar3;\n  }" { (expression_statement "dVar5 = 1.0;" (assignment_expression "dVar5 = 1.0" identifier = number_literal) ;) (expression_statement "dVar4 = dVar3;" (assignment_expression "dVar4 = dVar3" identifier = identifier) ;) }))) (if_statement "if (dVar4 < DAT_0029f138) {\n    dVar3 = dVar5 / DAT_0029f138;\n  }\n  else {\n    dVar3 = (double)DAT_0029f718 / dVar3;\n  }" if (parenthesized_expression "(dVar4 < DAT_0029f138)" ( (binary_expression "dVar4 < DAT_0029f138" identifier < identifier) )) (compound_statement "{\n    dVar3 = dVar5 / DAT_0029f138;\n  }" { (expression_statement "dVar3 = dVar5 / DAT_0029f138;" (assignment_expression "dVar3 = dVar5 / DAT_0029f138" identifier = (binary_expression "dVar5 / DAT_0029f138" identifier / identifier)) ;) }) (else_clause "else {\n    dVar3 = (double)DAT_0029f718 / dVar3;\n  }" else (compound_statement "{\n    dVar3 = (double)DAT_0029f718 / dVar3;\n  }" { (expression_statement "dVar3 = (double)DAT_0029f718 / dVar3;" (assignment_expression "dVar3 = (double)DAT_0029f718 / dVar3" identifier = (binary_expression "(double)DAT_0029f718 / dVar3" (cast_expression "(double)DAT_0029f718" ( (type_descriptor "double" primitive_type) ) identifier) / identifier)) ;) }))) (expression_statement "pdVar12 = param_3;" (assignment_expression "pdVar12 = param_3" identifier = identifier) ;) (do_statement "do {\n    pdVar13 = pdVar12 + 1;\n    *pdVar12 = *pdVar12 * dVar3;\n    pdVar12 = pdVar13;\n  } while (param_3 + 0x41 != pdVar13);" do (compound_statement "{\n    pdVar13 = pdVar12 + 1;\n    *pdVar12 = *pdVar12 * dVar3;\n    pdVar12 = pdVar13;\n  }" { (expression_statement "pdVar13 = pdVar12 + 1;" (assignment_expression "pdVar13 = pdVar12 + 1" identifier = (binary_expression "pdVar12 + 1" identifier + number_literal)) ;) (expression_statement "*pdVar12 = *pdVar12 * dVar3;" (assignment_expression "*pdVar12 = *pdVar12 * dVar3" (pointer_expression "*pdVar12" * identifier) = (binary_expression "*pdVar12 * dVar3" (pointer_expression "*pdVar12" * identifier) * identifier)) ;) (expression_statement "pdVar12 = pdVar13;" (assignment_expression "pdVar12 = pdVar13" identifier = identifier) ;) }) while (parenthesized_expression "(param_3 + 0x41 != pdVar13)" ( (binary_expression "param_3 + 0x41 != pdVar13" (binary_expression "param_3 + 0x41" identifier + number_literal) != identifier) )) ;) (if_statement "if (0 < *(int *)(param_1 + 0x298)) {\n    piVar1 = *(int **)(param_1 + 0x2a8);\n    uVar15 = 0;\n    piVar14 = piVar1;\n    do {\n      uVar15 = (uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0);\n      piVar14 = piVar14 + 3;\n    } while (piVar14 != piVar1 + *(int *)(param_1 + 0x298) * 3);\n    if (uVar15 != 0) {\n      dVar3 = (double)uVar15;\n      goto LAB_00067ac1;\n    }\n  }" if (parenthesized_expression "(0 < *(int *)(param_1 + 0x298))" ( (binary_expression "0 < *(int *)(param_1 + 0x298)" number_literal < (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) ))))) )) (compound_statement "{\n    piVar1 = *(int **)(param_1 + 0x2a8);\n    uVar15 = 0;\n    piVar14 = piVar1;\n    do {\n      uVar15 = (uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0);\n      piVar14 = piVar14 + 3;\n    } while (piVar14 != piVar1 + *(int *)(param_1 + 0x298) * 3);\n    if (uVar15 != 0) {\n      dVar3 = (double)uVar15;\n      goto LAB_00067ac1;\n    }\n  }" { (expression_statement "piVar1 = *(int **)(param_1 + 0x2a8);" (assignment_expression "piVar1 = *(int **)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int **)(param_1 + 0x2a8)" * (cast_expression "(int **)(param_1 + 0x2a8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "piVar14 = piVar1;" (assignment_expression "piVar14 = piVar1" identifier = identifier) ;) (do_statement "do {\n      uVar15 = (uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0);\n      piVar14 = piVar14 + 3;\n    } while (piVar14 != piVar1 + *(int *)(param_1 + 0x298) * 3);" do (compound_statement "{\n      uVar15 = (uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0);\n      piVar14 = piVar14 + 3;\n    }" { (expression_statement "uVar15 = (uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0);" (assignment_expression "uVar15 = (uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0)" identifier = (binary_expression "(uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0)" (parenthesized_expression "(uVar15 + 1)" ( (binary_expression "uVar15 + 1" identifier + number_literal) )) - (call_expression "(uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((piVar1[*piVar14 * 3 + 1] & 2U) == 0)" ( (binary_expression "(piVar1[*piVar14 * 3 + 1] & 2U) == 0" (parenthesized_expression "(piVar1[*piVar14 * 3 + 1] & 2U)" ( (binary_expression "piVar1[*piVar14 * 3 + 1] & 2U" (subscript_expression "piVar1[*piVar14 * 3 + 1]" identifier [ (binary_expression "*piVar14 * 3 + 1" (binary_expression "*piVar14 * 3" (pointer_expression "*piVar14" * identifier) * number_literal) + number_literal) ]) & number_literal) )) == number_literal) ))))) ;) (expression_statement "piVar14 = piVar14 + 3;" (assignment_expression "piVar14 = piVar14 + 3" identifier = (binary_expression "piVar14 + 3" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar14 != piVar1 + *(int *)(param_1 + 0x298) * 3)" ( (binary_expression "piVar14 != piVar1 + *(int *)(param_1 + 0x298) * 3" identifier != (binary_expression "piVar1 + *(int *)(param_1 + 0x298) * 3" identifier + (binary_expression "*(int *)(param_1 + 0x298) * 3" (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) * number_literal))) )) ;) (if_statement "if (uVar15 != 0) {\n      dVar3 = (double)uVar15;\n      goto LAB_00067ac1;\n    }" if (parenthesized_expression "(uVar15 != 0)" ( (binary_expression "uVar15 != 0" identifier != number_literal) )) (compound_statement "{\n      dVar3 = (double)uVar15;\n      goto LAB_00067ac1;\n    }" { (expression_statement "dVar3 = (double)uVar15;" (assignment_expression "dVar3 = (double)uVar15" identifier = (cast_expression "(double)uVar15" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (goto_statement "goto LAB_00067ac1;" goto statement_identifier ;) })) })) (expression_statement "dVar3 = 1.0;" (assignment_expression "dVar3 = 1.0" identifier = number_literal) ;) (labeled_statement "LAB_00067ac1:\n  param_3[0x40] = param_3[0x40] / dVar3;" statement_identifier : (expression_statement "param_3[0x40] = param_3[0x40] / dVar3;" (assignment_expression "param_3[0x40] = param_3[0x40] / dVar3" (subscript_expression "param_3[0x40]" identifier [ number_literal ]) = (binary_expression "param_3[0x40] / dVar3" (subscript_expression "param_3[0x40]" identifier [ number_literal ]) / identifier)) ;)) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0029eab0();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0029eab0();\n  }" { comment (expression_statement "FUN_0029eab0();" (call_expression "FUN_0029eab0()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return uVar6;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Variable defined which should be unmapped: channel_distortion */\n/* WARNING: Enum "GravityType": Some values do not have unique names */\n/* WARNING: Enum "DisposeType": Some values do not have unique names */\n/* WARNING: Enum "ChannelType": Some values do not have unique names */\n/* WARNING: Enum "PixelChannel": Some values do not have unique names */\n/* WARNING: Enum "ExceptionType": Some values do not have unique names */\n\nMagickBooleanType __regparm3\nGetMeanSquaredDistortion\n          (Image *image,Image *reconstruct_image,double *distortion,ExceptionInfo *exception)\n\n{\n  int iVar1;\n  PixelChannelMap *pPVar2;\n  bool bVar3;\n  double dVar4;\n  double dVar5;\n  MagickBooleanType MVar6;\n  uint uVar7;\n  CacheType CVar8;\n  double *pdVar9;\n  double *pdVar10;\n  PixelChannelMap *pPVar11;\n  CacheView *pCVar12;\n  int iVar13;\n  int in_GS_OFFSET;\n  MagickSizeType MVar14;\n  double channel_distortion [65];\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar7 = image->rows;\n  if (image->rows <= reconstruct_image->rows) {\n    uVar7 = reconstruct_image->rows;\n  }\n  channel_distortion[0x36] = (double)CONCAT44(channel_distortion[0x36]._4_4_,uVar7);\n  channel_distortion[0x37]._4_4_ = image->columns;\n  if (image->columns <= reconstruct_image->columns) {\n    channel_distortion[0x37]._4_4_ = reconstruct_image->columns;\n  }\n  channel_distortion[0x32]._4_4_ = exception;\n  channel_distortion[0x31]._4_4_ = 0x67933;\n  channel_distortion[0x32]._0_4_ = (code *)image;\n  channel_distortion[0x34]._4_4_ = distortion;\n  channel_distortion[0x35]._0_4_ = AcquireVirtualCacheView(image,exception);\n  channel_distortion[0x32]._4_4_ = exception;\n  channel_distortion[0x31]._4_4_ = 0x67940;\n  channel_distortion[0x32]._0_4_ = (code *)reconstruct_image;\n  channel_distortion[0x37]._0_4_ = AcquireVirtualCacheView(reconstruct_image,exception);\n  channel_distortion[0x31]._4_4_ = 0x6794c;\n  channel_distortion[0x32]._0_4_ = (code *)image;\n  CVar8 = GetImagePixelCacheType(image);\n  if (CVar8 == MemoryCache) {\nLAB_00067aec:\n    channel_distortion[0x31]._4_4_ = 0x67af5;\n    channel_distortion[0x32]._0_4_ = (code *)image;\n    CVar8 = GetImagePixelCacheType(image);\n    if (CVar8 != MemoryCache) {\n      channel_distortion[0x31]._4_4_ = 0x67b06;\n      channel_distortion[0x32]._0_4_ = (code *)image;\n      CVar8 = GetImagePixelCacheType(image);\n      if (CVar8 != MapCache) goto LAB_0006796d;\n    }\n    channel_distortion[0x32]._0_4_ = (code *)0x7;\n    channel_distortion[0x31]._4_4_ = 0x67b1c;\n    MVar14 = GetMagickResourceLimit(ThreadResource);\n    iVar13 = channel_distortion[0x36]._0_4_ + 0x3f;\n    if (-1 < channel_distortion[0x36]._0_4_) {\n      iVar13 = channel_distortion[0x36]._0_4_;\n    }\n    channel_distortion[0x38]._0_4_ = iVar13 >> 6;\n    bVar3 = 0x7f < channel_distortion[0x36]._0_4_;\n    iVar13 = channel_distortion[0x38]._0_4_;\n    if ((int)MVar14 < channel_distortion[0x38]._0_4_) {\n      channel_distortion[0x32]._0_4_ = (code *)0x7;\n      channel_distortion[0x31]._4_4_ = 0x67b4a;\n      channel_distortion[0x38]._4_4_ = channel_distortion[0x38]._0_4_;\n      MVar14 = GetMagickResourceLimit(ThreadResource);\n      bVar3 = 1 < (int)MVar14;\n      iVar13 = channel_distortion[0x38]._4_4_;\n    }\n    if (bVar3) {\n      channel_distortion[0x32]._0_4_ = (code *)0x7;\n      channel_distortion[0x31]._4_4_ = 0x67bdb;\n      channel_distortion[0x38]._4_4_ = iVar13;\n      MVar14 = GetMagickResourceLimit(ThreadResource);\n      channel_distortion[0x33]._0_4_ = channel_distortion[0x38]._0_4_;\n      if ((int)MVar14 < channel_distortion[0x38]._4_4_) {\n        channel_distortion[0x32]._0_4_ = (code *)0x7;\n        channel_distortion[0x31]._4_4_ = 0x67bf9;\n        MVar14 = GetMagickResourceLimit(ThreadResource);\n        channel_distortion[0x33]._0_4_ = (int)MVar14;\n      }\n    }\n    else {\nLAB_00067b5b:\n      channel_distortion[0x33]._0_4_ = 1;\n    }\n  }\n  else {\n    channel_distortion[0x31]._4_4_ = 0x67961;\n    channel_distortion[0x32]._0_4_ = (code *)image;\n    CVar8 = GetImagePixelCacheType(image);\n    if (CVar8 == MapCache) goto LAB_00067aec;\nLAB_0006796d:\n    channel_distortion[0x32]._0_4_ = (code *)0x7;\n    channel_distortion[0x31]._4_4_ = 0x67977;\n    MVar14 = GetMagickResourceLimit(ThreadResource);\n    if (((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2)) {\n      channel_distortion[0x32]._0_4_ = (code *)0x7;\n      channel_distortion[0x31]._4_4_ = 0x67b78;\n      MVar14 = GetMagickResourceLimit(ThreadResource);\n      if (((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2)) goto LAB_00067b5b;\n    }\n    channel_distortion[0x32]._0_4_ = (code *)0x7;\n    channel_distortion[0x31]._4_4_ = 0x6798d;\n    MVar14 = GetMagickResourceLimit(ThreadResource);\n    if (((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2)) {\n      channel_distortion[0x32]._0_4_ = (code *)0x7;\n      channel_distortion[0x31]._4_4_ = 0x67bc5;\n      MVar14 = GetMagickResourceLimit(ThreadResource);\n      channel_distortion[0x33]._0_4_ = (int)MVar14;\n    }\n    else {\n      channel_distortion[0x33]._0_4_ = 2;\n    }\n  }\n  channel_distortion[0x3d]._4_4_ = exception;\n  channel_distortion[0x3b] = 0.0;\n  channel_distortion[0x40]._0_4_ = channel_distortion[0x36]._0_4_;\n  channel_distortion[0x38]._0_4_ = 0;\n  channel_distortion[0x3e]._0_4_ = channel_distortion[0x35]._0_4_;\n  channel_distortion[0x3d]._0_4_ = channel_distortion[0x34]._4_4_;\n  channel_distortion[0x3f]._4_4_ = channel_distortion[0x37]._4_4_;\n  channel_distortion[0x3f]._0_4_ = 0;\n  channel_distortion[0x40]._4_4_ = MagickTrue;\n  channel_distortion[0x3e]._4_4_ = channel_distortion[0x37]._0_4_;\n  channel_distortion[0x33]._4_4_ = (undefined *)0x0;\n  channel_distortion[0x32]._4_4_ = (ExceptionInfo *)(channel_distortion + 0x3b);\n  channel_distortion[0x32]._0_4_ = GetMeanSquaredDistortion__omp_fn_4;\n  channel_distortion[0x31]._4_4_ = 0x67a00;\n  channel_distortion[0x3c]._0_4_ = image;\n  channel_distortion[0x3c]._4_4_ = reconstruct_image;\n  GOMP_parallel(GetMeanSquaredDistortion__omp_fn_4,channel_distortion[0x32]._4_4_,\n                channel_distortion[0x33]._0_4_,0);\n  MVar6 = channel_distortion[0x40]._4_4_;\n  channel_distortion[0x36] = channel_distortion[0x3b];\n  channel_distortion[0x32]._0_4_ = (code *)channel_distortion[0x37]._0_4_;\n  channel_distortion[0x31]._4_4_ = 0x67a16;\n  DestroyCacheView(channel_distortion[0x37]._0_4_);\n  channel_distortion[0x32]._0_4_ = (code *)channel_distortion[0x35]._0_4_;\n  channel_distortion[0x31]._4_4_ = 0x67a20;\n  DestroyCacheView(channel_distortion[0x35]._0_4_);\n  if (channel_distortion[0x36] < 0.0) {\n    dVar5 = -channel_distortion[0x36];\n    dVar4 = -1.0;\n  }\n  else {\n    dVar4 = 1.0;\n    dVar5 = channel_distortion[0x36];\n  }\n  if (dVar5 < DAT_0029f138) {\n    dVar4 = dVar4 / DAT_0029f138;\n  }\n  else {\n    dVar4 = (double)DAT_0029f718 / channel_distortion[0x36];\n  }\n  pdVar9 = channel_distortion[0x34]._4_4_;\n  do {\n    pdVar10 = pdVar9 + 1;\n    *pdVar9 = *pdVar9 * dVar4;\n    pdVar9 = pdVar10;\n  } while (channel_distortion[0x34]._4_4_ + 0x41 != pdVar10);\n  if (0 < (int)image->number_channels) {\n    pPVar2 = image->channel_map;\n    pCVar12 = (CacheView *)0x0;\n    pPVar11 = pPVar2;\n    do {\n      pCVar12 = (CacheView *)\n                ((int)&pCVar12->image +\n                (uint)((pPVar2[pPVar11->channel].traits & UpdatePixelTrait) != UndefinedPixelTrait))\n      ;\n      pPVar11 = pPVar11 + 1;\n    } while (pPVar11 != pPVar2 + image->number_channels);\n    if (pCVar12 != (CacheView *)0x0) {\n      channel_distortion[0x35]._4_4_ = 0;\n      dVar4 = (double)pCVar12;\n      channel_distortion[0x35]._0_4_ = pCVar12;\n      goto LAB_00067ac1;\n    }\n  }\n  dVar4 = 1.0;\nLAB_00067ac1:\n  channel_distortion[0x34]._4_4_[0x40] = channel_distortion[0x34]._4_4_[0x40] / dVar4;\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    channel_distortion[0x33]._4_4_ = &UNK_00067c07;\n    __stack_chk_fail_local();\n  }\n  return MVar6;\n}\n\n" comment comment comment comment comment comment comment (function_definition "MagickBooleanType __regparm3\nGetMeanSquaredDistortion\n          (Image *image,Image *reconstruct_image,double *distortion,ExceptionInfo *exception)\n\n{\n  int iVar1;\n  PixelChannelMap *pPVar2;\n  bool bVar3;\n  double dVar4;\n  double dVar5;\n  MagickBooleanType MVar6;\n  uint uVar7;\n  CacheType CVar8;\n  double *pdVar9;\n  double *pdVar10;\n  PixelChannelMap *pPVar11;\n  CacheView *pCVar12;\n  int iVar13;\n  int in_GS_OFFSET;\n  MagickSizeType MVar14;\n  double channel_distortion [65];\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar7 = image->rows;\n  if (image->rows <= reconstruct_image->rows) {\n    uVar7 = reconstruct_image->rows;\n  }\n  channel_distortion[0x36] = (double)CONCAT44(channel_distortion[0x36]._4_4_,uVar7);\n  channel_distortion[0x37]._4_4_ = image->columns;\n  if (image->columns <= reconstruct_image->columns) {\n    channel_distortion[0x37]._4_4_ = reconstruct_image->columns;\n  }\n  channel_distortion[0x32]._4_4_ = exception;\n  channel_distortion[0x31]._4_4_ = 0x67933;\n  channel_distortion[0x32]._0_4_ = (code *)image;\n  channel_distortion[0x34]._4_4_ = distortion;\n  channel_distortion[0x35]._0_4_ = AcquireVirtualCacheView(image,exception);\n  channel_distortion[0x32]._4_4_ = exception;\n  channel_distortion[0x31]._4_4_ = 0x67940;\n  channel_distortion[0x32]._0_4_ = (code *)reconstruct_image;\n  channel_distortion[0x37]._0_4_ = AcquireVirtualCacheView(reconstruct_image,exception);\n  channel_distortion[0x31]._4_4_ = 0x6794c;\n  channel_distortion[0x32]._0_4_ = (code *)image;\n  CVar8 = GetImagePixelCacheType(image);\n  if (CVar8 == MemoryCache) {\nLAB_00067aec:\n    channel_distortion[0x31]._4_4_ = 0x67af5;\n    channel_distortion[0x32]._0_4_ = (code *)image;\n    CVar8 = GetImagePixelCacheType(image);\n    if (CVar8 != MemoryCache) {\n      channel_distortion[0x31]._4_4_ = 0x67b06;\n      channel_distortion[0x32]._0_4_ = (code *)image;\n      CVar8 = GetImagePixelCacheType(image);\n      if (CVar8 != MapCache) goto LAB_0006796d;\n    }\n    channel_distortion[0x32]._0_4_ = (code *)0x7;\n    channel_distortion[0x31]._4_4_ = 0x67b1c;\n    MVar14 = GetMagickResourceLimit(ThreadResource);\n    iVar13 = channel_distortion[0x36]._0_4_ + 0x3f;\n    if (-1 < channel_distortion[0x36]._0_4_) {\n      iVar13 = channel_distortion[0x36]._0_4_;\n    }\n    channel_distortion[0x38]._0_4_ = iVar13 >> 6;\n    bVar3 = 0x7f < channel_distortion[0x36]._0_4_;\n    iVar13 = channel_distortion[0x38]._0_4_;\n    if ((int)MVar14 < channel_distortion[0x38]._0_4_) {\n      channel_distortion[0x32]._0_4_ = (code *)0x7;\n      channel_distortion[0x31]._4_4_ = 0x67b4a;\n      channel_distortion[0x38]._4_4_ = channel_distortion[0x38]._0_4_;\n      MVar14 = GetMagickResourceLimit(ThreadResource);\n      bVar3 = 1 < (int)MVar14;\n      iVar13 = channel_distortion[0x38]._4_4_;\n    }\n    if (bVar3) {\n      channel_distortion[0x32]._0_4_ = (code *)0x7;\n      channel_distortion[0x31]._4_4_ = 0x67bdb;\n      channel_distortion[0x38]._4_4_ = iVar13;\n      MVar14 = GetMagickResourceLimit(ThreadResource);\n      channel_distortion[0x33]._0_4_ = channel_distortion[0x38]._0_4_;\n      if ((int)MVar14 < channel_distortion[0x38]._4_4_) {\n        channel_distortion[0x32]._0_4_ = (code *)0x7;\n        channel_distortion[0x31]._4_4_ = 0x67bf9;\n        MVar14 = GetMagickResourceLimit(ThreadResource);\n        channel_distortion[0x33]._0_4_ = (int)MVar14;\n      }\n    }\n    else {\nLAB_00067b5b:\n      channel_distortion[0x33]._0_4_ = 1;\n    }\n  }\n  else {\n    channel_distortion[0x31]._4_4_ = 0x67961;\n    channel_distortion[0x32]._0_4_ = (code *)image;\n    CVar8 = GetImagePixelCacheType(image);\n    if (CVar8 == MapCache) goto LAB_00067aec;\nLAB_0006796d:\n    channel_distortion[0x32]._0_4_ = (code *)0x7;\n    channel_distortion[0x31]._4_4_ = 0x67977;\n    MVar14 = GetMagickResourceLimit(ThreadResource);\n    if (((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2)) {\n      channel_distortion[0x32]._0_4_ = (code *)0x7;\n      channel_distortion[0x31]._4_4_ = 0x67b78;\n      MVar14 = GetMagickResourceLimit(ThreadResource);\n      if (((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2)) goto LAB_00067b5b;\n    }\n    channel_distortion[0x32]._0_4_ = (code *)0x7;\n    channel_distortion[0x31]._4_4_ = 0x6798d;\n    MVar14 = GetMagickResourceLimit(ThreadResource);\n    if (((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2)) {\n      channel_distortion[0x32]._0_4_ = (code *)0x7;\n      channel_distortion[0x31]._4_4_ = 0x67bc5;\n      MVar14 = GetMagickResourceLimit(ThreadResource);\n      channel_distortion[0x33]._0_4_ = (int)MVar14;\n    }\n    else {\n      channel_distortion[0x33]._0_4_ = 2;\n    }\n  }\n  channel_distortion[0x3d]._4_4_ = exception;\n  channel_distortion[0x3b] = 0.0;\n  channel_distortion[0x40]._0_4_ = channel_distortion[0x36]._0_4_;\n  channel_distortion[0x38]._0_4_ = 0;\n  channel_distortion[0x3e]._0_4_ = channel_distortion[0x35]._0_4_;\n  channel_distortion[0x3d]._0_4_ = channel_distortion[0x34]._4_4_;\n  channel_distortion[0x3f]._4_4_ = channel_distortion[0x37]._4_4_;\n  channel_distortion[0x3f]._0_4_ = 0;\n  channel_distortion[0x40]._4_4_ = MagickTrue;\n  channel_distortion[0x3e]._4_4_ = channel_distortion[0x37]._0_4_;\n  channel_distortion[0x33]._4_4_ = (undefined *)0x0;\n  channel_distortion[0x32]._4_4_ = (ExceptionInfo *)(channel_distortion + 0x3b);\n  channel_distortion[0x32]._0_4_ = GetMeanSquaredDistortion__omp_fn_4;\n  channel_distortion[0x31]._4_4_ = 0x67a00;\n  channel_distortion[0x3c]._0_4_ = image;\n  channel_distortion[0x3c]._4_4_ = reconstruct_image;\n  GOMP_parallel(GetMeanSquaredDistortion__omp_fn_4,channel_distortion[0x32]._4_4_,\n                channel_distortion[0x33]._0_4_,0);\n  MVar6 = channel_distortion[0x40]._4_4_;\n  channel_distortion[0x36] = channel_distortion[0x3b];\n  channel_distortion[0x32]._0_4_ = (code *)channel_distortion[0x37]._0_4_;\n  channel_distortion[0x31]._4_4_ = 0x67a16;\n  DestroyCacheView(channel_distortion[0x37]._0_4_);\n  channel_distortion[0x32]._0_4_ = (code *)channel_distortion[0x35]._0_4_;\n  channel_distortion[0x31]._4_4_ = 0x67a20;\n  DestroyCacheView(channel_distortion[0x35]._0_4_);\n  if (channel_distortion[0x36] < 0.0) {\n    dVar5 = -channel_distortion[0x36];\n    dVar4 = -1.0;\n  }\n  else {\n    dVar4 = 1.0;\n    dVar5 = channel_distortion[0x36];\n  }\n  if (dVar5 < DAT_0029f138) {\n    dVar4 = dVar4 / DAT_0029f138;\n  }\n  else {\n    dVar4 = (double)DAT_0029f718 / channel_distortion[0x36];\n  }\n  pdVar9 = channel_distortion[0x34]._4_4_;\n  do {\n    pdVar10 = pdVar9 + 1;\n    *pdVar9 = *pdVar9 * dVar4;\n    pdVar9 = pdVar10;\n  } while (channel_distortion[0x34]._4_4_ + 0x41 != pdVar10);\n  if (0 < (int)image->number_channels) {\n    pPVar2 = image->channel_map;\n    pCVar12 = (CacheView *)0x0;\n    pPVar11 = pPVar2;\n    do {\n      pCVar12 = (CacheView *)\n                ((int)&pCVar12->image +\n                (uint)((pPVar2[pPVar11->channel].traits & UpdatePixelTrait) != UndefinedPixelTrait))\n      ;\n      pPVar11 = pPVar11 + 1;\n    } while (pPVar11 != pPVar2 + image->number_channels);\n    if (pCVar12 != (CacheView *)0x0) {\n      channel_distortion[0x35]._4_4_ = 0;\n      dVar4 = (double)pCVar12;\n      channel_distortion[0x35]._0_4_ = pCVar12;\n      goto LAB_00067ac1;\n    }\n  }\n  dVar4 = 1.0;\nLAB_00067ac1:\n  channel_distortion[0x34]._4_4_[0x40] = channel_distortion[0x34]._4_4_[0x40] / dVar4;\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    channel_distortion[0x33]._4_4_ = &UNK_00067c07;\n    __stack_chk_fail_local();\n  }\n  return MVar6;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "GetMeanSquaredDistortion\n          (Image *image,Image *reconstruct_image,double *distortion,ExceptionInfo *exception)" identifier (parameter_list "(Image *image,Image *reconstruct_image,double *distortion,ExceptionInfo *exception)" ( (parameter_declaration "Image *image" type_identifier (pointer_declarator "*image" * identifier)) , (parameter_declaration "Image *reconstruct_image" type_identifier (pointer_declarator "*reconstruct_image" * identifier)) , (parameter_declaration "double *distortion" primitive_type (pointer_declarator "*distortion" * identifier)) , (parameter_declaration "ExceptionInfo *exception" type_identifier (pointer_declarator "*exception" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  PixelChannelMap *pPVar2;\n  bool bVar3;\n  double dVar4;\n  double dVar5;\n  MagickBooleanType MVar6;\n  uint uVar7;\n  CacheType CVar8;\n  double *pdVar9;\n  double *pdVar10;\n  PixelChannelMap *pPVar11;\n  CacheView *pCVar12;\n  int iVar13;\n  int in_GS_OFFSET;\n  MagickSizeType MVar14;\n  double channel_distortion [65];\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar7 = image->rows;\n  if (image->rows <= reconstruct_image->rows) {\n    uVar7 = reconstruct_image->rows;\n  }\n  channel_distortion[0x36] = (double)CONCAT44(channel_distortion[0x36]._4_4_,uVar7);\n  channel_distortion[0x37]._4_4_ = image->columns;\n  if (image->columns <= reconstruct_image->columns) {\n    channel_distortion[0x37]._4_4_ = reconstruct_image->columns;\n  }\n  channel_distortion[0x32]._4_4_ = exception;\n  channel_distortion[0x31]._4_4_ = 0x67933;\n  channel_distortion[0x32]._0_4_ = (code *)image;\n  channel_distortion[0x34]._4_4_ = distortion;\n  channel_distortion[0x35]._0_4_ = AcquireVirtualCacheView(image,exception);\n  channel_distortion[0x32]._4_4_ = exception;\n  channel_distortion[0x31]._4_4_ = 0x67940;\n  channel_distortion[0x32]._0_4_ = (code *)reconstruct_image;\n  channel_distortion[0x37]._0_4_ = AcquireVirtualCacheView(reconstruct_image,exception);\n  channel_distortion[0x31]._4_4_ = 0x6794c;\n  channel_distortion[0x32]._0_4_ = (code *)image;\n  CVar8 = GetImagePixelCacheType(image);\n  if (CVar8 == MemoryCache) {\nLAB_00067aec:\n    channel_distortion[0x31]._4_4_ = 0x67af5;\n    channel_distortion[0x32]._0_4_ = (code *)image;\n    CVar8 = GetImagePixelCacheType(image);\n    if (CVar8 != MemoryCache) {\n      channel_distortion[0x31]._4_4_ = 0x67b06;\n      channel_distortion[0x32]._0_4_ = (code *)image;\n      CVar8 = GetImagePixelCacheType(image);\n      if (CVar8 != MapCache) goto LAB_0006796d;\n    }\n    channel_distortion[0x32]._0_4_ = (code *)0x7;\n    channel_distortion[0x31]._4_4_ = 0x67b1c;\n    MVar14 = GetMagickResourceLimit(ThreadResource);\n    iVar13 = channel_distortion[0x36]._0_4_ + 0x3f;\n    if (-1 < channel_distortion[0x36]._0_4_) {\n      iVar13 = channel_distortion[0x36]._0_4_;\n    }\n    channel_distortion[0x38]._0_4_ = iVar13 >> 6;\n    bVar3 = 0x7f < channel_distortion[0x36]._0_4_;\n    iVar13 = channel_distortion[0x38]._0_4_;\n    if ((int)MVar14 < channel_distortion[0x38]._0_4_) {\n      channel_distortion[0x32]._0_4_ = (code *)0x7;\n      channel_distortion[0x31]._4_4_ = 0x67b4a;\n      channel_distortion[0x38]._4_4_ = channel_distortion[0x38]._0_4_;\n      MVar14 = GetMagickResourceLimit(ThreadResource);\n      bVar3 = 1 < (int)MVar14;\n      iVar13 = channel_distortion[0x38]._4_4_;\n    }\n    if (bVar3) {\n      channel_distortion[0x32]._0_4_ = (code *)0x7;\n      channel_distortion[0x31]._4_4_ = 0x67bdb;\n      channel_distortion[0x38]._4_4_ = iVar13;\n      MVar14 = GetMagickResourceLimit(ThreadResource);\n      channel_distortion[0x33]._0_4_ = channel_distortion[0x38]._0_4_;\n      if ((int)MVar14 < channel_distortion[0x38]._4_4_) {\n        channel_distortion[0x32]._0_4_ = (code *)0x7;\n        channel_distortion[0x31]._4_4_ = 0x67bf9;\n        MVar14 = GetMagickResourceLimit(ThreadResource);\n        channel_distortion[0x33]._0_4_ = (int)MVar14;\n      }\n    }\n    else {\nLAB_00067b5b:\n      channel_distortion[0x33]._0_4_ = 1;\n    }\n  }\n  else {\n    channel_distortion[0x31]._4_4_ = 0x67961;\n    channel_distortion[0x32]._0_4_ = (code *)image;\n    CVar8 = GetImagePixelCacheType(image);\n    if (CVar8 == MapCache) goto LAB_00067aec;\nLAB_0006796d:\n    channel_distortion[0x32]._0_4_ = (code *)0x7;\n    channel_distortion[0x31]._4_4_ = 0x67977;\n    MVar14 = GetMagickResourceLimit(ThreadResource);\n    if (((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2)) {\n      channel_distortion[0x32]._0_4_ = (code *)0x7;\n      channel_distortion[0x31]._4_4_ = 0x67b78;\n      MVar14 = GetMagickResourceLimit(ThreadResource);\n      if (((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2)) goto LAB_00067b5b;\n    }\n    channel_distortion[0x32]._0_4_ = (code *)0x7;\n    channel_distortion[0x31]._4_4_ = 0x6798d;\n    MVar14 = GetMagickResourceLimit(ThreadResource);\n    if (((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2)) {\n      channel_distortion[0x32]._0_4_ = (code *)0x7;\n      channel_distortion[0x31]._4_4_ = 0x67bc5;\n      MVar14 = GetMagickResourceLimit(ThreadResource);\n      channel_distortion[0x33]._0_4_ = (int)MVar14;\n    }\n    else {\n      channel_distortion[0x33]._0_4_ = 2;\n    }\n  }\n  channel_distortion[0x3d]._4_4_ = exception;\n  channel_distortion[0x3b] = 0.0;\n  channel_distortion[0x40]._0_4_ = channel_distortion[0x36]._0_4_;\n  channel_distortion[0x38]._0_4_ = 0;\n  channel_distortion[0x3e]._0_4_ = channel_distortion[0x35]._0_4_;\n  channel_distortion[0x3d]._0_4_ = channel_distortion[0x34]._4_4_;\n  channel_distortion[0x3f]._4_4_ = channel_distortion[0x37]._4_4_;\n  channel_distortion[0x3f]._0_4_ = 0;\n  channel_distortion[0x40]._4_4_ = MagickTrue;\n  channel_distortion[0x3e]._4_4_ = channel_distortion[0x37]._0_4_;\n  channel_distortion[0x33]._4_4_ = (undefined *)0x0;\n  channel_distortion[0x32]._4_4_ = (ExceptionInfo *)(channel_distortion + 0x3b);\n  channel_distortion[0x32]._0_4_ = GetMeanSquaredDistortion__omp_fn_4;\n  channel_distortion[0x31]._4_4_ = 0x67a00;\n  channel_distortion[0x3c]._0_4_ = image;\n  channel_distortion[0x3c]._4_4_ = reconstruct_image;\n  GOMP_parallel(GetMeanSquaredDistortion__omp_fn_4,channel_distortion[0x32]._4_4_,\n                channel_distortion[0x33]._0_4_,0);\n  MVar6 = channel_distortion[0x40]._4_4_;\n  channel_distortion[0x36] = channel_distortion[0x3b];\n  channel_distortion[0x32]._0_4_ = (code *)channel_distortion[0x37]._0_4_;\n  channel_distortion[0x31]._4_4_ = 0x67a16;\n  DestroyCacheView(channel_distortion[0x37]._0_4_);\n  channel_distortion[0x32]._0_4_ = (code *)channel_distortion[0x35]._0_4_;\n  channel_distortion[0x31]._4_4_ = 0x67a20;\n  DestroyCacheView(channel_distortion[0x35]._0_4_);\n  if (channel_distortion[0x36] < 0.0) {\n    dVar5 = -channel_distortion[0x36];\n    dVar4 = -1.0;\n  }\n  else {\n    dVar4 = 1.0;\n    dVar5 = channel_distortion[0x36];\n  }\n  if (dVar5 < DAT_0029f138) {\n    dVar4 = dVar4 / DAT_0029f138;\n  }\n  else {\n    dVar4 = (double)DAT_0029f718 / channel_distortion[0x36];\n  }\n  pdVar9 = channel_distortion[0x34]._4_4_;\n  do {\n    pdVar10 = pdVar9 + 1;\n    *pdVar9 = *pdVar9 * dVar4;\n    pdVar9 = pdVar10;\n  } while (channel_distortion[0x34]._4_4_ + 0x41 != pdVar10);\n  if (0 < (int)image->number_channels) {\n    pPVar2 = image->channel_map;\n    pCVar12 = (CacheView *)0x0;\n    pPVar11 = pPVar2;\n    do {\n      pCVar12 = (CacheView *)\n                ((int)&pCVar12->image +\n                (uint)((pPVar2[pPVar11->channel].traits & UpdatePixelTrait) != UndefinedPixelTrait))\n      ;\n      pPVar11 = pPVar11 + 1;\n    } while (pPVar11 != pPVar2 + image->number_channels);\n    if (pCVar12 != (CacheView *)0x0) {\n      channel_distortion[0x35]._4_4_ = 0;\n      dVar4 = (double)pCVar12;\n      channel_distortion[0x35]._0_4_ = pCVar12;\n      goto LAB_00067ac1;\n    }\n  }\n  dVar4 = 1.0;\nLAB_00067ac1:\n  channel_distortion[0x34]._4_4_[0x40] = channel_distortion[0x34]._4_4_[0x40] / dVar4;\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    channel_distortion[0x33]._4_4_ = &UNK_00067c07;\n    __stack_chk_fail_local();\n  }\n  return MVar6;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "PixelChannelMap *pPVar2;" type_identifier (pointer_declarator "*pPVar2" * identifier) ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "double dVar4;" primitive_type identifier ;) (declaration "double dVar5;" primitive_type identifier ;) (declaration "MagickBooleanType MVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "CacheType CVar8;" type_identifier identifier ;) (declaration "double *pdVar9;" primitive_type (pointer_declarator "*pdVar9" * identifier) ;) (declaration "double *pdVar10;" primitive_type (pointer_declarator "*pdVar10" * identifier) ;) (declaration "PixelChannelMap *pPVar11;" type_identifier (pointer_declarator "*pPVar11" * identifier) ;) (declaration "CacheView *pCVar12;" type_identifier (pointer_declarator "*pCVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "MagickSizeType MVar14;" type_identifier identifier ;) (declaration "double channel_distortion [65];" primitive_type (array_declarator "channel_distortion [65]" identifier [ number_literal ]) ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = image->rows;" (assignment_expression "uVar7 = image->rows" identifier = (field_expression "image->rows" identifier -> field_identifier)) ;) (if_statement "if (image->rows <= reconstruct_image->rows) {\n    uVar7 = reconstruct_image->rows;\n  }" if (parenthesized_expression "(image->rows <= reconstruct_image->rows)" ( (binary_expression "image->rows <= reconstruct_image->rows" (field_expression "image->rows" identifier -> field_identifier) <= (field_expression "reconstruct_image->rows" identifier -> field_identifier)) )) (compound_statement "{\n    uVar7 = reconstruct_image->rows;\n  }" { (expression_statement "uVar7 = reconstruct_image->rows;" (assignment_expression "uVar7 = reconstruct_image->rows" identifier = (field_expression "reconstruct_image->rows" identifier -> field_identifier)) ;) })) (expression_statement "channel_distortion[0x36] = (double)CONCAT44(channel_distortion[0x36]._4_4_,uVar7);" (assignment_expression "channel_distortion[0x36] = (double)CONCAT44(channel_distortion[0x36]._4_4_,uVar7)" (subscript_expression "channel_distortion[0x36]" identifier [ number_literal ]) = (cast_expression "(double)CONCAT44(channel_distortion[0x36]._4_4_,uVar7)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(channel_distortion[0x36]._4_4_,uVar7)" identifier (argument_list "(channel_distortion[0x36]._4_4_,uVar7)" ( (field_expression "channel_distortion[0x36]._4_4_" (subscript_expression "channel_distortion[0x36]" identifier [ number_literal ]) . field_identifier) , identifier ))))) ;) (expression_statement "channel_distortion[0x37]._4_4_ = image->columns;" (assignment_expression "channel_distortion[0x37]._4_4_ = image->columns" (field_expression "channel_distortion[0x37]._4_4_" (subscript_expression "channel_distortion[0x37]" identifier [ number_literal ]) . field_identifier) = (field_expression "image->columns" identifier -> field_identifier)) ;) (if_statement "if (image->columns <= reconstruct_image->columns) {\n    channel_distortion[0x37]._4_4_ = reconstruct_image->columns;\n  }" if (parenthesized_expression "(image->columns <= reconstruct_image->columns)" ( (binary_expression "image->columns <= reconstruct_image->columns" (field_expression "image->columns" identifier -> field_identifier) <= (field_expression "reconstruct_image->columns" identifier -> field_identifier)) )) (compound_statement "{\n    channel_distortion[0x37]._4_4_ = reconstruct_image->columns;\n  }" { (expression_statement "channel_distortion[0x37]._4_4_ = reconstruct_image->columns;" (assignment_expression "channel_distortion[0x37]._4_4_ = reconstruct_image->columns" (field_expression "channel_distortion[0x37]._4_4_" (subscript_expression "channel_distortion[0x37]" identifier [ number_literal ]) . field_identifier) = (field_expression "reconstruct_image->columns" identifier -> field_identifier)) ;) })) (expression_statement "channel_distortion[0x32]._4_4_ = exception;" (assignment_expression "channel_distortion[0x32]._4_4_ = exception" (field_expression "channel_distortion[0x32]._4_4_" (subscript_expression "channel_distortion[0x32]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "channel_distortion[0x31]._4_4_ = 0x67933;" (assignment_expression "channel_distortion[0x31]._4_4_ = 0x67933" (field_expression "channel_distortion[0x31]._4_4_" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "channel_distortion[0x32]._0_4_ = (code *)image;" (assignment_expression "channel_distortion[0x32]._0_4_ = (code *)image" (field_expression "channel_distortion[0x32]._0_4_" (subscript_expression "channel_distortion[0x32]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(code *)image" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "channel_distortion[0x34]._4_4_ = distortion;" (assignment_expression "channel_distortion[0x34]._4_4_ = distortion" (field_expression "channel_distortion[0x34]._4_4_" (subscript_expression "channel_distortion[0x34]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "channel_distortion[0x35]._0_4_ = AcquireVirtualCacheView(image,exception);" (assignment_expression "channel_distortion[0x35]._0_4_ = AcquireVirtualCacheView(image,exception)" (field_expression "channel_distortion[0x35]._0_4_" (subscript_expression "channel_distortion[0x35]" identifier [ number_literal ]) . field_identifier) = (call_expression "AcquireVirtualCacheView(image,exception)" identifier (argument_list "(image,exception)" ( identifier , identifier )))) ;) (expression_statement "channel_distortion[0x32]._4_4_ = exception;" (assignment_expression "channel_distortion[0x32]._4_4_ = exception" (field_expression "channel_distortion[0x32]._4_4_" (subscript_expression "channel_distortion[0x32]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "channel_distortion[0x31]._4_4_ = 0x67940;" (assignment_expression "channel_distortion[0x31]._4_4_ = 0x67940" (field_expression "channel_distortion[0x31]._4_4_" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "channel_distortion[0x32]._0_4_ = (code *)reconstruct_image;" (assignment_expression "channel_distortion[0x32]._0_4_ = (code *)reconstruct_image" (field_expression "channel_distortion[0x32]._0_4_" (subscript_expression "channel_distortion[0x32]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(code *)reconstruct_image" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "channel_distortion[0x37]._0_4_ = AcquireVirtualCacheView(reconstruct_image,exception);" (assignment_expression "channel_distortion[0x37]._0_4_ = AcquireVirtualCacheView(reconstruct_image,exception)" (field_expression "channel_distortion[0x37]._0_4_" (subscript_expression "channel_distortion[0x37]" identifier [ number_literal ]) . field_identifier) = (call_expression "AcquireVirtualCacheView(reconstruct_image,exception)" identifier (argument_list "(reconstruct_image,exception)" ( identifier , identifier )))) ;) (expression_statement "channel_distortion[0x31]._4_4_ = 0x6794c;" (assignment_expression "channel_distortion[0x31]._4_4_ = 0x6794c" (field_expression "channel_distortion[0x31]._4_4_" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "channel_distortion[0x32]._0_4_ = (code *)image;" (assignment_expression "channel_distortion[0x32]._0_4_ = (code *)image" (field_expression "channel_distortion[0x32]._0_4_" (subscript_expression "channel_distortion[0x32]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(code *)image" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "CVar8 = GetImagePixelCacheType(image);" (assignment_expression "CVar8 = GetImagePixelCacheType(image)" identifier = (call_expression "GetImagePixelCacheType(image)" identifier (argument_list "(image)" ( identifier )))) ;) (if_statement "if (CVar8 == MemoryCache) {\nLAB_00067aec:\n    channel_distortion[0x31]._4_4_ = 0x67af5;\n    channel_distortion[0x32]._0_4_ = (code *)image;\n    CVar8 = GetImagePixelCacheType(image);\n    if (CVar8 != MemoryCache) {\n      channel_distortion[0x31]._4_4_ = 0x67b06;\n      channel_distortion[0x32]._0_4_ = (code *)image;\n      CVar8 = GetImagePixelCacheType(image);\n      if (CVar8 != MapCache) goto LAB_0006796d;\n    }\n    channel_distortion[0x32]._0_4_ = (code *)0x7;\n    channel_distortion[0x31]._4_4_ = 0x67b1c;\n    MVar14 = GetMagickResourceLimit(ThreadResource);\n    iVar13 = channel_distortion[0x36]._0_4_ + 0x3f;\n    if (-1 < channel_distortion[0x36]._0_4_) {\n      iVar13 = channel_distortion[0x36]._0_4_;\n    }\n    channel_distortion[0x38]._0_4_ = iVar13 >> 6;\n    bVar3 = 0x7f < channel_distortion[0x36]._0_4_;\n    iVar13 = channel_distortion[0x38]._0_4_;\n    if ((int)MVar14 < channel_distortion[0x38]._0_4_) {\n      channel_distortion[0x32]._0_4_ = (code *)0x7;\n      channel_distortion[0x31]._4_4_ = 0x67b4a;\n      channel_distortion[0x38]._4_4_ = channel_distortion[0x38]._0_4_;\n      MVar14 = GetMagickResourceLimit(ThreadResource);\n      bVar3 = 1 < (int)MVar14;\n      iVar13 = channel_distortion[0x38]._4_4_;\n    }\n    if (bVar3) {\n      channel_distortion[0x32]._0_4_ = (code *)0x7;\n      channel_distortion[0x31]._4_4_ = 0x67bdb;\n      channel_distortion[0x38]._4_4_ = iVar13;\n      MVar14 = GetMagickResourceLimit(ThreadResource);\n      channel_distortion[0x33]._0_4_ = channel_distortion[0x38]._0_4_;\n      if ((int)MVar14 < channel_distortion[0x38]._4_4_) {\n        channel_distortion[0x32]._0_4_ = (code *)0x7;\n        channel_distortion[0x31]._4_4_ = 0x67bf9;\n        MVar14 = GetMagickResourceLimit(ThreadResource);\n        channel_distortion[0x33]._0_4_ = (int)MVar14;\n      }\n    }\n    else {\nLAB_00067b5b:\n      channel_distortion[0x33]._0_4_ = 1;\n    }\n  }\n  else {\n    channel_distortion[0x31]._4_4_ = 0x67961;\n    channel_distortion[0x32]._0_4_ = (code *)image;\n    CVar8 = GetImagePixelCacheType(image);\n    if (CVar8 == MapCache) goto LAB_00067aec;\nLAB_0006796d:\n    channel_distortion[0x32]._0_4_ = (code *)0x7;\n    channel_distortion[0x31]._4_4_ = 0x67977;\n    MVar14 = GetMagickResourceLimit(ThreadResource);\n    if (((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2)) {\n      channel_distortion[0x32]._0_4_ = (code *)0x7;\n      channel_distortion[0x31]._4_4_ = 0x67b78;\n      MVar14 = GetMagickResourceLimit(ThreadResource);\n      if (((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2)) goto LAB_00067b5b;\n    }\n    channel_distortion[0x32]._0_4_ = (code *)0x7;\n    channel_distortion[0x31]._4_4_ = 0x6798d;\n    MVar14 = GetMagickResourceLimit(ThreadResource);\n    if (((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2)) {\n      channel_distortion[0x32]._0_4_ = (code *)0x7;\n      channel_distortion[0x31]._4_4_ = 0x67bc5;\n      MVar14 = GetMagickResourceLimit(ThreadResource);\n      channel_distortion[0x33]._0_4_ = (int)MVar14;\n    }\n    else {\n      channel_distortion[0x33]._0_4_ = 2;\n    }\n  }" if (parenthesized_expression "(CVar8 == MemoryCache)" ( (binary_expression "CVar8 == MemoryCache" identifier == identifier) )) (compound_statement "{\nLAB_00067aec:\n    channel_distortion[0x31]._4_4_ = 0x67af5;\n    channel_distortion[0x32]._0_4_ = (code *)image;\n    CVar8 = GetImagePixelCacheType(image);\n    if (CVar8 != MemoryCache) {\n      channel_distortion[0x31]._4_4_ = 0x67b06;\n      channel_distortion[0x32]._0_4_ = (code *)image;\n      CVar8 = GetImagePixelCacheType(image);\n      if (CVar8 != MapCache) goto LAB_0006796d;\n    }\n    channel_distortion[0x32]._0_4_ = (code *)0x7;\n    channel_distortion[0x31]._4_4_ = 0x67b1c;\n    MVar14 = GetMagickResourceLimit(ThreadResource);\n    iVar13 = channel_distortion[0x36]._0_4_ + 0x3f;\n    if (-1 < channel_distortion[0x36]._0_4_) {\n      iVar13 = channel_distortion[0x36]._0_4_;\n    }\n    channel_distortion[0x38]._0_4_ = iVar13 >> 6;\n    bVar3 = 0x7f < channel_distortion[0x36]._0_4_;\n    iVar13 = channel_distortion[0x38]._0_4_;\n    if ((int)MVar14 < channel_distortion[0x38]._0_4_) {\n      channel_distortion[0x32]._0_4_ = (code *)0x7;\n      channel_distortion[0x31]._4_4_ = 0x67b4a;\n      channel_distortion[0x38]._4_4_ = channel_distortion[0x38]._0_4_;\n      MVar14 = GetMagickResourceLimit(ThreadResource);\n      bVar3 = 1 < (int)MVar14;\n      iVar13 = channel_distortion[0x38]._4_4_;\n    }\n    if (bVar3) {\n      channel_distortion[0x32]._0_4_ = (code *)0x7;\n      channel_distortion[0x31]._4_4_ = 0x67bdb;\n      channel_distortion[0x38]._4_4_ = iVar13;\n      MVar14 = GetMagickResourceLimit(ThreadResource);\n      channel_distortion[0x33]._0_4_ = channel_distortion[0x38]._0_4_;\n      if ((int)MVar14 < channel_distortion[0x38]._4_4_) {\n        channel_distortion[0x32]._0_4_ = (code *)0x7;\n        channel_distortion[0x31]._4_4_ = 0x67bf9;\n        MVar14 = GetMagickResourceLimit(ThreadResource);\n        channel_distortion[0x33]._0_4_ = (int)MVar14;\n      }\n    }\n    else {\nLAB_00067b5b:\n      channel_distortion[0x33]._0_4_ = 1;\n    }\n  }" { (labeled_statement "LAB_00067aec:\n    channel_distortion[0x31]._4_4_ = 0x67af5;" statement_identifier : (expression_statement "channel_distortion[0x31]._4_4_ = 0x67af5;" (assignment_expression "channel_distortion[0x31]._4_4_ = 0x67af5" (field_expression "channel_distortion[0x31]._4_4_" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) . field_identifier) = number_literal) ;)) (expression_statement "channel_distortion[0x32]._0_4_ = (code *)image;" (assignment_expression "channel_distortion[0x32]._0_4_ = (code *)image" (field_expression "channel_distortion[0x32]._0_4_" (subscript_expression "channel_distortion[0x32]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(code *)image" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "CVar8 = GetImagePixelCacheType(image);" (assignment_expression "CVar8 = GetImagePixelCacheType(image)" identifier = (call_expression "GetImagePixelCacheType(image)" identifier (argument_list "(image)" ( identifier )))) ;) (if_statement "if (CVar8 != MemoryCache) {\n      channel_distortion[0x31]._4_4_ = 0x67b06;\n      channel_distortion[0x32]._0_4_ = (code *)image;\n      CVar8 = GetImagePixelCacheType(image);\n      if (CVar8 != MapCache) goto LAB_0006796d;\n    }" if (parenthesized_expression "(CVar8 != MemoryCache)" ( (binary_expression "CVar8 != MemoryCache" identifier != identifier) )) (compound_statement "{\n      channel_distortion[0x31]._4_4_ = 0x67b06;\n      channel_distortion[0x32]._0_4_ = (code *)image;\n      CVar8 = GetImagePixelCacheType(image);\n      if (CVar8 != MapCache) goto LAB_0006796d;\n    }" { (expression_statement "channel_distortion[0x31]._4_4_ = 0x67b06;" (assignment_expression "channel_distortion[0x31]._4_4_ = 0x67b06" (field_expression "channel_distortion[0x31]._4_4_" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "channel_distortion[0x32]._0_4_ = (code *)image;" (assignment_expression "channel_distortion[0x32]._0_4_ = (code *)image" (field_expression "channel_distortion[0x32]._0_4_" (subscript_expression "channel_distortion[0x32]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(code *)image" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "CVar8 = GetImagePixelCacheType(image);" (assignment_expression "CVar8 = GetImagePixelCacheType(image)" identifier = (call_expression "GetImagePixelCacheType(image)" identifier (argument_list "(image)" ( identifier )))) ;) (if_statement "if (CVar8 != MapCache) goto LAB_0006796d;" if (parenthesized_expression "(CVar8 != MapCache)" ( (binary_expression "CVar8 != MapCache" identifier != identifier) )) (goto_statement "goto LAB_0006796d;" goto statement_identifier ;)) })) (expression_statement "channel_distortion[0x32]._0_4_ = (code *)0x7;" (assignment_expression "channel_distortion[0x32]._0_4_ = (code *)0x7" (field_expression "channel_distortion[0x32]._0_4_" (subscript_expression "channel_distortion[0x32]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(code *)0x7" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "channel_distortion[0x31]._4_4_ = 0x67b1c;" (assignment_expression "channel_distortion[0x31]._4_4_ = 0x67b1c" (field_expression "channel_distortion[0x31]._4_4_" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "MVar14 = GetMagickResourceLimit(ThreadResource);" (assignment_expression "MVar14 = GetMagickResourceLimit(ThreadResource)" identifier = (call_expression "GetMagickResourceLimit(ThreadResource)" identifier (argument_list "(ThreadResource)" ( identifier )))) ;) (expression_statement "iVar13 = channel_distortion[0x36]._0_4_ + 0x3f;" (assignment_expression "iVar13 = channel_distortion[0x36]._0_4_ + 0x3f" identifier = (binary_expression "channel_distortion[0x36]._0_4_ + 0x3f" (field_expression "channel_distortion[0x36]._0_4_" (subscript_expression "channel_distortion[0x36]" identifier [ number_literal ]) . field_identifier) + number_literal)) ;) (if_statement "if (-1 < channel_distortion[0x36]._0_4_) {\n      iVar13 = channel_distortion[0x36]._0_4_;\n    }" if (parenthesized_expression "(-1 < channel_distortion[0x36]._0_4_)" ( (binary_expression "-1 < channel_distortion[0x36]._0_4_" number_literal < (field_expression "channel_distortion[0x36]._0_4_" (subscript_expression "channel_distortion[0x36]" identifier [ number_literal ]) . field_identifier)) )) (compound_statement "{\n      iVar13 = channel_distortion[0x36]._0_4_;\n    }" { (expression_statement "iVar13 = channel_distortion[0x36]._0_4_;" (assignment_expression "iVar13 = channel_distortion[0x36]._0_4_" identifier = (field_expression "channel_distortion[0x36]._0_4_" (subscript_expression "channel_distortion[0x36]" identifier [ number_literal ]) . field_identifier)) ;) })) (expression_statement "channel_distortion[0x38]._0_4_ = iVar13 >> 6;" (assignment_expression "channel_distortion[0x38]._0_4_ = iVar13 >> 6" (field_expression "channel_distortion[0x38]._0_4_" (subscript_expression "channel_distortion[0x38]" identifier [ number_literal ]) . field_identifier) = (binary_expression "iVar13 >> 6" identifier >> number_literal)) ;) (expression_statement "bVar3 = 0x7f < channel_distortion[0x36]._0_4_;" (assignment_expression "bVar3 = 0x7f < channel_distortion[0x36]._0_4_" identifier = (binary_expression "0x7f < channel_distortion[0x36]._0_4_" number_literal < (field_expression "channel_distortion[0x36]._0_4_" (subscript_expression "channel_distortion[0x36]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "iVar13 = channel_distortion[0x38]._0_4_;" (assignment_expression "iVar13 = channel_distortion[0x38]._0_4_" identifier = (field_expression "channel_distortion[0x38]._0_4_" (subscript_expression "channel_distortion[0x38]" identifier [ number_literal ]) . field_identifier)) ;) (if_statement "if ((int)MVar14 < channel_distortion[0x38]._0_4_) {\n      channel_distortion[0x32]._0_4_ = (code *)0x7;\n      channel_distortion[0x31]._4_4_ = 0x67b4a;\n      channel_distortion[0x38]._4_4_ = channel_distortion[0x38]._0_4_;\n      MVar14 = GetMagickResourceLimit(ThreadResource);\n      bVar3 = 1 < (int)MVar14;\n      iVar13 = channel_distortion[0x38]._4_4_;\n    }" if (parenthesized_expression "((int)MVar14 < channel_distortion[0x38]._0_4_)" ( (binary_expression "(int)MVar14 < channel_distortion[0x38]._0_4_" (cast_expression "(int)MVar14" ( (type_descriptor "int" primitive_type) ) identifier) < (field_expression "channel_distortion[0x38]._0_4_" (subscript_expression "channel_distortion[0x38]" identifier [ number_literal ]) . field_identifier)) )) (compound_statement "{\n      channel_distortion[0x32]._0_4_ = (code *)0x7;\n      channel_distortion[0x31]._4_4_ = 0x67b4a;\n      channel_distortion[0x38]._4_4_ = channel_distortion[0x38]._0_4_;\n      MVar14 = GetMagickResourceLimit(ThreadResource);\n      bVar3 = 1 < (int)MVar14;\n      iVar13 = channel_distortion[0x38]._4_4_;\n    }" { (expression_statement "channel_distortion[0x32]._0_4_ = (code *)0x7;" (assignment_expression "channel_distortion[0x32]._0_4_ = (code *)0x7" (field_expression "channel_distortion[0x32]._0_4_" (subscript_expression "channel_distortion[0x32]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(code *)0x7" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "channel_distortion[0x31]._4_4_ = 0x67b4a;" (assignment_expression "channel_distortion[0x31]._4_4_ = 0x67b4a" (field_expression "channel_distortion[0x31]._4_4_" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "channel_distortion[0x38]._4_4_ = channel_distortion[0x38]._0_4_;" (assignment_expression "channel_distortion[0x38]._4_4_ = channel_distortion[0x38]._0_4_" (field_expression "channel_distortion[0x38]._4_4_" (subscript_expression "channel_distortion[0x38]" identifier [ number_literal ]) . field_identifier) = (field_expression "channel_distortion[0x38]._0_4_" (subscript_expression "channel_distortion[0x38]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "MVar14 = GetMagickResourceLimit(ThreadResource);" (assignment_expression "MVar14 = GetMagickResourceLimit(ThreadResource)" identifier = (call_expression "GetMagickResourceLimit(ThreadResource)" identifier (argument_list "(ThreadResource)" ( identifier )))) ;) (expression_statement "bVar3 = 1 < (int)MVar14;" (assignment_expression "bVar3 = 1 < (int)MVar14" identifier = (binary_expression "1 < (int)MVar14" number_literal < (cast_expression "(int)MVar14" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "iVar13 = channel_distortion[0x38]._4_4_;" (assignment_expression "iVar13 = channel_distortion[0x38]._4_4_" identifier = (field_expression "channel_distortion[0x38]._4_4_" (subscript_expression "channel_distortion[0x38]" identifier [ number_literal ]) . field_identifier)) ;) })) (if_statement "if (bVar3) {\n      channel_distortion[0x32]._0_4_ = (code *)0x7;\n      channel_distortion[0x31]._4_4_ = 0x67bdb;\n      channel_distortion[0x38]._4_4_ = iVar13;\n      MVar14 = GetMagickResourceLimit(ThreadResource);\n      channel_distortion[0x33]._0_4_ = channel_distortion[0x38]._0_4_;\n      if ((int)MVar14 < channel_distortion[0x38]._4_4_) {\n        channel_distortion[0x32]._0_4_ = (code *)0x7;\n        channel_distortion[0x31]._4_4_ = 0x67bf9;\n        MVar14 = GetMagickResourceLimit(ThreadResource);\n        channel_distortion[0x33]._0_4_ = (int)MVar14;\n      }\n    }\n    else {\nLAB_00067b5b:\n      channel_distortion[0x33]._0_4_ = 1;\n    }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n      channel_distortion[0x32]._0_4_ = (code *)0x7;\n      channel_distortion[0x31]._4_4_ = 0x67bdb;\n      channel_distortion[0x38]._4_4_ = iVar13;\n      MVar14 = GetMagickResourceLimit(ThreadResource);\n      channel_distortion[0x33]._0_4_ = channel_distortion[0x38]._0_4_;\n      if ((int)MVar14 < channel_distortion[0x38]._4_4_) {\n        channel_distortion[0x32]._0_4_ = (code *)0x7;\n        channel_distortion[0x31]._4_4_ = 0x67bf9;\n        MVar14 = GetMagickResourceLimit(ThreadResource);\n        channel_distortion[0x33]._0_4_ = (int)MVar14;\n      }\n    }" { (expression_statement "channel_distortion[0x32]._0_4_ = (code *)0x7;" (assignment_expression "channel_distortion[0x32]._0_4_ = (code *)0x7" (field_expression "channel_distortion[0x32]._0_4_" (subscript_expression "channel_distortion[0x32]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(code *)0x7" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "channel_distortion[0x31]._4_4_ = 0x67bdb;" (assignment_expression "channel_distortion[0x31]._4_4_ = 0x67bdb" (field_expression "channel_distortion[0x31]._4_4_" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "channel_distortion[0x38]._4_4_ = iVar13;" (assignment_expression "channel_distortion[0x38]._4_4_ = iVar13" (field_expression "channel_distortion[0x38]._4_4_" (subscript_expression "channel_distortion[0x38]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "MVar14 = GetMagickResourceLimit(ThreadResource);" (assignment_expression "MVar14 = GetMagickResourceLimit(ThreadResource)" identifier = (call_expression "GetMagickResourceLimit(ThreadResource)" identifier (argument_list "(ThreadResource)" ( identifier )))) ;) (expression_statement "channel_distortion[0x33]._0_4_ = channel_distortion[0x38]._0_4_;" (assignment_expression "channel_distortion[0x33]._0_4_ = channel_distortion[0x38]._0_4_" (field_expression "channel_distortion[0x33]._0_4_" (subscript_expression "channel_distortion[0x33]" identifier [ number_literal ]) . field_identifier) = (field_expression "channel_distortion[0x38]._0_4_" (subscript_expression "channel_distortion[0x38]" identifier [ number_literal ]) . field_identifier)) ;) (if_statement "if ((int)MVar14 < channel_distortion[0x38]._4_4_) {\n        channel_distortion[0x32]._0_4_ = (code *)0x7;\n        channel_distortion[0x31]._4_4_ = 0x67bf9;\n        MVar14 = GetMagickResourceLimit(ThreadResource);\n        channel_distortion[0x33]._0_4_ = (int)MVar14;\n      }" if (parenthesized_expression "((int)MVar14 < channel_distortion[0x38]._4_4_)" ( (binary_expression "(int)MVar14 < channel_distortion[0x38]._4_4_" (cast_expression "(int)MVar14" ( (type_descriptor "int" primitive_type) ) identifier) < (field_expression "channel_distortion[0x38]._4_4_" (subscript_expression "channel_distortion[0x38]" identifier [ number_literal ]) . field_identifier)) )) (compound_statement "{\n        channel_distortion[0x32]._0_4_ = (code *)0x7;\n        channel_distortion[0x31]._4_4_ = 0x67bf9;\n        MVar14 = GetMagickResourceLimit(ThreadResource);\n        channel_distortion[0x33]._0_4_ = (int)MVar14;\n      }" { (expression_statement "channel_distortion[0x32]._0_4_ = (code *)0x7;" (assignment_expression "channel_distortion[0x32]._0_4_ = (code *)0x7" (field_expression "channel_distortion[0x32]._0_4_" (subscript_expression "channel_distortion[0x32]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(code *)0x7" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "channel_distortion[0x31]._4_4_ = 0x67bf9;" (assignment_expression "channel_distortion[0x31]._4_4_ = 0x67bf9" (field_expression "channel_distortion[0x31]._4_4_" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "MVar14 = GetMagickResourceLimit(ThreadResource);" (assignment_expression "MVar14 = GetMagickResourceLimit(ThreadResource)" identifier = (call_expression "GetMagickResourceLimit(ThreadResource)" identifier (argument_list "(ThreadResource)" ( identifier )))) ;) (expression_statement "channel_distortion[0x33]._0_4_ = (int)MVar14;" (assignment_expression "channel_distortion[0x33]._0_4_ = (int)MVar14" (field_expression "channel_distortion[0x33]._0_4_" (subscript_expression "channel_distortion[0x33]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(int)MVar14" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) }) (else_clause "else {\nLAB_00067b5b:\n      channel_distortion[0x33]._0_4_ = 1;\n    }" else (compound_statement "{\nLAB_00067b5b:\n      channel_distortion[0x33]._0_4_ = 1;\n    }" { (labeled_statement "LAB_00067b5b:\n      channel_distortion[0x33]._0_4_ = 1;" statement_identifier : (expression_statement "channel_distortion[0x33]._0_4_ = 1;" (assignment_expression "channel_distortion[0x33]._0_4_ = 1" (field_expression "channel_distortion[0x33]._0_4_" (subscript_expression "channel_distortion[0x33]" identifier [ number_literal ]) . field_identifier) = number_literal) ;)) }))) }) (else_clause "else {\n    channel_distortion[0x31]._4_4_ = 0x67961;\n    channel_distortion[0x32]._0_4_ = (code *)image;\n    CVar8 = GetImagePixelCacheType(image);\n    if (CVar8 == MapCache) goto LAB_00067aec;\nLAB_0006796d:\n    channel_distortion[0x32]._0_4_ = (code *)0x7;\n    channel_distortion[0x31]._4_4_ = 0x67977;\n    MVar14 = GetMagickResourceLimit(ThreadResource);\n    if (((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2)) {\n      channel_distortion[0x32]._0_4_ = (code *)0x7;\n      channel_distortion[0x31]._4_4_ = 0x67b78;\n      MVar14 = GetMagickResourceLimit(ThreadResource);\n      if (((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2)) goto LAB_00067b5b;\n    }\n    channel_distortion[0x32]._0_4_ = (code *)0x7;\n    channel_distortion[0x31]._4_4_ = 0x6798d;\n    MVar14 = GetMagickResourceLimit(ThreadResource);\n    if (((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2)) {\n      channel_distortion[0x32]._0_4_ = (code *)0x7;\n      channel_distortion[0x31]._4_4_ = 0x67bc5;\n      MVar14 = GetMagickResourceLimit(ThreadResource);\n      channel_distortion[0x33]._0_4_ = (int)MVar14;\n    }\n    else {\n      channel_distortion[0x33]._0_4_ = 2;\n    }\n  }" else (compound_statement "{\n    channel_distortion[0x31]._4_4_ = 0x67961;\n    channel_distortion[0x32]._0_4_ = (code *)image;\n    CVar8 = GetImagePixelCacheType(image);\n    if (CVar8 == MapCache) goto LAB_00067aec;\nLAB_0006796d:\n    channel_distortion[0x32]._0_4_ = (code *)0x7;\n    channel_distortion[0x31]._4_4_ = 0x67977;\n    MVar14 = GetMagickResourceLimit(ThreadResource);\n    if (((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2)) {\n      channel_distortion[0x32]._0_4_ = (code *)0x7;\n      channel_distortion[0x31]._4_4_ = 0x67b78;\n      MVar14 = GetMagickResourceLimit(ThreadResource);\n      if (((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2)) goto LAB_00067b5b;\n    }\n    channel_distortion[0x32]._0_4_ = (code *)0x7;\n    channel_distortion[0x31]._4_4_ = 0x6798d;\n    MVar14 = GetMagickResourceLimit(ThreadResource);\n    if (((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2)) {\n      channel_distortion[0x32]._0_4_ = (code *)0x7;\n      channel_distortion[0x31]._4_4_ = 0x67bc5;\n      MVar14 = GetMagickResourceLimit(ThreadResource);\n      channel_distortion[0x33]._0_4_ = (int)MVar14;\n    }\n    else {\n      channel_distortion[0x33]._0_4_ = 2;\n    }\n  }" { (expression_statement "channel_distortion[0x31]._4_4_ = 0x67961;" (assignment_expression "channel_distortion[0x31]._4_4_ = 0x67961" (field_expression "channel_distortion[0x31]._4_4_" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "channel_distortion[0x32]._0_4_ = (code *)image;" (assignment_expression "channel_distortion[0x32]._0_4_ = (code *)image" (field_expression "channel_distortion[0x32]._0_4_" (subscript_expression "channel_distortion[0x32]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(code *)image" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "CVar8 = GetImagePixelCacheType(image);" (assignment_expression "CVar8 = GetImagePixelCacheType(image)" identifier = (call_expression "GetImagePixelCacheType(image)" identifier (argument_list "(image)" ( identifier )))) ;) (if_statement "if (CVar8 == MapCache) goto LAB_00067aec;" if (parenthesized_expression "(CVar8 == MapCache)" ( (binary_expression "CVar8 == MapCache" identifier == identifier) )) (goto_statement "goto LAB_00067aec;" goto statement_identifier ;)) (labeled_statement "LAB_0006796d:\n    channel_distortion[0x32]._0_4_ = (code *)0x7;" statement_identifier : (expression_statement "channel_distortion[0x32]._0_4_ = (code *)0x7;" (assignment_expression "channel_distortion[0x32]._0_4_ = (code *)0x7" (field_expression "channel_distortion[0x32]._0_4_" (subscript_expression "channel_distortion[0x32]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(code *)0x7" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "channel_distortion[0x31]._4_4_ = 0x67977;" (assignment_expression "channel_distortion[0x31]._4_4_ = 0x67977" (field_expression "channel_distortion[0x31]._4_4_" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "MVar14 = GetMagickResourceLimit(ThreadResource);" (assignment_expression "MVar14 = GetMagickResourceLimit(ThreadResource)" identifier = (call_expression "GetMagickResourceLimit(ThreadResource)" identifier (argument_list "(ThreadResource)" ( identifier )))) ;) (if_statement "if (((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2)) {\n      channel_distortion[0x32]._0_4_ = (code *)0x7;\n      channel_distortion[0x31]._4_4_ = 0x67b78;\n      MVar14 = GetMagickResourceLimit(ThreadResource);\n      if (((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2)) goto LAB_00067b5b;\n    }" if (parenthesized_expression "(((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2))" ( (binary_expression "((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2)" (parenthesized_expression "((int)(MVar14 >> 0x20) == 0)" ( (binary_expression "(int)(MVar14 >> 0x20) == 0" (cast_expression "(int)(MVar14 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(MVar14 >> 0x20)" ( (binary_expression "MVar14 >> 0x20" identifier >> number_literal) ))) == number_literal) )) && (parenthesized_expression "((uint)MVar14 < 2)" ( (binary_expression "(uint)MVar14 < 2" (cast_expression "(uint)MVar14" ( (type_descriptor "uint" type_identifier) ) identifier) < number_literal) ))) )) (compound_statement "{\n      channel_distortion[0x32]._0_4_ = (code *)0x7;\n      channel_distortion[0x31]._4_4_ = 0x67b78;\n      MVar14 = GetMagickResourceLimit(ThreadResource);\n      if (((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2)) goto LAB_00067b5b;\n    }" { (expression_statement "channel_distortion[0x32]._0_4_ = (code *)0x7;" (assignment_expression "channel_distortion[0x32]._0_4_ = (code *)0x7" (field_expression "channel_distortion[0x32]._0_4_" (subscript_expression "channel_distortion[0x32]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(code *)0x7" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "channel_distortion[0x31]._4_4_ = 0x67b78;" (assignment_expression "channel_distortion[0x31]._4_4_ = 0x67b78" (field_expression "channel_distortion[0x31]._4_4_" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "MVar14 = GetMagickResourceLimit(ThreadResource);" (assignment_expression "MVar14 = GetMagickResourceLimit(ThreadResource)" identifier = (call_expression "GetMagickResourceLimit(ThreadResource)" identifier (argument_list "(ThreadResource)" ( identifier )))) ;) (if_statement "if (((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2)) goto LAB_00067b5b;" if (parenthesized_expression "(((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2))" ( (binary_expression "((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2)" (parenthesized_expression "((int)(MVar14 >> 0x20) == 0)" ( (binary_expression "(int)(MVar14 >> 0x20) == 0" (cast_expression "(int)(MVar14 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(MVar14 >> 0x20)" ( (binary_expression "MVar14 >> 0x20" identifier >> number_literal) ))) == number_literal) )) && (parenthesized_expression "((uint)MVar14 < 2)" ( (binary_expression "(uint)MVar14 < 2" (cast_expression "(uint)MVar14" ( (type_descriptor "uint" type_identifier) ) identifier) < number_literal) ))) )) (goto_statement "goto LAB_00067b5b;" goto statement_identifier ;)) })) (expression_statement "channel_distortion[0x32]._0_4_ = (code *)0x7;" (assignment_expression "channel_distortion[0x32]._0_4_ = (code *)0x7" (field_expression "channel_distortion[0x32]._0_4_" (subscript_expression "channel_distortion[0x32]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(code *)0x7" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "channel_distortion[0x31]._4_4_ = 0x6798d;" (assignment_expression "channel_distortion[0x31]._4_4_ = 0x6798d" (field_expression "channel_distortion[0x31]._4_4_" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "MVar14 = GetMagickResourceLimit(ThreadResource);" (assignment_expression "MVar14 = GetMagickResourceLimit(ThreadResource)" identifier = (call_expression "GetMagickResourceLimit(ThreadResource)" identifier (argument_list "(ThreadResource)" ( identifier )))) ;) (if_statement "if (((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2)) {\n      channel_distortion[0x32]._0_4_ = (code *)0x7;\n      channel_distortion[0x31]._4_4_ = 0x67bc5;\n      MVar14 = GetMagickResourceLimit(ThreadResource);\n      channel_distortion[0x33]._0_4_ = (int)MVar14;\n    }\n    else {\n      channel_distortion[0x33]._0_4_ = 2;\n    }" if (parenthesized_expression "(((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2))" ( (binary_expression "((int)(MVar14 >> 0x20) == 0) && ((uint)MVar14 < 2)" (parenthesized_expression "((int)(MVar14 >> 0x20) == 0)" ( (binary_expression "(int)(MVar14 >> 0x20) == 0" (cast_expression "(int)(MVar14 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(MVar14 >> 0x20)" ( (binary_expression "MVar14 >> 0x20" identifier >> number_literal) ))) == number_literal) )) && (parenthesized_expression "((uint)MVar14 < 2)" ( (binary_expression "(uint)MVar14 < 2" (cast_expression "(uint)MVar14" ( (type_descriptor "uint" type_identifier) ) identifier) < number_literal) ))) )) (compound_statement "{\n      channel_distortion[0x32]._0_4_ = (code *)0x7;\n      channel_distortion[0x31]._4_4_ = 0x67bc5;\n      MVar14 = GetMagickResourceLimit(ThreadResource);\n      channel_distortion[0x33]._0_4_ = (int)MVar14;\n    }" { (expression_statement "channel_distortion[0x32]._0_4_ = (code *)0x7;" (assignment_expression "channel_distortion[0x32]._0_4_ = (code *)0x7" (field_expression "channel_distortion[0x32]._0_4_" (subscript_expression "channel_distortion[0x32]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(code *)0x7" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "channel_distortion[0x31]._4_4_ = 0x67bc5;" (assignment_expression "channel_distortion[0x31]._4_4_ = 0x67bc5" (field_expression "channel_distortion[0x31]._4_4_" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "MVar14 = GetMagickResourceLimit(ThreadResource);" (assignment_expression "MVar14 = GetMagickResourceLimit(ThreadResource)" identifier = (call_expression "GetMagickResourceLimit(ThreadResource)" identifier (argument_list "(ThreadResource)" ( identifier )))) ;) (expression_statement "channel_distortion[0x33]._0_4_ = (int)MVar14;" (assignment_expression "channel_distortion[0x33]._0_4_ = (int)MVar14" (field_expression "channel_distortion[0x33]._0_4_" (subscript_expression "channel_distortion[0x33]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(int)MVar14" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }) (else_clause "else {\n      channel_distortion[0x33]._0_4_ = 2;\n    }" else (compound_statement "{\n      channel_distortion[0x33]._0_4_ = 2;\n    }" { (expression_statement "channel_distortion[0x33]._0_4_ = 2;" (assignment_expression "channel_distortion[0x33]._0_4_ = 2" (field_expression "channel_distortion[0x33]._0_4_" (subscript_expression "channel_distortion[0x33]" identifier [ number_literal ]) . field_identifier) = number_literal) ;) }))) }))) (expression_statement "channel_distortion[0x3d]._4_4_ = exception;" (assignment_expression "channel_distortion[0x3d]._4_4_ = exception" (field_expression "channel_distortion[0x3d]._4_4_" (subscript_expression "channel_distortion[0x3d]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "channel_distortion[0x3b] = 0.0;" (assignment_expression "channel_distortion[0x3b] = 0.0" (subscript_expression "channel_distortion[0x3b]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "channel_distortion[0x40]._0_4_ = channel_distortion[0x36]._0_4_;" (assignment_expression "channel_distortion[0x40]._0_4_ = channel_distortion[0x36]._0_4_" (field_expression "channel_distortion[0x40]._0_4_" (subscript_expression "channel_distortion[0x40]" identifier [ number_literal ]) . field_identifier) = (field_expression "channel_distortion[0x36]._0_4_" (subscript_expression "channel_distortion[0x36]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "channel_distortion[0x38]._0_4_ = 0;" (assignment_expression "channel_distortion[0x38]._0_4_ = 0" (field_expression "channel_distortion[0x38]._0_4_" (subscript_expression "channel_distortion[0x38]" identifier [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "channel_distortion[0x3e]._0_4_ = channel_distortion[0x35]._0_4_;" (assignment_expression "channel_distortion[0x3e]._0_4_ = channel_distortion[0x35]._0_4_" (field_expression "channel_distortion[0x3e]._0_4_" (subscript_expression "channel_distortion[0x3e]" identifier [ number_literal ]) . field_identifier) = (field_expression "channel_distortion[0x35]._0_4_" (subscript_expression "channel_distortion[0x35]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "channel_distortion[0x3d]._0_4_ = channel_distortion[0x34]._4_4_;" (assignment_expression "channel_distortion[0x3d]._0_4_ = channel_distortion[0x34]._4_4_" (field_expression "channel_distortion[0x3d]._0_4_" (subscript_expression "channel_distortion[0x3d]" identifier [ number_literal ]) . field_identifier) = (field_expression "channel_distortion[0x34]._4_4_" (subscript_expression "channel_distortion[0x34]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "channel_distortion[0x3f]._4_4_ = channel_distortion[0x37]._4_4_;" (assignment_expression "channel_distortion[0x3f]._4_4_ = channel_distortion[0x37]._4_4_" (field_expression "channel_distortion[0x3f]._4_4_" (subscript_expression "channel_distortion[0x3f]" identifier [ number_literal ]) . field_identifier) = (field_expression "channel_distortion[0x37]._4_4_" (subscript_expression "channel_distortion[0x37]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "channel_distortion[0x3f]._0_4_ = 0;" (assignment_expression "channel_distortion[0x3f]._0_4_ = 0" (field_expression "channel_distortion[0x3f]._0_4_" (subscript_expression "channel_distortion[0x3f]" identifier [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "channel_distortion[0x40]._4_4_ = MagickTrue;" (assignment_expression "channel_distortion[0x40]._4_4_ = MagickTrue" (field_expression "channel_distortion[0x40]._4_4_" (subscript_expression "channel_distortion[0x40]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "channel_distortion[0x3e]._4_4_ = channel_distortion[0x37]._0_4_;" (assignment_expression "channel_distortion[0x3e]._4_4_ = channel_distortion[0x37]._0_4_" (field_expression "channel_distortion[0x3e]._4_4_" (subscript_expression "channel_distortion[0x3e]" identifier [ number_literal ]) . field_identifier) = (field_expression "channel_distortion[0x37]._0_4_" (subscript_expression "channel_distortion[0x37]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "channel_distortion[0x33]._4_4_ = (undefined *)0x0;" (assignment_expression "channel_distortion[0x33]._4_4_ = (undefined *)0x0" (field_expression "channel_distortion[0x33]._4_4_" (subscript_expression "channel_distortion[0x33]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "channel_distortion[0x32]._4_4_ = (ExceptionInfo *)(channel_distortion + 0x3b);" (assignment_expression "channel_distortion[0x32]._4_4_ = (ExceptionInfo *)(channel_distortion + 0x3b)" (field_expression "channel_distortion[0x32]._4_4_" (subscript_expression "channel_distortion[0x32]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(ExceptionInfo *)(channel_distortion + 0x3b)" ( (type_descriptor "ExceptionInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(channel_distortion + 0x3b)" ( (binary_expression "channel_distortion + 0x3b" identifier + number_literal) )))) ;) (expression_statement "channel_distortion[0x32]._0_4_ = GetMeanSquaredDistortion__omp_fn_4;" (assignment_expression "channel_distortion[0x32]._0_4_ = GetMeanSquaredDistortion__omp_fn_4" (field_expression "channel_distortion[0x32]._0_4_" (subscript_expression "channel_distortion[0x32]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "channel_distortion[0x31]._4_4_ = 0x67a00;" (assignment_expression "channel_distortion[0x31]._4_4_ = 0x67a00" (field_expression "channel_distortion[0x31]._4_4_" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "channel_distortion[0x3c]._0_4_ = image;" (assignment_expression "channel_distortion[0x3c]._0_4_ = image" (field_expression "channel_distortion[0x3c]._0_4_" (subscript_expression "channel_distortion[0x3c]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "channel_distortion[0x3c]._4_4_ = reconstruct_image;" (assignment_expression "channel_distortion[0x3c]._4_4_ = reconstruct_image" (field_expression "channel_distortion[0x3c]._4_4_" (subscript_expression "channel_distortion[0x3c]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "GOMP_parallel(GetMeanSquaredDistortion__omp_fn_4,channel_distortion[0x32]._4_4_,\n                channel_distortion[0x33]._0_4_,0);" (call_expression "GOMP_parallel(GetMeanSquaredDistortion__omp_fn_4,channel_distortion[0x32]._4_4_,\n                channel_distortion[0x33]._0_4_,0)" identifier (argument_list "(GetMeanSquaredDistortion__omp_fn_4,channel_distortion[0x32]._4_4_,\n                channel_distortion[0x33]._0_4_,0)" ( identifier , (field_expression "channel_distortion[0x32]._4_4_" (subscript_expression "channel_distortion[0x32]" identifier [ number_literal ]) . field_identifier) , (field_expression "channel_distortion[0x33]._0_4_" (subscript_expression "channel_distortion[0x33]" identifier [ number_literal ]) . field_identifier) , number_literal ))) ;) (expression_statement "MVar6 = channel_distortion[0x40]._4_4_;" (assignment_expression "MVar6 = channel_distortion[0x40]._4_4_" identifier = (field_expression "channel_distortion[0x40]._4_4_" (subscript_expression "channel_distortion[0x40]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "channel_distortion[0x36] = channel_distortion[0x3b];" (assignment_expression "channel_distortion[0x36] = channel_distortion[0x3b]" (subscript_expression "channel_distortion[0x36]" identifier [ number_literal ]) = (subscript_expression "channel_distortion[0x3b]" identifier [ number_literal ])) ;) (expression_statement "channel_distortion[0x32]._0_4_ = (code *)channel_distortion[0x37]._0_4_;" (assignment_expression "channel_distortion[0x32]._0_4_ = (code *)channel_distortion[0x37]._0_4_" (field_expression "channel_distortion[0x32]._0_4_" (subscript_expression "channel_distortion[0x32]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(code *)channel_distortion[0x37]._0_4_" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "channel_distortion[0x37]._0_4_" (subscript_expression "channel_distortion[0x37]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "channel_distortion[0x31]._4_4_ = 0x67a16;" (assignment_expression "channel_distortion[0x31]._4_4_ = 0x67a16" (field_expression "channel_distortion[0x31]._4_4_" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "DestroyCacheView(channel_distortion[0x37]._0_4_);" (call_expression "DestroyCacheView(channel_distortion[0x37]._0_4_)" identifier (argument_list "(channel_distortion[0x37]._0_4_)" ( (field_expression "channel_distortion[0x37]._0_4_" (subscript_expression "channel_distortion[0x37]" identifier [ number_literal ]) . field_identifier) ))) ;) (expression_statement "channel_distortion[0x32]._0_4_ = (code *)channel_distortion[0x35]._0_4_;" (assignment_expression "channel_distortion[0x32]._0_4_ = (code *)channel_distortion[0x35]._0_4_" (field_expression "channel_distortion[0x32]._0_4_" (subscript_expression "channel_distortion[0x32]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(code *)channel_distortion[0x35]._0_4_" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "channel_distortion[0x35]._0_4_" (subscript_expression "channel_distortion[0x35]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "channel_distortion[0x31]._4_4_ = 0x67a20;" (assignment_expression "channel_distortion[0x31]._4_4_ = 0x67a20" (field_expression "channel_distortion[0x31]._4_4_" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "DestroyCacheView(channel_distortion[0x35]._0_4_);" (call_expression "DestroyCacheView(channel_distortion[0x35]._0_4_)" identifier (argument_list "(channel_distortion[0x35]._0_4_)" ( (field_expression "channel_distortion[0x35]._0_4_" (subscript_expression "channel_distortion[0x35]" identifier [ number_literal ]) . field_identifier) ))) ;) (if_statement "if (channel_distortion[0x36] < 0.0) {\n    dVar5 = -channel_distortion[0x36];\n    dVar4 = -1.0;\n  }\n  else {\n    dVar4 = 1.0;\n    dVar5 = channel_distortion[0x36];\n  }" if (parenthesized_expression "(channel_distortion[0x36] < 0.0)" ( (binary_expression "channel_distortion[0x36] < 0.0" (subscript_expression "channel_distortion[0x36]" identifier [ number_literal ]) < number_literal) )) (compound_statement "{\n    dVar5 = -channel_distortion[0x36];\n    dVar4 = -1.0;\n  }" { (expression_statement "dVar5 = -channel_distortion[0x36];" (assignment_expression "dVar5 = -channel_distortion[0x36]" identifier = (unary_expression "-channel_distortion[0x36]" - (subscript_expression "channel_distortion[0x36]" identifier [ number_literal ]))) ;) (expression_statement "dVar4 = -1.0;" (assignment_expression "dVar4 = -1.0" identifier = number_literal) ;) }) (else_clause "else {\n    dVar4 = 1.0;\n    dVar5 = channel_distortion[0x36];\n  }" else (compound_statement "{\n    dVar4 = 1.0;\n    dVar5 = channel_distortion[0x36];\n  }" { (expression_statement "dVar4 = 1.0;" (assignment_expression "dVar4 = 1.0" identifier = number_literal) ;) (expression_statement "dVar5 = channel_distortion[0x36];" (assignment_expression "dVar5 = channel_distortion[0x36]" identifier = (subscript_expression "channel_distortion[0x36]" identifier [ number_literal ])) ;) }))) (if_statement "if (dVar5 < DAT_0029f138) {\n    dVar4 = dVar4 / DAT_0029f138;\n  }\n  else {\n    dVar4 = (double)DAT_0029f718 / channel_distortion[0x36];\n  }" if (parenthesized_expression "(dVar5 < DAT_0029f138)" ( (binary_expression "dVar5 < DAT_0029f138" identifier < identifier) )) (compound_statement "{\n    dVar4 = dVar4 / DAT_0029f138;\n  }" { (expression_statement "dVar4 = dVar4 / DAT_0029f138;" (assignment_expression "dVar4 = dVar4 / DAT_0029f138" identifier = (binary_expression "dVar4 / DAT_0029f138" identifier / identifier)) ;) }) (else_clause "else {\n    dVar4 = (double)DAT_0029f718 / channel_distortion[0x36];\n  }" else (compound_statement "{\n    dVar4 = (double)DAT_0029f718 / channel_distortion[0x36];\n  }" { (expression_statement "dVar4 = (double)DAT_0029f718 / channel_distortion[0x36];" (assignment_expression "dVar4 = (double)DAT_0029f718 / channel_distortion[0x36]" identifier = (binary_expression "(double)DAT_0029f718 / channel_distortion[0x36]" (cast_expression "(double)DAT_0029f718" ( (type_descriptor "double" primitive_type) ) identifier) / (subscript_expression "channel_distortion[0x36]" identifier [ number_literal ]))) ;) }))) (expression_statement "pdVar9 = channel_distortion[0x34]._4_4_;" (assignment_expression "pdVar9 = channel_distortion[0x34]._4_4_" identifier = (field_expression "channel_distortion[0x34]._4_4_" (subscript_expression "channel_distortion[0x34]" identifier [ number_literal ]) . field_identifier)) ;) (do_statement "do {\n    pdVar10 = pdVar9 + 1;\n    *pdVar9 = *pdVar9 * dVar4;\n    pdVar9 = pdVar10;\n  } while (channel_distortion[0x34]._4_4_ + 0x41 != pdVar10);" do (compound_statement "{\n    pdVar10 = pdVar9 + 1;\n    *pdVar9 = *pdVar9 * dVar4;\n    pdVar9 = pdVar10;\n  }" { (expression_statement "pdVar10 = pdVar9 + 1;" (assignment_expression "pdVar10 = pdVar9 + 1" identifier = (binary_expression "pdVar9 + 1" identifier + number_literal)) ;) (expression_statement "*pdVar9 = *pdVar9 * dVar4;" (assignment_expression "*pdVar9 = *pdVar9 * dVar4" (pointer_expression "*pdVar9" * identifier) = (binary_expression "*pdVar9 * dVar4" (pointer_expression "*pdVar9" * identifier) * identifier)) ;) (expression_statement "pdVar9 = pdVar10;" (assignment_expression "pdVar9 = pdVar10" identifier = identifier) ;) }) while (parenthesized_expression "(channel_distortion[0x34]._4_4_ + 0x41 != pdVar10)" ( (binary_expression "channel_distortion[0x34]._4_4_ + 0x41 != pdVar10" (binary_expression "channel_distortion[0x34]._4_4_ + 0x41" (field_expression "channel_distortion[0x34]._4_4_" (subscript_expression "channel_distortion[0x34]" identifier [ number_literal ]) . field_identifier) + number_literal) != identifier) )) ;) (if_statement "if (0 < (int)image->number_channels) {\n    pPVar2 = image->channel_map;\n    pCVar12 = (CacheView *)0x0;\n    pPVar11 = pPVar2;\n    do {\n      pCVar12 = (CacheView *)\n                ((int)&pCVar12->image +\n                (uint)((pPVar2[pPVar11->channel].traits & UpdatePixelTrait) != UndefinedPixelTrait))\n      ;\n      pPVar11 = pPVar11 + 1;\n    } while (pPVar11 != pPVar2 + image->number_channels);\n    if (pCVar12 != (CacheView *)0x0) {\n      channel_distortion[0x35]._4_4_ = 0;\n      dVar4 = (double)pCVar12;\n      channel_distortion[0x35]._0_4_ = pCVar12;\n      goto LAB_00067ac1;\n    }\n  }" if (parenthesized_expression "(0 < (int)image->number_channels)" ( (binary_expression "0 < (int)image->number_channels" number_literal < (cast_expression "(int)image->number_channels" ( (type_descriptor "int" primitive_type) ) (field_expression "image->number_channels" identifier -> field_identifier))) )) (compound_statement "{\n    pPVar2 = image->channel_map;\n    pCVar12 = (CacheView *)0x0;\n    pPVar11 = pPVar2;\n    do {\n      pCVar12 = (CacheView *)\n                ((int)&pCVar12->image +\n                (uint)((pPVar2[pPVar11->channel].traits & UpdatePixelTrait) != UndefinedPixelTrait))\n      ;\n      pPVar11 = pPVar11 + 1;\n    } while (pPVar11 != pPVar2 + image->number_channels);\n    if (pCVar12 != (CacheView *)0x0) {\n      channel_distortion[0x35]._4_4_ = 0;\n      dVar4 = (double)pCVar12;\n      channel_distortion[0x35]._0_4_ = pCVar12;\n      goto LAB_00067ac1;\n    }\n  }" { (expression_statement "pPVar2 = image->channel_map;" (assignment_expression "pPVar2 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "pCVar12 = (CacheView *)0x0;" (assignment_expression "pCVar12 = (CacheView *)0x0" identifier = (cast_expression "(CacheView *)0x0" ( (type_descriptor "CacheView *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pPVar11 = pPVar2;" (assignment_expression "pPVar11 = pPVar2" identifier = identifier) ;) (do_statement "do {\n      pCVar12 = (CacheView *)\n                ((int)&pCVar12->image +\n                (uint)((pPVar2[pPVar11->channel].traits & UpdatePixelTrait) != UndefinedPixelTrait))\n      ;\n      pPVar11 = pPVar11 + 1;\n    } while (pPVar11 != pPVar2 + image->number_channels);" do (compound_statement "{\n      pCVar12 = (CacheView *)\n                ((int)&pCVar12->image +\n                (uint)((pPVar2[pPVar11->channel].traits & UpdatePixelTrait) != UndefinedPixelTrait))\n      ;\n      pPVar11 = pPVar11 + 1;\n    }" { (expression_statement "pCVar12 = (CacheView *)\n                ((int)&pCVar12->image +\n                (uint)((pPVar2[pPVar11->channel].traits & UpdatePixelTrait) != UndefinedPixelTrait))\n      ;" (assignment_expression "pCVar12 = (CacheView *)\n                ((int)&pCVar12->image +\n                (uint)((pPVar2[pPVar11->channel].traits & UpdatePixelTrait) != UndefinedPixelTrait))" identifier = (cast_expression "(CacheView *)\n                ((int)&pCVar12->image +\n                (uint)((pPVar2[pPVar11->channel].traits & UpdatePixelTrait) != UndefinedPixelTrait))" ( (type_descriptor "CacheView *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pCVar12->image +\n                (uint)((pPVar2[pPVar11->channel].traits & UpdatePixelTrait) != UndefinedPixelTrait))" ( (binary_expression "(int)&pCVar12->image +\n                (uint)((pPVar2[pPVar11->channel].traits & UpdatePixelTrait) != UndefinedPixelTrait)" (cast_expression "(int)&pCVar12->image" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pCVar12->image" & (field_expression "pCVar12->image" identifier -> field_identifier))) + (call_expression "(uint)((pPVar2[pPVar11->channel].traits & UpdatePixelTrait) != UndefinedPixelTrait)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((pPVar2[pPVar11->channel].traits & UpdatePixelTrait) != UndefinedPixelTrait)" ( (binary_expression "(pPVar2[pPVar11->channel].traits & UpdatePixelTrait) != UndefinedPixelTrait" (parenthesized_expression "(pPVar2[pPVar11->channel].traits & UpdatePixelTrait)" ( (binary_expression "pPVar2[pPVar11->channel].traits & UpdatePixelTrait" (field_expression "pPVar2[pPVar11->channel].traits" (subscript_expression "pPVar2[pPVar11->channel]" identifier [ (field_expression "pPVar11->channel" identifier -> field_identifier) ]) . field_identifier) & identifier) )) != identifier) )))) )))) ;) (expression_statement "pPVar11 = pPVar11 + 1;" (assignment_expression "pPVar11 = pPVar11 + 1" identifier = (binary_expression "pPVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pPVar11 != pPVar2 + image->number_channels)" ( (binary_expression "pPVar11 != pPVar2 + image->number_channels" identifier != (binary_expression "pPVar2 + image->number_channels" identifier + (field_expression "image->number_channels" identifier -> field_identifier))) )) ;) (if_statement "if (pCVar12 != (CacheView *)0x0) {\n      channel_distortion[0x35]._4_4_ = 0;\n      dVar4 = (double)pCVar12;\n      channel_distortion[0x35]._0_4_ = pCVar12;\n      goto LAB_00067ac1;\n    }" if (parenthesized_expression "(pCVar12 != (CacheView *)0x0)" ( (binary_expression "pCVar12 != (CacheView *)0x0" identifier != (cast_expression "(CacheView *)0x0" ( (type_descriptor "CacheView *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      channel_distortion[0x35]._4_4_ = 0;\n      dVar4 = (double)pCVar12;\n      channel_distortion[0x35]._0_4_ = pCVar12;\n      goto LAB_00067ac1;\n    }" { (expression_statement "channel_distortion[0x35]._4_4_ = 0;" (assignment_expression "channel_distortion[0x35]._4_4_ = 0" (field_expression "channel_distortion[0x35]._4_4_" (subscript_expression "channel_distortion[0x35]" identifier [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "dVar4 = (double)pCVar12;" (assignment_expression "dVar4 = (double)pCVar12" identifier = (cast_expression "(double)pCVar12" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "channel_distortion[0x35]._0_4_ = pCVar12;" (assignment_expression "channel_distortion[0x35]._0_4_ = pCVar12" (field_expression "channel_distortion[0x35]._0_4_" (subscript_expression "channel_distortion[0x35]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (goto_statement "goto LAB_00067ac1;" goto statement_identifier ;) })) })) (expression_statement "dVar4 = 1.0;" (assignment_expression "dVar4 = 1.0" identifier = number_literal) ;) (labeled_statement "LAB_00067ac1:\n  channel_distortion[0x34]._4_4_[0x40] = channel_distortion[0x34]._4_4_[0x40] / dVar4;" statement_identifier : (expression_statement "channel_distortion[0x34]._4_4_[0x40] = channel_distortion[0x34]._4_4_[0x40] / dVar4;" (assignment_expression "channel_distortion[0x34]._4_4_[0x40] = channel_distortion[0x34]._4_4_[0x40] / dVar4" (subscript_expression "channel_distortion[0x34]._4_4_[0x40]" (field_expression "channel_distortion[0x34]._4_4_" (subscript_expression "channel_distortion[0x34]" identifier [ number_literal ]) . field_identifier) [ number_literal ]) = (binary_expression "channel_distortion[0x34]._4_4_[0x40] / dVar4" (subscript_expression "channel_distortion[0x34]._4_4_[0x40]" (field_expression "channel_distortion[0x34]._4_4_" (subscript_expression "channel_distortion[0x34]" identifier [ number_literal ]) . field_identifier) [ number_literal ]) / identifier)) ;)) (if_statement "if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    channel_distortion[0x33]._4_4_ = &UNK_00067c07;\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(iVar1 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    channel_distortion[0x33]._4_4_ = &UNK_00067c07;\n    __stack_chk_fail_local();\n  }" { comment (expression_statement "channel_distortion[0x33]._4_4_ = &UNK_00067c07;" (assignment_expression "channel_distortion[0x33]._4_4_ = &UNK_00067c07" (field_expression "channel_distortion[0x33]._4_4_" (subscript_expression "channel_distortion[0x33]" identifier [ number_literal ]) . field_identifier) = (pointer_expression "&UNK_00067c07" & identifier)) ;) (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return MVar6;" return identifier ;) })))
(translation_unit "undefined4 __regparm3 FUN_000678e0(int param_1,int param_2,double *param_3,undefined4 param_4)\n\n{\n  int *piVar1;\n  bool bVar2;\n  double dVar3;\n  double dVar4;\n  double dVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  double *pdVar12;\n  double *pdVar13;\n  int *piVar14;\n  uint uVar15;\n  uint uVar16;\n  int in_GS_OFFSET;\n  undefined8 uVar17;\n  double local_54;\n  int local_4c;\n  int local_48;\n  double *local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  uint local_30;\n  uint local_2c;\n  undefined4 local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x678ed;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar15 = *(uint *)(param_1 + 0x1c);\n  if (*(uint *)(param_1 + 0x1c) <= *(uint *)(param_2 + 0x1c)) {\n    uVar15 = *(uint *)(param_2 + 0x1c);\n  }\n  uVar7 = *(uint *)(param_1 + 0x18);\n  if (*(uint *)(param_1 + 0x18) <= *(uint *)(param_2 + 0x18)) {\n    uVar7 = *(uint *)(param_2 + 0x18);\n  }\n  uVar8 = AcquireVirtualCacheView(param_1,param_4);\n  uVar9 = AcquireVirtualCacheView(param_2,param_4);\n  iVar10 = GetImagePixelCacheType(param_1);\n  if (((iVar10 == 4) || (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)) &&\n     ((iVar10 = GetImagePixelCacheType(param_1), iVar10 == 4 ||\n      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)))) {\n    iVar10 = GetMagickResourceLimit(7);\n    uVar16 = uVar15 + 0x3f;\n    if (-1 < (int)uVar15) {\n      uVar16 = uVar15;\n    }\n    iVar11 = (int)uVar16 >> 6;\n    bVar2 = 0x7f < (int)uVar15;\n    if (iVar10 < iVar11) {\n      iVar10 = GetMagickResourceLimit(7);\n      bVar2 = 1 < iVar10;\n    }\n    if (bVar2) {\n      iVar10 = GetMagickResourceLimit(7);\n      if (iVar10 < iVar11) {\n        iVar11 = GetMagickResourceLimit(7);\n      }\n    }\n    else {\nLAB_00067b5b:\n      iVar11 = 1;\n    }\n  }\n  else {\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      uVar17 = GetMagickResourceLimit(7);\n      if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) goto LAB_00067b5b;\n    }\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      iVar11 = GetMagickResourceLimit(7);\n    }\n    else {\n      iVar11 = 2;\n    }\n  }\n  local_40 = param_4;\n  local_54 = 0.0;\n  local_34 = 0;\n  local_28 = 1;\n  local_4c = param_1;\n  local_48 = param_2;\n  local_44 = param_3;\n  local_3c = uVar8;\n  local_38 = uVar9;\n  local_30 = uVar7;\n  local_2c = uVar15;\n  GOMP_parallel(FUN_00069e50,&local_54,iVar11,0);\n  uVar6 = local_28;\n  dVar3 = local_54;\n  DestroyCacheView(uVar9);\n  DestroyCacheView(uVar8);\n  if (dVar3 < 0.0) {\n    dVar4 = -dVar3;\n    dVar5 = -1.0;\n  }\n  else {\n    dVar5 = 1.0;\n    dVar4 = dVar3;\n  }\n  if (dVar4 < DAT_0029f138) {\n    dVar3 = dVar5 / DAT_0029f138;\n  }\n  else {\n    dVar3 = (double)DAT_0029f718 / dVar3;\n  }\n  pdVar12 = param_3;\n  do {\n    pdVar13 = pdVar12 + 1;\n    *pdVar12 = *pdVar12 * dVar3;\n    pdVar12 = pdVar13;\n  } while (param_3 + 0x41 != pdVar13);\n  if (0 < *(int *)(param_1 + 0x298)) {\n    piVar1 = *(int **)(param_1 + 0x2a8);\n    uVar15 = 0;\n    piVar14 = piVar1;\n    do {\n      uVar15 = (uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0);\n      piVar14 = piVar14 + 3;\n    } while (piVar14 != piVar1 + *(int *)(param_1 + 0x298) * 3);\n    if (uVar15 != 0) {\n      dVar3 = (double)uVar15;\n      goto LAB_00067ac1;\n    }\n  }\n  dVar3 = 1.0;\nLAB_00067ac1:\n  param_3[0x40] = param_3[0x40] / dVar3;\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0029eab0();\n  }\n  return uVar6;\n}\n\n" (function_definition "undefined4 __regparm3 FUN_000678e0(int param_1,int param_2,double *param_3,undefined4 param_4)\n\n{\n  int *piVar1;\n  bool bVar2;\n  double dVar3;\n  double dVar4;\n  double dVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  double *pdVar12;\n  double *pdVar13;\n  int *piVar14;\n  uint uVar15;\n  uint uVar16;\n  int in_GS_OFFSET;\n  undefined8 uVar17;\n  double local_54;\n  int local_4c;\n  int local_48;\n  double *local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  uint local_30;\n  uint local_2c;\n  undefined4 local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x678ed;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar15 = *(uint *)(param_1 + 0x1c);\n  if (*(uint *)(param_1 + 0x1c) <= *(uint *)(param_2 + 0x1c)) {\n    uVar15 = *(uint *)(param_2 + 0x1c);\n  }\n  uVar7 = *(uint *)(param_1 + 0x18);\n  if (*(uint *)(param_1 + 0x18) <= *(uint *)(param_2 + 0x18)) {\n    uVar7 = *(uint *)(param_2 + 0x18);\n  }\n  uVar8 = AcquireVirtualCacheView(param_1,param_4);\n  uVar9 = AcquireVirtualCacheView(param_2,param_4);\n  iVar10 = GetImagePixelCacheType(param_1);\n  if (((iVar10 == 4) || (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)) &&\n     ((iVar10 = GetImagePixelCacheType(param_1), iVar10 == 4 ||\n      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)))) {\n    iVar10 = GetMagickResourceLimit(7);\n    uVar16 = uVar15 + 0x3f;\n    if (-1 < (int)uVar15) {\n      uVar16 = uVar15;\n    }\n    iVar11 = (int)uVar16 >> 6;\n    bVar2 = 0x7f < (int)uVar15;\n    if (iVar10 < iVar11) {\n      iVar10 = GetMagickResourceLimit(7);\n      bVar2 = 1 < iVar10;\n    }\n    if (bVar2) {\n      iVar10 = GetMagickResourceLimit(7);\n      if (iVar10 < iVar11) {\n        iVar11 = GetMagickResourceLimit(7);\n      }\n    }\n    else {\nLAB_00067b5b:\n      iVar11 = 1;\n    }\n  }\n  else {\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      uVar17 = GetMagickResourceLimit(7);\n      if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) goto LAB_00067b5b;\n    }\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      iVar11 = GetMagickResourceLimit(7);\n    }\n    else {\n      iVar11 = 2;\n    }\n  }\n  local_40 = param_4;\n  local_54 = 0.0;\n  local_34 = 0;\n  local_28 = 1;\n  local_4c = param_1;\n  local_48 = param_2;\n  local_44 = param_3;\n  local_3c = uVar8;\n  local_38 = uVar9;\n  local_30 = uVar7;\n  local_2c = uVar15;\n  GOMP_parallel(FUN_00069e50,&local_54,iVar11,0);\n  uVar6 = local_28;\n  dVar3 = local_54;\n  DestroyCacheView(uVar9);\n  DestroyCacheView(uVar8);\n  if (dVar3 < 0.0) {\n    dVar4 = -dVar3;\n    dVar5 = -1.0;\n  }\n  else {\n    dVar5 = 1.0;\n    dVar4 = dVar3;\n  }\n  if (dVar4 < DAT_0029f138) {\n    dVar3 = dVar5 / DAT_0029f138;\n  }\n  else {\n    dVar3 = (double)DAT_0029f718 / dVar3;\n  }\n  pdVar12 = param_3;\n  do {\n    pdVar13 = pdVar12 + 1;\n    *pdVar12 = *pdVar12 * dVar3;\n    pdVar12 = pdVar13;\n  } while (param_3 + 0x41 != pdVar13);\n  if (0 < *(int *)(param_1 + 0x298)) {\n    piVar1 = *(int **)(param_1 + 0x2a8);\n    uVar15 = 0;\n    piVar14 = piVar1;\n    do {\n      uVar15 = (uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0);\n      piVar14 = piVar14 + 3;\n    } while (piVar14 != piVar1 + *(int *)(param_1 + 0x298) * 3);\n    if (uVar15 != 0) {\n      dVar3 = (double)uVar15;\n      goto LAB_00067ac1;\n    }\n  }\n  dVar3 = 1.0;\nLAB_00067ac1:\n  param_3[0x40] = param_3[0x40] / dVar3;\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0029eab0();\n  }\n  return uVar6;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_000678e0(int param_1,int param_2,double *param_3,undefined4 param_4)" identifier (parameter_list "(int param_1,int param_2,double *param_3,undefined4 param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "double *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  int *piVar1;\n  bool bVar2;\n  double dVar3;\n  double dVar4;\n  double dVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  double *pdVar12;\n  double *pdVar13;\n  int *piVar14;\n  uint uVar15;\n  uint uVar16;\n  int in_GS_OFFSET;\n  undefined8 uVar17;\n  double local_54;\n  int local_4c;\n  int local_48;\n  double *local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  uint local_30;\n  uint local_2c;\n  undefined4 local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x678ed;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar15 = *(uint *)(param_1 + 0x1c);\n  if (*(uint *)(param_1 + 0x1c) <= *(uint *)(param_2 + 0x1c)) {\n    uVar15 = *(uint *)(param_2 + 0x1c);\n  }\n  uVar7 = *(uint *)(param_1 + 0x18);\n  if (*(uint *)(param_1 + 0x18) <= *(uint *)(param_2 + 0x18)) {\n    uVar7 = *(uint *)(param_2 + 0x18);\n  }\n  uVar8 = AcquireVirtualCacheView(param_1,param_4);\n  uVar9 = AcquireVirtualCacheView(param_2,param_4);\n  iVar10 = GetImagePixelCacheType(param_1);\n  if (((iVar10 == 4) || (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)) &&\n     ((iVar10 = GetImagePixelCacheType(param_1), iVar10 == 4 ||\n      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)))) {\n    iVar10 = GetMagickResourceLimit(7);\n    uVar16 = uVar15 + 0x3f;\n    if (-1 < (int)uVar15) {\n      uVar16 = uVar15;\n    }\n    iVar11 = (int)uVar16 >> 6;\n    bVar2 = 0x7f < (int)uVar15;\n    if (iVar10 < iVar11) {\n      iVar10 = GetMagickResourceLimit(7);\n      bVar2 = 1 < iVar10;\n    }\n    if (bVar2) {\n      iVar10 = GetMagickResourceLimit(7);\n      if (iVar10 < iVar11) {\n        iVar11 = GetMagickResourceLimit(7);\n      }\n    }\n    else {\nLAB_00067b5b:\n      iVar11 = 1;\n    }\n  }\n  else {\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      uVar17 = GetMagickResourceLimit(7);\n      if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) goto LAB_00067b5b;\n    }\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      iVar11 = GetMagickResourceLimit(7);\n    }\n    else {\n      iVar11 = 2;\n    }\n  }\n  local_40 = param_4;\n  local_54 = 0.0;\n  local_34 = 0;\n  local_28 = 1;\n  local_4c = param_1;\n  local_48 = param_2;\n  local_44 = param_3;\n  local_3c = uVar8;\n  local_38 = uVar9;\n  local_30 = uVar7;\n  local_2c = uVar15;\n  GOMP_parallel(FUN_00069e50,&local_54,iVar11,0);\n  uVar6 = local_28;\n  dVar3 = local_54;\n  DestroyCacheView(uVar9);\n  DestroyCacheView(uVar8);\n  if (dVar3 < 0.0) {\n    dVar4 = -dVar3;\n    dVar5 = -1.0;\n  }\n  else {\n    dVar5 = 1.0;\n    dVar4 = dVar3;\n  }\n  if (dVar4 < DAT_0029f138) {\n    dVar3 = dVar5 / DAT_0029f138;\n  }\n  else {\n    dVar3 = (double)DAT_0029f718 / dVar3;\n  }\n  pdVar12 = param_3;\n  do {\n    pdVar13 = pdVar12 + 1;\n    *pdVar12 = *pdVar12 * dVar3;\n    pdVar12 = pdVar13;\n  } while (param_3 + 0x41 != pdVar13);\n  if (0 < *(int *)(param_1 + 0x298)) {\n    piVar1 = *(int **)(param_1 + 0x2a8);\n    uVar15 = 0;\n    piVar14 = piVar1;\n    do {\n      uVar15 = (uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0);\n      piVar14 = piVar14 + 3;\n    } while (piVar14 != piVar1 + *(int *)(param_1 + 0x298) * 3);\n    if (uVar15 != 0) {\n      dVar3 = (double)uVar15;\n      goto LAB_00067ac1;\n    }\n  }\n  dVar3 = 1.0;\nLAB_00067ac1:\n  param_3[0x40] = param_3[0x40] / dVar3;\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0029eab0();\n  }\n  return uVar6;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "double dVar3;" primitive_type identifier ;) (declaration "double dVar4;" primitive_type identifier ;) (declaration "double dVar5;" primitive_type identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "double *pdVar12;" primitive_type (pointer_declarator "*pdVar12" * identifier) ;) (declaration "double *pdVar13;" primitive_type (pointer_declarator "*pdVar13" * identifier) ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined8 uVar17;" type_identifier identifier ;) (declaration "double local_54;" primitive_type identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "double *local_44;" primitive_type (pointer_declarator "*local_44" * identifier) ;) (declaration "undefined4 local_40;" type_identifier identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "undefined4 local_38;" type_identifier identifier ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x678ed;" (assignment_expression "uStack_14 = 0x678ed" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar15 = *(uint *)(param_1 + 0x1c);" (assignment_expression "uVar15 = *(uint *)(param_1 + 0x1c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x1c)" * (cast_expression "(uint *)(param_1 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) ))))) ;) (if_statement "if (*(uint *)(param_1 + 0x1c) <= *(uint *)(param_2 + 0x1c)) {\n    uVar15 = *(uint *)(param_2 + 0x1c);\n  }" if (parenthesized_expression "(*(uint *)(param_1 + 0x1c) <= *(uint *)(param_2 + 0x1c))" ( (binary_expression "*(uint *)(param_1 + 0x1c) <= *(uint *)(param_2 + 0x1c)" (pointer_expression "*(uint *)(param_1 + 0x1c)" * (cast_expression "(uint *)(param_1 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) <= (pointer_expression "*(uint *)(param_2 + 0x1c)" * (cast_expression "(uint *)(param_2 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) ))))) )) (compound_statement "{\n    uVar15 = *(uint *)(param_2 + 0x1c);\n  }" { (expression_statement "uVar15 = *(uint *)(param_2 + 0x1c);" (assignment_expression "uVar15 = *(uint *)(param_2 + 0x1c)" identifier = (pointer_expression "*(uint *)(param_2 + 0x1c)" * (cast_expression "(uint *)(param_2 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) ))))) ;) })) (expression_statement "uVar7 = *(uint *)(param_1 + 0x18);" (assignment_expression "uVar7 = *(uint *)(param_1 + 0x18)" identifier = (pointer_expression "*(uint *)(param_1 + 0x18)" * (cast_expression "(uint *)(param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (*(uint *)(param_1 + 0x18) <= *(uint *)(param_2 + 0x18)) {\n    uVar7 = *(uint *)(param_2 + 0x18);\n  }" if (parenthesized_expression "(*(uint *)(param_1 + 0x18) <= *(uint *)(param_2 + 0x18))" ( (binary_expression "*(uint *)(param_1 + 0x18) <= *(uint *)(param_2 + 0x18)" (pointer_expression "*(uint *)(param_1 + 0x18)" * (cast_expression "(uint *)(param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) <= (pointer_expression "*(uint *)(param_2 + 0x18)" * (cast_expression "(uint *)(param_2 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n    uVar7 = *(uint *)(param_2 + 0x18);\n  }" { (expression_statement "uVar7 = *(uint *)(param_2 + 0x18);" (assignment_expression "uVar7 = *(uint *)(param_2 + 0x18)" identifier = (pointer_expression "*(uint *)(param_2 + 0x18)" * (cast_expression "(uint *)(param_2 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) ;) })) (expression_statement "uVar8 = AcquireVirtualCacheView(param_1,param_4);" (assignment_expression "uVar8 = AcquireVirtualCacheView(param_1,param_4)" identifier = (call_expression "AcquireVirtualCacheView(param_1,param_4)" identifier (argument_list "(param_1,param_4)" ( identifier , identifier )))) ;) (expression_statement "uVar9 = AcquireVirtualCacheView(param_2,param_4);" (assignment_expression "uVar9 = AcquireVirtualCacheView(param_2,param_4)" identifier = (call_expression "AcquireVirtualCacheView(param_2,param_4)" identifier (argument_list "(param_2,param_4)" ( identifier , identifier )))) ;) (expression_statement "iVar10 = GetImagePixelCacheType(param_1);" (assignment_expression "iVar10 = GetImagePixelCacheType(param_1)" identifier = (call_expression "GetImagePixelCacheType(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (((iVar10 == 4) || (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)) &&\n     ((iVar10 = GetImagePixelCacheType(param_1), iVar10 == 4 ||\n      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)))) {\n    iVar10 = GetMagickResourceLimit(7);\n    uVar16 = uVar15 + 0x3f;\n    if (-1 < (int)uVar15) {\n      uVar16 = uVar15;\n    }\n    iVar11 = (int)uVar16 >> 6;\n    bVar2 = 0x7f < (int)uVar15;\n    if (iVar10 < iVar11) {\n      iVar10 = GetMagickResourceLimit(7);\n      bVar2 = 1 < iVar10;\n    }\n    if (bVar2) {\n      iVar10 = GetMagickResourceLimit(7);\n      if (iVar10 < iVar11) {\n        iVar11 = GetMagickResourceLimit(7);\n      }\n    }\n    else {\nLAB_00067b5b:\n      iVar11 = 1;\n    }\n  }\n  else {\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      uVar17 = GetMagickResourceLimit(7);\n      if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) goto LAB_00067b5b;\n    }\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      iVar11 = GetMagickResourceLimit(7);\n    }\n    else {\n      iVar11 = 2;\n    }\n  }" if (parenthesized_expression "(((iVar10 == 4) || (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)) &&\n     ((iVar10 = GetImagePixelCacheType(param_1), iVar10 == 4 ||\n      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3))))" ( (binary_expression "((iVar10 == 4) || (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)) &&\n     ((iVar10 = GetImagePixelCacheType(param_1), iVar10 == 4 ||\n      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)))" (parenthesized_expression "((iVar10 == 4) || (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3))" ( (binary_expression "(iVar10 == 4) || (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)" (parenthesized_expression "(iVar10 == 4)" ( (binary_expression "iVar10 == 4" identifier == number_literal) )) || (parenthesized_expression "(iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)" ( (comma_expression "iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3" (assignment_expression "iVar10 = GetImagePixelCacheType(param_1)" identifier = (call_expression "GetImagePixelCacheType(param_1)" identifier (argument_list "(param_1)" ( identifier )))) , (binary_expression "iVar10 == 3" identifier == number_literal)) ))) )) && (parenthesized_expression "((iVar10 = GetImagePixelCacheType(param_1), iVar10 == 4 ||\n      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)))" ( (parenthesized_expression "(iVar10 = GetImagePixelCacheType(param_1), iVar10 == 4 ||\n      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3))" ( (comma_expression "iVar10 = GetImagePixelCacheType(param_1), iVar10 == 4 ||\n      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)" (assignment_expression "iVar10 = GetImagePixelCacheType(param_1)" identifier = (call_expression "GetImagePixelCacheType(param_1)" identifier (argument_list "(param_1)" ( identifier )))) , (binary_expression "iVar10 == 4 ||\n      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)" (binary_expression "iVar10 == 4" identifier == number_literal) || (parenthesized_expression "(iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)" ( (comma_expression "iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3" (assignment_expression "iVar10 = GetImagePixelCacheType(param_1)" identifier = (call_expression "GetImagePixelCacheType(param_1)" identifier (argument_list "(param_1)" ( identifier )))) , (binary_expression "iVar10 == 3" identifier == number_literal)) )))) )) ))) )) (compound_statement "{\n    iVar10 = GetMagickResourceLimit(7);\n    uVar16 = uVar15 + 0x3f;\n    if (-1 < (int)uVar15) {\n      uVar16 = uVar15;\n    }\n    iVar11 = (int)uVar16 >> 6;\n    bVar2 = 0x7f < (int)uVar15;\n    if (iVar10 < iVar11) {\n      iVar10 = GetMagickResourceLimit(7);\n      bVar2 = 1 < iVar10;\n    }\n    if (bVar2) {\n      iVar10 = GetMagickResourceLimit(7);\n      if (iVar10 < iVar11) {\n        iVar11 = GetMagickResourceLimit(7);\n      }\n    }\n    else {\nLAB_00067b5b:\n      iVar11 = 1;\n    }\n  }" { (expression_statement "iVar10 = GetMagickResourceLimit(7);" (assignment_expression "iVar10 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) ;) (expression_statement "uVar16 = uVar15 + 0x3f;" (assignment_expression "uVar16 = uVar15 + 0x3f" identifier = (binary_expression "uVar15 + 0x3f" identifier + number_literal)) ;) (if_statement "if (-1 < (int)uVar15) {\n      uVar16 = uVar15;\n    }" if (parenthesized_expression "(-1 < (int)uVar15)" ( (binary_expression "-1 < (int)uVar15" number_literal < (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      uVar16 = uVar15;\n    }" { (expression_statement "uVar16 = uVar15;" (assignment_expression "uVar16 = uVar15" identifier = identifier) ;) })) (expression_statement "iVar11 = (int)uVar16 >> 6;" (assignment_expression "iVar11 = (int)uVar16 >> 6" identifier = (binary_expression "(int)uVar16 >> 6" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "bVar2 = 0x7f < (int)uVar15;" (assignment_expression "bVar2 = 0x7f < (int)uVar15" identifier = (binary_expression "0x7f < (int)uVar15" number_literal < (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (iVar10 < iVar11) {\n      iVar10 = GetMagickResourceLimit(7);\n      bVar2 = 1 < iVar10;\n    }" if (parenthesized_expression "(iVar10 < iVar11)" ( (binary_expression "iVar10 < iVar11" identifier < identifier) )) (compound_statement "{\n      iVar10 = GetMagickResourceLimit(7);\n      bVar2 = 1 < iVar10;\n    }" { (expression_statement "iVar10 = GetMagickResourceLimit(7);" (assignment_expression "iVar10 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) ;) (expression_statement "bVar2 = 1 < iVar10;" (assignment_expression "bVar2 = 1 < iVar10" identifier = (binary_expression "1 < iVar10" number_literal < identifier)) ;) })) (if_statement "if (bVar2) {\n      iVar10 = GetMagickResourceLimit(7);\n      if (iVar10 < iVar11) {\n        iVar11 = GetMagickResourceLimit(7);\n      }\n    }\n    else {\nLAB_00067b5b:\n      iVar11 = 1;\n    }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n      iVar10 = GetMagickResourceLimit(7);\n      if (iVar10 < iVar11) {\n        iVar11 = GetMagickResourceLimit(7);\n      }\n    }" { (expression_statement "iVar10 = GetMagickResourceLimit(7);" (assignment_expression "iVar10 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) ;) (if_statement "if (iVar10 < iVar11) {\n        iVar11 = GetMagickResourceLimit(7);\n      }" if (parenthesized_expression "(iVar10 < iVar11)" ( (binary_expression "iVar10 < iVar11" identifier < identifier) )) (compound_statement "{\n        iVar11 = GetMagickResourceLimit(7);\n      }" { (expression_statement "iVar11 = GetMagickResourceLimit(7);" (assignment_expression "iVar11 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) ;) })) }) (else_clause "else {\nLAB_00067b5b:\n      iVar11 = 1;\n    }" else (compound_statement "{\nLAB_00067b5b:\n      iVar11 = 1;\n    }" { (labeled_statement "LAB_00067b5b:\n      iVar11 = 1;" statement_identifier : (expression_statement "iVar11 = 1;" (assignment_expression "iVar11 = 1" identifier = number_literal) ;)) }))) }) (else_clause "else {\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      uVar17 = GetMagickResourceLimit(7);\n      if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) goto LAB_00067b5b;\n    }\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      iVar11 = GetMagickResourceLimit(7);\n    }\n    else {\n      iVar11 = 2;\n    }\n  }" else (compound_statement "{\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      uVar17 = GetMagickResourceLimit(7);\n      if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) goto LAB_00067b5b;\n    }\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      iVar11 = GetMagickResourceLimit(7);\n    }\n    else {\n      iVar11 = 2;\n    }\n  }" { (expression_statement "uVar17 = GetMagickResourceLimit(7);" (assignment_expression "uVar17 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) ;) (if_statement "if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      uVar17 = GetMagickResourceLimit(7);\n      if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) goto LAB_00067b5b;\n    }" if (parenthesized_expression "(((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2))" ( (binary_expression "((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)" (parenthesized_expression "((int)((ulonglong)uVar17 >> 0x20) == 0)" ( (binary_expression "(int)((ulonglong)uVar17 >> 0x20) == 0" (cast_expression "(int)((ulonglong)uVar17 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar17 >> 0x20)" ( (binary_expression "(ulonglong)uVar17 >> 0x20" (cast_expression "(ulonglong)uVar17" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) == number_literal) )) && (parenthesized_expression "((uint)uVar17 < 2)" ( (binary_expression "(uint)uVar17 < 2" (cast_expression "(uint)uVar17" ( (type_descriptor "uint" type_identifier) ) identifier) < number_literal) ))) )) (compound_statement "{\n      uVar17 = GetMagickResourceLimit(7);\n      if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) goto LAB_00067b5b;\n    }" { (expression_statement "uVar17 = GetMagickResourceLimit(7);" (assignment_expression "uVar17 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) ;) (if_statement "if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) goto LAB_00067b5b;" if (parenthesized_expression "(((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2))" ( (binary_expression "((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)" (parenthesized_expression "((int)((ulonglong)uVar17 >> 0x20) == 0)" ( (binary_expression "(int)((ulonglong)uVar17 >> 0x20) == 0" (cast_expression "(int)((ulonglong)uVar17 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar17 >> 0x20)" ( (binary_expression "(ulonglong)uVar17 >> 0x20" (cast_expression "(ulonglong)uVar17" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) == number_literal) )) && (parenthesized_expression "((uint)uVar17 < 2)" ( (binary_expression "(uint)uVar17 < 2" (cast_expression "(uint)uVar17" ( (type_descriptor "uint" type_identifier) ) identifier) < number_literal) ))) )) (goto_statement "goto LAB_00067b5b;" goto statement_identifier ;)) })) (expression_statement "uVar17 = GetMagickResourceLimit(7);" (assignment_expression "uVar17 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) ;) (if_statement "if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      iVar11 = GetMagickResourceLimit(7);\n    }\n    else {\n      iVar11 = 2;\n    }" if (parenthesized_expression "(((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2))" ( (binary_expression "((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)" (parenthesized_expression "((int)((ulonglong)uVar17 >> 0x20) == 0)" ( (binary_expression "(int)((ulonglong)uVar17 >> 0x20) == 0" (cast_expression "(int)((ulonglong)uVar17 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar17 >> 0x20)" ( (binary_expression "(ulonglong)uVar17 >> 0x20" (cast_expression "(ulonglong)uVar17" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) == number_literal) )) && (parenthesized_expression "((uint)uVar17 < 2)" ( (binary_expression "(uint)uVar17 < 2" (cast_expression "(uint)uVar17" ( (type_descriptor "uint" type_identifier) ) identifier) < number_literal) ))) )) (compound_statement "{\n      iVar11 = GetMagickResourceLimit(7);\n    }" { (expression_statement "iVar11 = GetMagickResourceLimit(7);" (assignment_expression "iVar11 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) ;) }) (else_clause "else {\n      iVar11 = 2;\n    }" else (compound_statement "{\n      iVar11 = 2;\n    }" { (expression_statement "iVar11 = 2;" (assignment_expression "iVar11 = 2" identifier = number_literal) ;) }))) }))) (expression_statement "local_40 = param_4;" (assignment_expression "local_40 = param_4" identifier = identifier) ;) (expression_statement "local_54 = 0.0;" (assignment_expression "local_54 = 0.0" identifier = number_literal) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" identifier = number_literal) ;) (expression_statement "local_4c = param_1;" (assignment_expression "local_4c = param_1" identifier = identifier) ;) (expression_statement "local_48 = param_2;" (assignment_expression "local_48 = param_2" identifier = identifier) ;) (expression_statement "local_44 = param_3;" (assignment_expression "local_44 = param_3" identifier = identifier) ;) (expression_statement "local_3c = uVar8;" (assignment_expression "local_3c = uVar8" identifier = identifier) ;) (expression_statement "local_38 = uVar9;" (assignment_expression "local_38 = uVar9" identifier = identifier) ;) (expression_statement "local_30 = uVar7;" (assignment_expression "local_30 = uVar7" identifier = identifier) ;) (expression_statement "local_2c = uVar15;" (assignment_expression "local_2c = uVar15" identifier = identifier) ;) (expression_statement "GOMP_parallel(FUN_00069e50,&local_54,iVar11,0);" (call_expression "GOMP_parallel(FUN_00069e50,&local_54,iVar11,0)" identifier (argument_list "(FUN_00069e50,&local_54,iVar11,0)" ( identifier , (pointer_expression "&local_54" & identifier) , identifier , number_literal ))) ;) (expression_statement "uVar6 = local_28;" (assignment_expression "uVar6 = local_28" identifier = identifier) ;) (expression_statement "dVar3 = local_54;" (assignment_expression "dVar3 = local_54" identifier = identifier) ;) (expression_statement "DestroyCacheView(uVar9);" (call_expression "DestroyCacheView(uVar9)" identifier (argument_list "(uVar9)" ( identifier ))) ;) (expression_statement "DestroyCacheView(uVar8);" (call_expression "DestroyCacheView(uVar8)" identifier (argument_list "(uVar8)" ( identifier ))) ;) (if_statement "if (dVar3 < 0.0) {\n    dVar4 = -dVar3;\n    dVar5 = -1.0;\n  }\n  else {\n    dVar5 = 1.0;\n    dVar4 = dVar3;\n  }" if (parenthesized_expression "(dVar3 < 0.0)" ( (binary_expression "dVar3 < 0.0" identifier < number_literal) )) (compound_statement "{\n    dVar4 = -dVar3;\n    dVar5 = -1.0;\n  }" { (expression_statement "dVar4 = -dVar3;" (assignment_expression "dVar4 = -dVar3" identifier = (unary_expression "-dVar3" - identifier)) ;) (expression_statement "dVar5 = -1.0;" (assignment_expression "dVar5 = -1.0" identifier = number_literal) ;) }) (else_clause "else {\n    dVar5 = 1.0;\n    dVar4 = dVar3;\n  }" else (compound_statement "{\n    dVar5 = 1.0;\n    dVar4 = dVar3;\n  }" { (expression_statement "dVar5 = 1.0;" (assignment_expression "dVar5 = 1.0" identifier = number_literal) ;) (expression_statement "dVar4 = dVar3;" (assignment_expression "dVar4 = dVar3" identifier = identifier) ;) }))) (if_statement "if (dVar4 < DAT_0029f138) {\n    dVar3 = dVar5 / DAT_0029f138;\n  }\n  else {\n    dVar3 = (double)DAT_0029f718 / dVar3;\n  }" if (parenthesized_expression "(dVar4 < DAT_0029f138)" ( (binary_expression "dVar4 < DAT_0029f138" identifier < identifier) )) (compound_statement "{\n    dVar3 = dVar5 / DAT_0029f138;\n  }" { (expression_statement "dVar3 = dVar5 / DAT_0029f138;" (assignment_expression "dVar3 = dVar5 / DAT_0029f138" identifier = (binary_expression "dVar5 / DAT_0029f138" identifier / identifier)) ;) }) (else_clause "else {\n    dVar3 = (double)DAT_0029f718 / dVar3;\n  }" else (compound_statement "{\n    dVar3 = (double)DAT_0029f718 / dVar3;\n  }" { (expression_statement "dVar3 = (double)DAT_0029f718 / dVar3;" (assignment_expression "dVar3 = (double)DAT_0029f718 / dVar3" identifier = (binary_expression "(double)DAT_0029f718 / dVar3" (cast_expression "(double)DAT_0029f718" ( (type_descriptor "double" primitive_type) ) identifier) / identifier)) ;) }))) (expression_statement "pdVar12 = param_3;" (assignment_expression "pdVar12 = param_3" identifier = identifier) ;) (do_statement "do {\n    pdVar13 = pdVar12 + 1;\n    *pdVar12 = *pdVar12 * dVar3;\n    pdVar12 = pdVar13;\n  } while (param_3 + 0x41 != pdVar13);" do (compound_statement "{\n    pdVar13 = pdVar12 + 1;\n    *pdVar12 = *pdVar12 * dVar3;\n    pdVar12 = pdVar13;\n  }" { (expression_statement "pdVar13 = pdVar12 + 1;" (assignment_expression "pdVar13 = pdVar12 + 1" identifier = (binary_expression "pdVar12 + 1" identifier + number_literal)) ;) (expression_statement "*pdVar12 = *pdVar12 * dVar3;" (assignment_expression "*pdVar12 = *pdVar12 * dVar3" (pointer_expression "*pdVar12" * identifier) = (binary_expression "*pdVar12 * dVar3" (pointer_expression "*pdVar12" * identifier) * identifier)) ;) (expression_statement "pdVar12 = pdVar13;" (assignment_expression "pdVar12 = pdVar13" identifier = identifier) ;) }) while (parenthesized_expression "(param_3 + 0x41 != pdVar13)" ( (binary_expression "param_3 + 0x41 != pdVar13" (binary_expression "param_3 + 0x41" identifier + number_literal) != identifier) )) ;) (if_statement "if (0 < *(int *)(param_1 + 0x298)) {\n    piVar1 = *(int **)(param_1 + 0x2a8);\n    uVar15 = 0;\n    piVar14 = piVar1;\n    do {\n      uVar15 = (uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0);\n      piVar14 = piVar14 + 3;\n    } while (piVar14 != piVar1 + *(int *)(param_1 + 0x298) * 3);\n    if (uVar15 != 0) {\n      dVar3 = (double)uVar15;\n      goto LAB_00067ac1;\n    }\n  }" if (parenthesized_expression "(0 < *(int *)(param_1 + 0x298))" ( (binary_expression "0 < *(int *)(param_1 + 0x298)" number_literal < (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) ))))) )) (compound_statement "{\n    piVar1 = *(int **)(param_1 + 0x2a8);\n    uVar15 = 0;\n    piVar14 = piVar1;\n    do {\n      uVar15 = (uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0);\n      piVar14 = piVar14 + 3;\n    } while (piVar14 != piVar1 + *(int *)(param_1 + 0x298) * 3);\n    if (uVar15 != 0) {\n      dVar3 = (double)uVar15;\n      goto LAB_00067ac1;\n    }\n  }" { (expression_statement "piVar1 = *(int **)(param_1 + 0x2a8);" (assignment_expression "piVar1 = *(int **)(param_1 + 0x2a8)" identifier = (pointer_expression "*(int **)(param_1 + 0x2a8)" * (cast_expression "(int **)(param_1 + 0x2a8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "piVar14 = piVar1;" (assignment_expression "piVar14 = piVar1" identifier = identifier) ;) (do_statement "do {\n      uVar15 = (uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0);\n      piVar14 = piVar14 + 3;\n    } while (piVar14 != piVar1 + *(int *)(param_1 + 0x298) * 3);" do (compound_statement "{\n      uVar15 = (uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0);\n      piVar14 = piVar14 + 3;\n    }" { (expression_statement "uVar15 = (uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0);" (assignment_expression "uVar15 = (uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0)" identifier = (binary_expression "(uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0)" (parenthesized_expression "(uVar15 + 1)" ( (binary_expression "uVar15 + 1" identifier + number_literal) )) - (call_expression "(uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((piVar1[*piVar14 * 3 + 1] & 2U) == 0)" ( (binary_expression "(piVar1[*piVar14 * 3 + 1] & 2U) == 0" (parenthesized_expression "(piVar1[*piVar14 * 3 + 1] & 2U)" ( (binary_expression "piVar1[*piVar14 * 3 + 1] & 2U" (subscript_expression "piVar1[*piVar14 * 3 + 1]" identifier [ (binary_expression "*piVar14 * 3 + 1" (binary_expression "*piVar14 * 3" (pointer_expression "*piVar14" * identifier) * number_literal) + number_literal) ]) & number_literal) )) == number_literal) ))))) ;) (expression_statement "piVar14 = piVar14 + 3;" (assignment_expression "piVar14 = piVar14 + 3" identifier = (binary_expression "piVar14 + 3" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar14 != piVar1 + *(int *)(param_1 + 0x298) * 3)" ( (binary_expression "piVar14 != piVar1 + *(int *)(param_1 + 0x298) * 3" identifier != (binary_expression "piVar1 + *(int *)(param_1 + 0x298) * 3" identifier + (binary_expression "*(int *)(param_1 + 0x298) * 3" (pointer_expression "*(int *)(param_1 + 0x298)" * (cast_expression "(int *)(param_1 + 0x298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) * number_literal))) )) ;) (if_statement "if (uVar15 != 0) {\n      dVar3 = (double)uVar15;\n      goto LAB_00067ac1;\n    }" if (parenthesized_expression "(uVar15 != 0)" ( (binary_expression "uVar15 != 0" identifier != number_literal) )) (compound_statement "{\n      dVar3 = (double)uVar15;\n      goto LAB_00067ac1;\n    }" { (expression_statement "dVar3 = (double)uVar15;" (assignment_expression "dVar3 = (double)uVar15" identifier = (cast_expression "(double)uVar15" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (goto_statement "goto LAB_00067ac1;" goto statement_identifier ;) })) })) (expression_statement "dVar3 = 1.0;" (assignment_expression "dVar3 = 1.0" identifier = number_literal) ;) (labeled_statement "LAB_00067ac1:\n  param_3[0x40] = param_3[0x40] / dVar3;" statement_identifier : (expression_statement "param_3[0x40] = param_3[0x40] / dVar3;" (assignment_expression "param_3[0x40] = param_3[0x40] / dVar3" (subscript_expression "param_3[0x40]" identifier [ number_literal ]) = (binary_expression "param_3[0x40] / dVar3" (subscript_expression "param_3[0x40]" identifier [ number_literal ]) / identifier)) ;)) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0029eab0();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    FUN_0029eab0();\n  }" { (expression_statement "FUN_0029eab0();" (call_expression "FUN_0029eab0()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return uVar6;" return identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) , (binary_expression IDENT == LIT)) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) , (binary_expression (binary_expression IDENT == LIT) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) , (binary_expression IDENT == LIT)) )))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT < IDENT)) ;) })) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) })) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) == LIT) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) == LIT) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) ))) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) == LIT) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) / IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != IDENT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression (binary_expression (pointer_expression * IDENT) * LIT) + LIT) ]) & LIT) )) == LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) / IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (return_statement return IDENT ;) })))
(function_definition "undefined4 __regparm3 FUN_000678e0(int param_1,int param_2,double *param_3,undefined4 param_4)\n\n{\n  int *piVar1;\n  bool bVar2;\n  double dVar3;\n  double dVar4;\n  double dVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  double *pdVar12;\n  double *pdVar13;\n  int *piVar14;\n  uint uVar15;\n  uint uVar16;\n  int in_GS_OFFSET;\n  undefined8 uVar17;\n  double local_54;\n  int local_4c;\n  int local_48;\n  double *local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  uint local_30;\n  uint local_2c;\n  undefined4 local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x678ed;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar15 = *(uint *)(param_1 + 0x1c);\n  if (*(uint *)(param_1 + 0x1c) <= *(uint *)(param_2 + 0x1c)) {\n    uVar15 = *(uint *)(param_2 + 0x1c);\n  }\n  uVar7 = *(uint *)(param_1 + 0x18);\n  if (*(uint *)(param_1 + 0x18) <= *(uint *)(param_2 + 0x18)) {\n    uVar7 = *(uint *)(param_2 + 0x18);\n  }\n  uVar8 = AcquireVirtualCacheView(param_1,param_4);\n  uVar9 = AcquireVirtualCacheView(param_2,param_4);\n  iVar10 = GetImagePixelCacheType(param_1);\n  if (((iVar10 == 4) || (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)) &&\n     ((iVar10 = GetImagePixelCacheType(param_1), iVar10 == 4 ||\n      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)))) {\n    iVar10 = GetMagickResourceLimit(7);\n    uVar16 = uVar15 + 0x3f;\n    if (-1 < (int)uVar15) {\n      uVar16 = uVar15;\n    }\n    iVar11 = (int)uVar16 >> 6;\n    bVar2 = 0x7f < (int)uVar15;\n    if (iVar10 < iVar11) {\n      iVar10 = GetMagickResourceLimit(7);\n      bVar2 = 1 < iVar10;\n    }\n    if (bVar2) {\n      iVar10 = GetMagickResourceLimit(7);\n      if (iVar10 < iVar11) {\n        iVar11 = GetMagickResourceLimit(7);\n      }\n    }\n    else {\nLAB_00067b5b:\n      iVar11 = 1;\n    }\n  }\n  else {\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      uVar17 = GetMagickResourceLimit(7);\n      if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) goto LAB_00067b5b;\n    }\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      iVar11 = GetMagickResourceLimit(7);\n    }\n    else {\n      iVar11 = 2;\n    }\n  }\n  local_40 = param_4;\n  local_54 = 0.0;\n  local_34 = 0;\n  local_28 = 1;\n  local_4c = param_1;\n  local_48 = param_2;\n  local_44 = param_3;\n  local_3c = uVar8;\n  local_38 = uVar9;\n  local_30 = uVar7;\n  local_2c = uVar15;\n  GOMP_parallel(FUN_00069e50,&local_54,iVar11,0);\n  uVar6 = local_28;\n  dVar3 = local_54;\n  DestroyCacheView(uVar9);\n  DestroyCacheView(uVar8);\n  if (dVar3 < 0.0) {\n    dVar4 = -dVar3;\n    dVar5 = -1.0;\n  }\n  else {\n    dVar5 = 1.0;\n    dVar4 = dVar3;\n  }\n  if (dVar4 < DAT_0029f138) {\n    dVar3 = dVar5 / DAT_0029f138;\n  }\n  else {\n    dVar3 = (double)DAT_0029f718 / dVar3;\n  }\n  pdVar12 = param_3;\n  do {\n    pdVar13 = pdVar12 + 1;\n    *pdVar12 = *pdVar12 * dVar3;\n    pdVar12 = pdVar13;\n  } while (param_3 + 0x41 != pdVar13);\n  if (0 < *(int *)(param_1 + 0x298)) {\n    piVar1 = *(int **)(param_1 + 0x2a8);\n    uVar15 = 0;\n    piVar14 = piVar1;\n    do {\n      uVar15 = (uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0);\n      piVar14 = piVar14 + 3;\n    } while (piVar14 != piVar1 + *(int *)(param_1 + 0x298) * 3);\n    if (uVar15 != 0) {\n      dVar3 = (double)uVar15;\n      goto LAB_00067ac1;\n    }\n  }\n  dVar3 = 1.0;\nLAB_00067ac1:\n  param_3[0x40] = param_3[0x40] / dVar3;\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0029eab0();\n  }\n  return uVar6;\n}" (type_identifier "undefined4") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_000678e0(int param_1,int param_2,double *param_3,undefined4 param_4)" (identifier "FUN_000678e0") (parameter_list "(int param_1,int param_2,double *param_3,undefined4 param_4)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "double *param_3" (primitive_type "double") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) () ")"))) (compound_statement "{\n  int *piVar1;\n  bool bVar2;\n  double dVar3;\n  double dVar4;\n  double dVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  double *pdVar12;\n  double *pdVar13;\n  int *piVar14;\n  uint uVar15;\n  uint uVar16;\n  int in_GS_OFFSET;\n  undefined8 uVar17;\n  double local_54;\n  int local_4c;\n  int local_48;\n  double *local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  uint local_30;\n  uint local_2c;\n  undefined4 local_28;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x678ed;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar15 = *(uint *)(param_1 + 0x1c);\n  if (*(uint *)(param_1 + 0x1c) <= *(uint *)(param_2 + 0x1c)) {\n    uVar15 = *(uint *)(param_2 + 0x1c);\n  }\n  uVar7 = *(uint *)(param_1 + 0x18);\n  if (*(uint *)(param_1 + 0x18) <= *(uint *)(param_2 + 0x18)) {\n    uVar7 = *(uint *)(param_2 + 0x18);\n  }\n  uVar8 = AcquireVirtualCacheView(param_1,param_4);\n  uVar9 = AcquireVirtualCacheView(param_2,param_4);\n  iVar10 = GetImagePixelCacheType(param_1);\n  if (((iVar10 == 4) || (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)) &&\n     ((iVar10 = GetImagePixelCacheType(param_1), iVar10 == 4 ||\n      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)))) {\n    iVar10 = GetMagickResourceLimit(7);\n    uVar16 = uVar15 + 0x3f;\n    if (-1 < (int)uVar15) {\n      uVar16 = uVar15;\n    }\n    iVar11 = (int)uVar16 >> 6;\n    bVar2 = 0x7f < (int)uVar15;\n    if (iVar10 < iVar11) {\n      iVar10 = GetMagickResourceLimit(7);\n      bVar2 = 1 < iVar10;\n    }\n    if (bVar2) {\n      iVar10 = GetMagickResourceLimit(7);\n      if (iVar10 < iVar11) {\n        iVar11 = GetMagickResourceLimit(7);\n      }\n    }\n    else {\nLAB_00067b5b:\n      iVar11 = 1;\n    }\n  }\n  else {\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      uVar17 = GetMagickResourceLimit(7);\n      if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) goto LAB_00067b5b;\n    }\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      iVar11 = GetMagickResourceLimit(7);\n    }\n    else {\n      iVar11 = 2;\n    }\n  }\n  local_40 = param_4;\n  local_54 = 0.0;\n  local_34 = 0;\n  local_28 = 1;\n  local_4c = param_1;\n  local_48 = param_2;\n  local_44 = param_3;\n  local_3c = uVar8;\n  local_38 = uVar9;\n  local_30 = uVar7;\n  local_2c = uVar15;\n  GOMP_parallel(FUN_00069e50,&local_54,iVar11,0);\n  uVar6 = local_28;\n  dVar3 = local_54;\n  DestroyCacheView(uVar9);\n  DestroyCacheView(uVar8);\n  if (dVar3 < 0.0) {\n    dVar4 = -dVar3;\n    dVar5 = -1.0;\n  }\n  else {\n    dVar5 = 1.0;\n    dVar4 = dVar3;\n  }\n  if (dVar4 < DAT_0029f138) {\n    dVar3 = dVar5 / DAT_0029f138;\n  }\n  else {\n    dVar3 = (double)DAT_0029f718 / dVar3;\n  }\n  pdVar12 = param_3;\n  do {\n    pdVar13 = pdVar12 + 1;\n    *pdVar12 = *pdVar12 * dVar3;\n    pdVar12 = pdVar13;\n  } while (param_3 + 0x41 != pdVar13);\n  if (0 < *(int *)(param_1 + 0x298)) {\n    piVar1 = *(int **)(param_1 + 0x2a8);\n    uVar15 = 0;\n    piVar14 = piVar1;\n    do {\n      uVar15 = (uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0);\n      piVar14 = piVar14 + 3;\n    } while (piVar14 != piVar1 + *(int *)(param_1 + 0x298) * 3);\n    if (uVar15 != 0) {\n      dVar3 = (double)uVar15;\n      goto LAB_00067ac1;\n    }\n  }\n  dVar3 = 1.0;\nLAB_00067ac1:\n  param_3[0x40] = param_3[0x40] / dVar3;\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0029eab0();\n  }\n  return uVar6;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (declaration "double dVar3;" (primitive_type "double") (identifier "dVar3") (; ";")) (declaration "double dVar4;" (primitive_type "double") (identifier "dVar4") (; ";")) (declaration "double dVar5;" (primitive_type "double") (identifier "dVar5") (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "undefined4 uVar8;" (type_identifier "undefined4") (identifier "uVar8") (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "double *pdVar12;" (primitive_type "double") (pointer_declarator "*pdVar12" (* "*") (identifier "pdVar12")) (; ";")) (declaration "double *pdVar13;" (primitive_type "double") (pointer_declarator "*pdVar13" (* "*") (identifier "pdVar13")) (; ";")) (declaration "int *piVar14;" (primitive_type "int") (pointer_declarator "*piVar14" (* "*") (identifier "piVar14")) (; ";")) (declaration "uint uVar15;" (type_identifier "uint") (identifier "uVar15") (; ";")) (declaration "uint uVar16;" (type_identifier "uint") (identifier "uVar16") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "undefined8 uVar17;" (type_identifier "undefined8") (identifier "uVar17") (; ";")) (declaration "double local_54;" (primitive_type "double") (identifier "local_54") (; ";")) (declaration "int local_4c;" (primitive_type "int") (identifier "local_4c") (; ";")) (declaration "int local_48;" (primitive_type "int") (identifier "local_48") (; ";")) (declaration "double *local_44;" (primitive_type "double") (pointer_declarator "*local_44" (* "*") (identifier "local_44")) (; ";")) (declaration "undefined4 local_40;" (type_identifier "undefined4") (identifier "local_40") (; ";")) (declaration "undefined4 local_3c;" (type_identifier "undefined4") (identifier "local_3c") (; ";")) (declaration "undefined4 local_38;" (type_identifier "undefined4") (identifier "local_38") (; ";")) (declaration "undefined4 local_34;" (type_identifier "undefined4") (identifier "local_34") (; ";")) (declaration "uint local_30;" (type_identifier "uint") (identifier "local_30") (; ";")) (declaration "uint local_2c;" (type_identifier "uint") (identifier "local_2c") (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x678ed;" (assignment_expression "uStack_14 = 0x678ed" (identifier "uStack_14") (= "=") (number_literal "0x678ed")) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "uVar15 = *(uint *)(param_1 + 0x1c);" (assignment_expression "uVar15 = *(uint *)(param_1 + 0x1c)" (identifier "uVar15") (= "=") (pointer_expression "*(uint *)(param_1 + 0x1c)" (* "*") (cast_expression "(uint *)(param_1 + 0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (if_statement "if (*(uint *)(param_1 + 0x1c) <= *(uint *)(param_2 + 0x1c)) {\n    uVar15 = *(uint *)(param_2 + 0x1c);\n  }" (if "if") (parenthesized_expression "(*(uint *)(param_1 + 0x1c) <= *(uint *)(param_2 + 0x1c))" (( "(") (binary_expression "*(uint *)(param_1 + 0x1c) <= *(uint *)(param_2 + 0x1c)" (pointer_expression "*(uint *)(param_1 + 0x1c)" (* "*") (cast_expression "(uint *)(param_1 + 0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")")))) (<= "<=") (pointer_expression "*(uint *)(param_2 + 0x1c)" (* "*") (cast_expression "(uint *)(param_2 + 0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x1c)" (( "(") (binary_expression "param_2 + 0x1c" (identifier "param_2") (+ "+") (number_literal "0x1c")) () ")"))))) () ")")) (compound_statement "{\n    uVar15 = *(uint *)(param_2 + 0x1c);\n  }" ({ "{") (expression_statement "uVar15 = *(uint *)(param_2 + 0x1c);" (assignment_expression "uVar15 = *(uint *)(param_2 + 0x1c)" (identifier "uVar15") (= "=") (pointer_expression "*(uint *)(param_2 + 0x1c)" (* "*") (cast_expression "(uint *)(param_2 + 0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x1c)" (( "(") (binary_expression "param_2 + 0x1c" (identifier "param_2") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar7 = *(uint *)(param_1 + 0x18);" (assignment_expression "uVar7 = *(uint *)(param_1 + 0x18)" (identifier "uVar7") (= "=") (pointer_expression "*(uint *)(param_1 + 0x18)" (* "*") (cast_expression "(uint *)(param_1 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (*(uint *)(param_1 + 0x18) <= *(uint *)(param_2 + 0x18)) {\n    uVar7 = *(uint *)(param_2 + 0x18);\n  }" (if "if") (parenthesized_expression "(*(uint *)(param_1 + 0x18) <= *(uint *)(param_2 + 0x18))" (( "(") (binary_expression "*(uint *)(param_1 + 0x18) <= *(uint *)(param_2 + 0x18)" (pointer_expression "*(uint *)(param_1 + 0x18)" (* "*") (cast_expression "(uint *)(param_1 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (<= "<=") (pointer_expression "*(uint *)(param_2 + 0x18)" (* "*") (cast_expression "(uint *)(param_2 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (compound_statement "{\n    uVar7 = *(uint *)(param_2 + 0x18);\n  }" ({ "{") (expression_statement "uVar7 = *(uint *)(param_2 + 0x18);" (assignment_expression "uVar7 = *(uint *)(param_2 + 0x18)" (identifier "uVar7") (= "=") (pointer_expression "*(uint *)(param_2 + 0x18)" (* "*") (cast_expression "(uint *)(param_2 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar8 = AcquireVirtualCacheView(param_1,param_4);" (assignment_expression "uVar8 = AcquireVirtualCacheView(param_1,param_4)" (identifier "uVar8") (= "=") (call_expression "AcquireVirtualCacheView(param_1,param_4)" (identifier "AcquireVirtualCacheView") (argument_list "(param_1,param_4)" (( "(") (identifier "param_1") (, ",") (identifier "param_4") () ")")))) (; ";")) (expression_statement "uVar9 = AcquireVirtualCacheView(param_2,param_4);" (assignment_expression "uVar9 = AcquireVirtualCacheView(param_2,param_4)" (identifier "uVar9") (= "=") (call_expression "AcquireVirtualCacheView(param_2,param_4)" (identifier "AcquireVirtualCacheView") (argument_list "(param_2,param_4)" (( "(") (identifier "param_2") (, ",") (identifier "param_4") () ")")))) (; ";")) (expression_statement "iVar10 = GetImagePixelCacheType(param_1);" (assignment_expression "iVar10 = GetImagePixelCacheType(param_1)" (identifier "iVar10") (= "=") (call_expression "GetImagePixelCacheType(param_1)" (identifier "GetImagePixelCacheType") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (((iVar10 == 4) || (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)) &&\n     ((iVar10 = GetImagePixelCacheType(param_1), iVar10 == 4 ||\n      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)))) {\n    iVar10 = GetMagickResourceLimit(7);\n    uVar16 = uVar15 + 0x3f;\n    if (-1 < (int)uVar15) {\n      uVar16 = uVar15;\n    }\n    iVar11 = (int)uVar16 >> 6;\n    bVar2 = 0x7f < (int)uVar15;\n    if (iVar10 < iVar11) {\n      iVar10 = GetMagickResourceLimit(7);\n      bVar2 = 1 < iVar10;\n    }\n    if (bVar2) {\n      iVar10 = GetMagickResourceLimit(7);\n      if (iVar10 < iVar11) {\n        iVar11 = GetMagickResourceLimit(7);\n      }\n    }\n    else {\nLAB_00067b5b:\n      iVar11 = 1;\n    }\n  }\n  else {\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      uVar17 = GetMagickResourceLimit(7);\n      if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) goto LAB_00067b5b;\n    }\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      iVar11 = GetMagickResourceLimit(7);\n    }\n    else {\n      iVar11 = 2;\n    }\n  }" (if "if") (parenthesized_expression "(((iVar10 == 4) || (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)) &&\n     ((iVar10 = GetImagePixelCacheType(param_1), iVar10 == 4 ||\n      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3))))" (( "(") (binary_expression "((iVar10 == 4) || (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)) &&\n     ((iVar10 = GetImagePixelCacheType(param_1), iVar10 == 4 ||\n      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)))" (parenthesized_expression "((iVar10 == 4) || (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3))" (( "(") (binary_expression "(iVar10 == 4) || (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)" (parenthesized_expression "(iVar10 == 4)" (( "(") (binary_expression "iVar10 == 4" (identifier "iVar10") (== "==") (number_literal "4")) () ")")) (|| "||") (parenthesized_expression "(iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)" (( "(") (comma_expression "iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3" (assignment_expression "iVar10 = GetImagePixelCacheType(param_1)" (identifier "iVar10") (= "=") (call_expression "GetImagePixelCacheType(param_1)" (identifier "GetImagePixelCacheType") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (, ",") (binary_expression "iVar10 == 3" (identifier "iVar10") (== "==") (number_literal "3"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((iVar10 = GetImagePixelCacheType(param_1), iVar10 == 4 ||\n      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)))" (( "(") (parenthesized_expression "(iVar10 = GetImagePixelCacheType(param_1), iVar10 == 4 ||\n      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3))" (( "(") (comma_expression "iVar10 = GetImagePixelCacheType(param_1), iVar10 == 4 ||\n      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)" (assignment_expression "iVar10 = GetImagePixelCacheType(param_1)" (identifier "iVar10") (= "=") (call_expression "GetImagePixelCacheType(param_1)" (identifier "GetImagePixelCacheType") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (, ",") (binary_expression "iVar10 == 4 ||\n      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)" (binary_expression "iVar10 == 4" (identifier "iVar10") (== "==") (number_literal "4")) (|| "||") (parenthesized_expression "(iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)" (( "(") (comma_expression "iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3" (assignment_expression "iVar10 = GetImagePixelCacheType(param_1)" (identifier "iVar10") (= "=") (call_expression "GetImagePixelCacheType(param_1)" (identifier "GetImagePixelCacheType") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (, ",") (binary_expression "iVar10 == 3" (identifier "iVar10") (== "==") (number_literal "3"))) () ")")))) () ")")) () ")"))) () ")")) (compound_statement "{\n    iVar10 = GetMagickResourceLimit(7);\n    uVar16 = uVar15 + 0x3f;\n    if (-1 < (int)uVar15) {\n      uVar16 = uVar15;\n    }\n    iVar11 = (int)uVar16 >> 6;\n    bVar2 = 0x7f < (int)uVar15;\n    if (iVar10 < iVar11) {\n      iVar10 = GetMagickResourceLimit(7);\n      bVar2 = 1 < iVar10;\n    }\n    if (bVar2) {\n      iVar10 = GetMagickResourceLimit(7);\n      if (iVar10 < iVar11) {\n        iVar11 = GetMagickResourceLimit(7);\n      }\n    }\n    else {\nLAB_00067b5b:\n      iVar11 = 1;\n    }\n  }" ({ "{") (expression_statement "iVar10 = GetMagickResourceLimit(7);" (assignment_expression "iVar10 = GetMagickResourceLimit(7)" (identifier "iVar10") (= "=") (call_expression "GetMagickResourceLimit(7)" (identifier "GetMagickResourceLimit") (argument_list "(7)" (( "(") (number_literal "7") () ")")))) (; ";")) (expression_statement "uVar16 = uVar15 + 0x3f;" (assignment_expression "uVar16 = uVar15 + 0x3f" (identifier "uVar16") (= "=") (binary_expression "uVar15 + 0x3f" (identifier "uVar15") (+ "+") (number_literal "0x3f"))) (; ";")) (if_statement "if (-1 < (int)uVar15) {\n      uVar16 = uVar15;\n    }" (if "if") (parenthesized_expression "(-1 < (int)uVar15)" (( "(") (binary_expression "-1 < (int)uVar15" (number_literal "-1") (< "<") (cast_expression "(int)uVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar15"))) () ")")) (compound_statement "{\n      uVar16 = uVar15;\n    }" ({ "{") (expression_statement "uVar16 = uVar15;" (assignment_expression "uVar16 = uVar15" (identifier "uVar16") (= "=") (identifier "uVar15")) (; ";")) (} "}"))) (expression_statement "iVar11 = (int)uVar16 >> 6;" (assignment_expression "iVar11 = (int)uVar16 >> 6" (identifier "iVar11") (= "=") (binary_expression "(int)uVar16 >> 6" (cast_expression "(int)uVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar16")) (>> ">>") (number_literal "6"))) (; ";")) (expression_statement "bVar2 = 0x7f < (int)uVar15;" (assignment_expression "bVar2 = 0x7f < (int)uVar15" (identifier "bVar2") (= "=") (binary_expression "0x7f < (int)uVar15" (number_literal "0x7f") (< "<") (cast_expression "(int)uVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar15")))) (; ";")) (if_statement "if (iVar10 < iVar11) {\n      iVar10 = GetMagickResourceLimit(7);\n      bVar2 = 1 < iVar10;\n    }" (if "if") (parenthesized_expression "(iVar10 < iVar11)" (( "(") (binary_expression "iVar10 < iVar11" (identifier "iVar10") (< "<") (identifier "iVar11")) () ")")) (compound_statement "{\n      iVar10 = GetMagickResourceLimit(7);\n      bVar2 = 1 < iVar10;\n    }" ({ "{") (expression_statement "iVar10 = GetMagickResourceLimit(7);" (assignment_expression "iVar10 = GetMagickResourceLimit(7)" (identifier "iVar10") (= "=") (call_expression "GetMagickResourceLimit(7)" (identifier "GetMagickResourceLimit") (argument_list "(7)" (( "(") (number_literal "7") () ")")))) (; ";")) (expression_statement "bVar2 = 1 < iVar10;" (assignment_expression "bVar2 = 1 < iVar10" (identifier "bVar2") (= "=") (binary_expression "1 < iVar10" (number_literal "1") (< "<") (identifier "iVar10"))) (; ";")) (} "}"))) (if_statement "if (bVar2) {\n      iVar10 = GetMagickResourceLimit(7);\n      if (iVar10 < iVar11) {\n        iVar11 = GetMagickResourceLimit(7);\n      }\n    }\n    else {\nLAB_00067b5b:\n      iVar11 = 1;\n    }" (if "if") (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")")) (compound_statement "{\n      iVar10 = GetMagickResourceLimit(7);\n      if (iVar10 < iVar11) {\n        iVar11 = GetMagickResourceLimit(7);\n      }\n    }" ({ "{") (expression_statement "iVar10 = GetMagickResourceLimit(7);" (assignment_expression "iVar10 = GetMagickResourceLimit(7)" (identifier "iVar10") (= "=") (call_expression "GetMagickResourceLimit(7)" (identifier "GetMagickResourceLimit") (argument_list "(7)" (( "(") (number_literal "7") () ")")))) (; ";")) (if_statement "if (iVar10 < iVar11) {\n        iVar11 = GetMagickResourceLimit(7);\n      }" (if "if") (parenthesized_expression "(iVar10 < iVar11)" (( "(") (binary_expression "iVar10 < iVar11" (identifier "iVar10") (< "<") (identifier "iVar11")) () ")")) (compound_statement "{\n        iVar11 = GetMagickResourceLimit(7);\n      }" ({ "{") (expression_statement "iVar11 = GetMagickResourceLimit(7);" (assignment_expression "iVar11 = GetMagickResourceLimit(7)" (identifier "iVar11") (= "=") (call_expression "GetMagickResourceLimit(7)" (identifier "GetMagickResourceLimit") (argument_list "(7)" (( "(") (number_literal "7") () ")")))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\nLAB_00067b5b:\n      iVar11 = 1;\n    }" (else "else") (compound_statement "{\nLAB_00067b5b:\n      iVar11 = 1;\n    }" ({ "{") (labeled_statement "LAB_00067b5b:\n      iVar11 = 1;" (statement_identifier "LAB_00067b5b") (: ":") (expression_statement "iVar11 = 1;" (assignment_expression "iVar11 = 1" (identifier "iVar11") (= "=") (number_literal "1")) (; ";"))) (} "}")))) (} "}")) (else_clause "else {\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      uVar17 = GetMagickResourceLimit(7);\n      if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) goto LAB_00067b5b;\n    }\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      iVar11 = GetMagickResourceLimit(7);\n    }\n    else {\n      iVar11 = 2;\n    }\n  }" (else "else") (compound_statement "{\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      uVar17 = GetMagickResourceLimit(7);\n      if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) goto LAB_00067b5b;\n    }\n    uVar17 = GetMagickResourceLimit(7);\n    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      iVar11 = GetMagickResourceLimit(7);\n    }\n    else {\n      iVar11 = 2;\n    }\n  }" ({ "{") (expression_statement "uVar17 = GetMagickResourceLimit(7);" (assignment_expression "uVar17 = GetMagickResourceLimit(7)" (identifier "uVar17") (= "=") (call_expression "GetMagickResourceLimit(7)" (identifier "GetMagickResourceLimit") (argument_list "(7)" (( "(") (number_literal "7") () ")")))) (; ";")) (if_statement "if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      uVar17 = GetMagickResourceLimit(7);\n      if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) goto LAB_00067b5b;\n    }" (if "if") (parenthesized_expression "(((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2))" (( "(") (binary_expression "((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)" (parenthesized_expression "((int)((ulonglong)uVar17 >> 0x20) == 0)" (( "(") (binary_expression "(int)((ulonglong)uVar17 >> 0x20) == 0" (cast_expression "(int)((ulonglong)uVar17 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar17 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar17 >> 0x20" (cast_expression "(ulonglong)uVar17" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar17")) (>> ">>") (number_literal "0x20")) () ")"))) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((uint)uVar17 < 2)" (( "(") (binary_expression "(uint)uVar17 < 2" (cast_expression "(uint)uVar17" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar17")) (< "<") (number_literal "2")) () ")"))) () ")")) (compound_statement "{\n      uVar17 = GetMagickResourceLimit(7);\n      if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) goto LAB_00067b5b;\n    }" ({ "{") (expression_statement "uVar17 = GetMagickResourceLimit(7);" (assignment_expression "uVar17 = GetMagickResourceLimit(7)" (identifier "uVar17") (= "=") (call_expression "GetMagickResourceLimit(7)" (identifier "GetMagickResourceLimit") (argument_list "(7)" (( "(") (number_literal "7") () ")")))) (; ";")) (if_statement "if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) goto LAB_00067b5b;" (if "if") (parenthesized_expression "(((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2))" (( "(") (binary_expression "((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)" (parenthesized_expression "((int)((ulonglong)uVar17 >> 0x20) == 0)" (( "(") (binary_expression "(int)((ulonglong)uVar17 >> 0x20) == 0" (cast_expression "(int)((ulonglong)uVar17 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar17 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar17 >> 0x20" (cast_expression "(ulonglong)uVar17" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar17")) (>> ">>") (number_literal "0x20")) () ")"))) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((uint)uVar17 < 2)" (( "(") (binary_expression "(uint)uVar17 < 2" (cast_expression "(uint)uVar17" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar17")) (< "<") (number_literal "2")) () ")"))) () ")")) (goto_statement "goto LAB_00067b5b;" (goto "goto") (statement_identifier "LAB_00067b5b") (; ";"))) (} "}"))) (expression_statement "uVar17 = GetMagickResourceLimit(7);" (assignment_expression "uVar17 = GetMagickResourceLimit(7)" (identifier "uVar17") (= "=") (call_expression "GetMagickResourceLimit(7)" (identifier "GetMagickResourceLimit") (argument_list "(7)" (( "(") (number_literal "7") () ")")))) (; ";")) (if_statement "if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {\n      iVar11 = GetMagickResourceLimit(7);\n    }\n    else {\n      iVar11 = 2;\n    }" (if "if") (parenthesized_expression "(((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2))" (( "(") (binary_expression "((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)" (parenthesized_expression "((int)((ulonglong)uVar17 >> 0x20) == 0)" (( "(") (binary_expression "(int)((ulonglong)uVar17 >> 0x20) == 0" (cast_expression "(int)((ulonglong)uVar17 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar17 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar17 >> 0x20" (cast_expression "(ulonglong)uVar17" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar17")) (>> ">>") (number_literal "0x20")) () ")"))) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((uint)uVar17 < 2)" (( "(") (binary_expression "(uint)uVar17 < 2" (cast_expression "(uint)uVar17" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar17")) (< "<") (number_literal "2")) () ")"))) () ")")) (compound_statement "{\n      iVar11 = GetMagickResourceLimit(7);\n    }" ({ "{") (expression_statement "iVar11 = GetMagickResourceLimit(7);" (assignment_expression "iVar11 = GetMagickResourceLimit(7)" (identifier "iVar11") (= "=") (call_expression "GetMagickResourceLimit(7)" (identifier "GetMagickResourceLimit") (argument_list "(7)" (( "(") (number_literal "7") () ")")))) (; ";")) (} "}")) (else_clause "else {\n      iVar11 = 2;\n    }" (else "else") (compound_statement "{\n      iVar11 = 2;\n    }" ({ "{") (expression_statement "iVar11 = 2;" (assignment_expression "iVar11 = 2" (identifier "iVar11") (= "=") (number_literal "2")) (; ";")) (} "}")))) (} "}")))) (expression_statement "local_40 = param_4;" (assignment_expression "local_40 = param_4" (identifier "local_40") (= "=") (identifier "param_4")) (; ";")) (expression_statement "local_54 = 0.0;" (assignment_expression "local_54 = 0.0" (identifier "local_54") (= "=") (number_literal "0.0")) (; ";")) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" (identifier "local_34") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" (identifier "local_28") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_4c = param_1;" (assignment_expression "local_4c = param_1" (identifier "local_4c") (= "=") (identifier "param_1")) (; ";")) (expression_statement "local_48 = param_2;" (assignment_expression "local_48 = param_2" (identifier "local_48") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_44 = param_3;" (assignment_expression "local_44 = param_3" (identifier "local_44") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_3c = uVar8;" (assignment_expression "local_3c = uVar8" (identifier "local_3c") (= "=") (identifier "uVar8")) (; ";")) (expression_statement "local_38 = uVar9;" (assignment_expression "local_38 = uVar9" (identifier "local_38") (= "=") (identifier "uVar9")) (; ";")) (expression_statement "local_30 = uVar7;" (assignment_expression "local_30 = uVar7" (identifier "local_30") (= "=") (identifier "uVar7")) (; ";")) (expression_statement "local_2c = uVar15;" (assignment_expression "local_2c = uVar15" (identifier "local_2c") (= "=") (identifier "uVar15")) (; ";")) (expression_statement "GOMP_parallel(FUN_00069e50,&local_54,iVar11,0);" (call_expression "GOMP_parallel(FUN_00069e50,&local_54,iVar11,0)" (identifier "GOMP_parallel") (argument_list "(FUN_00069e50,&local_54,iVar11,0)" (( "(") (identifier "FUN_00069e50") (, ",") (pointer_expression "&local_54" (& "&") (identifier "local_54")) (, ",") (identifier "iVar11") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "uVar6 = local_28;" (assignment_expression "uVar6 = local_28" (identifier "uVar6") (= "=") (identifier "local_28")) (; ";")) (expression_statement "dVar3 = local_54;" (assignment_expression "dVar3 = local_54" (identifier "dVar3") (= "=") (identifier "local_54")) (; ";")) (expression_statement "DestroyCacheView(uVar9);" (call_expression "DestroyCacheView(uVar9)" (identifier "DestroyCacheView") (argument_list "(uVar9)" (( "(") (identifier "uVar9") () ")"))) (; ";")) (expression_statement "DestroyCacheView(uVar8);" (call_expression "DestroyCacheView(uVar8)" (identifier "DestroyCacheView") (argument_list "(uVar8)" (( "(") (identifier "uVar8") () ")"))) (; ";")) (if_statement "if (dVar3 < 0.0) {\n    dVar4 = -dVar3;\n    dVar5 = -1.0;\n  }\n  else {\n    dVar5 = 1.0;\n    dVar4 = dVar3;\n  }" (if "if") (parenthesized_expression "(dVar3 < 0.0)" (( "(") (binary_expression "dVar3 < 0.0" (identifier "dVar3") (< "<") (number_literal "0.0")) () ")")) (compound_statement "{\n    dVar4 = -dVar3;\n    dVar5 = -1.0;\n  }" ({ "{") (expression_statement "dVar4 = -dVar3;" (assignment_expression "dVar4 = -dVar3" (identifier "dVar4") (= "=") (unary_expression "-dVar3" (- "-") (identifier "dVar3"))) (; ";")) (expression_statement "dVar5 = -1.0;" (assignment_expression "dVar5 = -1.0" (identifier "dVar5") (= "=") (number_literal "-1.0")) (; ";")) (} "}")) (else_clause "else {\n    dVar5 = 1.0;\n    dVar4 = dVar3;\n  }" (else "else") (compound_statement "{\n    dVar5 = 1.0;\n    dVar4 = dVar3;\n  }" ({ "{") (expression_statement "dVar5 = 1.0;" (assignment_expression "dVar5 = 1.0" (identifier "dVar5") (= "=") (number_literal "1.0")) (; ";")) (expression_statement "dVar4 = dVar3;" (assignment_expression "dVar4 = dVar3" (identifier "dVar4") (= "=") (identifier "dVar3")) (; ";")) (} "}")))) (if_statement "if (dVar4 < DAT_0029f138) {\n    dVar3 = dVar5 / DAT_0029f138;\n  }\n  else {\n    dVar3 = (double)DAT_0029f718 / dVar3;\n  }" (if "if") (parenthesized_expression "(dVar4 < DAT_0029f138)" (( "(") (binary_expression "dVar4 < DAT_0029f138" (identifier "dVar4") (< "<") (identifier "DAT_0029f138")) () ")")) (compound_statement "{\n    dVar3 = dVar5 / DAT_0029f138;\n  }" ({ "{") (expression_statement "dVar3 = dVar5 / DAT_0029f138;" (assignment_expression "dVar3 = dVar5 / DAT_0029f138" (identifier "dVar3") (= "=") (binary_expression "dVar5 / DAT_0029f138" (identifier "dVar5") (/ "/") (identifier "DAT_0029f138"))) (; ";")) (} "}")) (else_clause "else {\n    dVar3 = (double)DAT_0029f718 / dVar3;\n  }" (else "else") (compound_statement "{\n    dVar3 = (double)DAT_0029f718 / dVar3;\n  }" ({ "{") (expression_statement "dVar3 = (double)DAT_0029f718 / dVar3;" (assignment_expression "dVar3 = (double)DAT_0029f718 / dVar3" (identifier "dVar3") (= "=") (binary_expression "(double)DAT_0029f718 / dVar3" (cast_expression "(double)DAT_0029f718" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_0029f718")) (/ "/") (identifier "dVar3"))) (; ";")) (} "}")))) (expression_statement "pdVar12 = param_3;" (assignment_expression "pdVar12 = param_3" (identifier "pdVar12") (= "=") (identifier "param_3")) (; ";")) (do_statement "do {\n    pdVar13 = pdVar12 + 1;\n    *pdVar12 = *pdVar12 * dVar3;\n    pdVar12 = pdVar13;\n  } while (param_3 + 0x41 != pdVar13);" (do "do") (compound_statement "{\n    pdVar13 = pdVar12 + 1;\n    *pdVar12 = *pdVar12 * dVar3;\n    pdVar12 = pdVar13;\n  }" ({ "{") (expression_statement "pdVar13 = pdVar12 + 1;" (assignment_expression "pdVar13 = pdVar12 + 1" (identifier "pdVar13") (= "=") (binary_expression "pdVar12 + 1" (identifier "pdVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*pdVar12 = *pdVar12 * dVar3;" (assignment_expression "*pdVar12 = *pdVar12 * dVar3" (pointer_expression "*pdVar12" (* "*") (identifier "pdVar12")) (= "=") (binary_expression "*pdVar12 * dVar3" (pointer_expression "*pdVar12" (* "*") (identifier "pdVar12")) (* "*") (identifier "dVar3"))) (; ";")) (expression_statement "pdVar12 = pdVar13;" (assignment_expression "pdVar12 = pdVar13" (identifier "pdVar12") (= "=") (identifier "pdVar13")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_3 + 0x41 != pdVar13)" (( "(") (binary_expression "param_3 + 0x41 != pdVar13" (binary_expression "param_3 + 0x41" (identifier "param_3") (+ "+") (number_literal "0x41")) (!= "!=") (identifier "pdVar13")) () ")")) (; ";")) (if_statement "if (0 < *(int *)(param_1 + 0x298)) {\n    piVar1 = *(int **)(param_1 + 0x2a8);\n    uVar15 = 0;\n    piVar14 = piVar1;\n    do {\n      uVar15 = (uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0);\n      piVar14 = piVar14 + 3;\n    } while (piVar14 != piVar1 + *(int *)(param_1 + 0x298) * 3);\n    if (uVar15 != 0) {\n      dVar3 = (double)uVar15;\n      goto LAB_00067ac1;\n    }\n  }" (if "if") (parenthesized_expression "(0 < *(int *)(param_1 + 0x298))" (( "(") (binary_expression "0 < *(int *)(param_1 + 0x298)" (number_literal "0") (< "<") (pointer_expression "*(int *)(param_1 + 0x298)" (* "*") (cast_expression "(int *)(param_1 + 0x298)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x298)" (( "(") (binary_expression "param_1 + 0x298" (identifier "param_1") (+ "+") (number_literal "0x298")) () ")"))))) () ")")) (compound_statement "{\n    piVar1 = *(int **)(param_1 + 0x2a8);\n    uVar15 = 0;\n    piVar14 = piVar1;\n    do {\n      uVar15 = (uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0);\n      piVar14 = piVar14 + 3;\n    } while (piVar14 != piVar1 + *(int *)(param_1 + 0x298) * 3);\n    if (uVar15 != 0) {\n      dVar3 = (double)uVar15;\n      goto LAB_00067ac1;\n    }\n  }" ({ "{") (expression_statement "piVar1 = *(int **)(param_1 + 0x2a8);" (assignment_expression "piVar1 = *(int **)(param_1 + 0x2a8)" (identifier "piVar1") (= "=") (pointer_expression "*(int **)(param_1 + 0x2a8)" (* "*") (cast_expression "(int **)(param_1 + 0x2a8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (; ";")) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar14 = piVar1;" (assignment_expression "piVar14 = piVar1" (identifier "piVar14") (= "=") (identifier "piVar1")) (; ";")) (do_statement "do {\n      uVar15 = (uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0);\n      piVar14 = piVar14 + 3;\n    } while (piVar14 != piVar1 + *(int *)(param_1 + 0x298) * 3);" (do "do") (compound_statement "{\n      uVar15 = (uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0);\n      piVar14 = piVar14 + 3;\n    }" ({ "{") (expression_statement "uVar15 = (uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0);" (assignment_expression "uVar15 = (uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0)" (identifier "uVar15") (= "=") (binary_expression "(uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0)" (parenthesized_expression "(uVar15 + 1)" (( "(") (binary_expression "uVar15 + 1" (identifier "uVar15") (+ "+") (number_literal "1")) () ")")) (- "-") (call_expression "(uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((piVar1[*piVar14 * 3 + 1] & 2U) == 0)" (( "(") (binary_expression "(piVar1[*piVar14 * 3 + 1] & 2U) == 0" (parenthesized_expression "(piVar1[*piVar14 * 3 + 1] & 2U)" (( "(") (binary_expression "piVar1[*piVar14 * 3 + 1] & 2U" (subscript_expression "piVar1[*piVar14 * 3 + 1]" (identifier "piVar1") ([ "[") (binary_expression "*piVar14 * 3 + 1" (binary_expression "*piVar14 * 3" (pointer_expression "*piVar14" (* "*") (identifier "piVar14")) (* "*") (number_literal "3")) (+ "+") (number_literal "1")) (] "]")) (& "&") (number_literal "2U")) () ")")) (== "==") (number_literal "0")) () ")"))))) (; ";")) (expression_statement "piVar14 = piVar14 + 3;" (assignment_expression "piVar14 = piVar14 + 3" (identifier "piVar14") (= "=") (binary_expression "piVar14 + 3" (identifier "piVar14") (+ "+") (number_literal "3"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar14 != piVar1 + *(int *)(param_1 + 0x298) * 3)" (( "(") (binary_expression "piVar14 != piVar1 + *(int *)(param_1 + 0x298) * 3" (identifier "piVar14") (!= "!=") (binary_expression "piVar1 + *(int *)(param_1 + 0x298) * 3" (identifier "piVar1") (+ "+") (binary_expression "*(int *)(param_1 + 0x298) * 3" (pointer_expression "*(int *)(param_1 + 0x298)" (* "*") (cast_expression "(int *)(param_1 + 0x298)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x298)" (( "(") (binary_expression "param_1 + 0x298" (identifier "param_1") (+ "+") (number_literal "0x298")) () ")")))) (* "*") (number_literal "3")))) () ")")) (; ";")) (if_statement "if (uVar15 != 0) {\n      dVar3 = (double)uVar15;\n      goto LAB_00067ac1;\n    }" (if "if") (parenthesized_expression "(uVar15 != 0)" (( "(") (binary_expression "uVar15 != 0" (identifier "uVar15") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      dVar3 = (double)uVar15;\n      goto LAB_00067ac1;\n    }" ({ "{") (expression_statement "dVar3 = (double)uVar15;" (assignment_expression "dVar3 = (double)uVar15" (identifier "dVar3") (= "=") (cast_expression "(double)uVar15" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "uVar15"))) (; ";")) (goto_statement "goto LAB_00067ac1;" (goto "goto") (statement_identifier "LAB_00067ac1") (; ";")) (} "}"))) (} "}"))) (expression_statement "dVar3 = 1.0;" (assignment_expression "dVar3 = 1.0" (identifier "dVar3") (= "=") (number_literal "1.0")) (; ";")) (labeled_statement "LAB_00067ac1:\n  param_3[0x40] = param_3[0x40] / dVar3;" (statement_identifier "LAB_00067ac1") (: ":") (expression_statement "param_3[0x40] = param_3[0x40] / dVar3;" (assignment_expression "param_3[0x40] = param_3[0x40] / dVar3" (subscript_expression "param_3[0x40]" (identifier "param_3") ([ "[") (number_literal "0x40") (] "]")) (= "=") (binary_expression "param_3[0x40] / dVar3" (subscript_expression "param_3[0x40]" (identifier "param_3") ([ "[") (number_literal "0x40") (] "]")) (/ "/") (identifier "dVar3"))) (; ";"))) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0029eab0();\n  }" (if "if") (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (!= "!=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                    \n    FUN_0029eab0();\n  }" ({ "{") (expression_statement "FUN_0029eab0();" (call_expression "FUN_0029eab0()" (identifier "FUN_0029eab0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return uVar6;" (return "return") (identifier "uVar6") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Variable defined which should be unmapped: channel_distortion */
/* WARNING: Enum "GravityType": Some values do not have unique names */
/* WARNING: Enum "DisposeType": Some values do not have unique names */
/* WARNING: Enum "ChannelType": Some values do not have unique names */
/* WARNING: Enum "PixelChannel": Some values do not have unique names */
/* WARNING: Enum "ExceptionType": Some values do not have unique names */

type_1 __regparm3
function_1
          (type_2 *image,type_2 *reconstruct_image,double *distortion,type_3 *exception)

{
  int var_24;
  type_4 *var_22;
  bool bVar3;
  double var_16;
  double var_14;
  type_1 MVar6;
  type_5 uVar7;
  type_6 var_5;
  double *var_17;
  double *var_18;
  type_4 *var_21;
  type_7 *var_23;
  int var_9;
  int var_1;
  type_8 var_10;
  double var_11 [65];
  
  var_24 = *(int *)(var_1 + 0x14);
  uVar7 = image->rows;
  if (image->rows <= reconstruct_image->rows) {
    uVar7 = reconstruct_image->rows;
  }
  var_11[0x36] = (double)var_2(var_11[0x36]._4_4_,uVar7);
  var_11[0x37]._4_4_ = image->columns;
  if (image->columns <= reconstruct_image->columns) {
    var_11[0x37]._4_4_ = reconstruct_image->columns;
  }
  var_11[0x32]._4_4_ = exception;
  var_11[0x31]._4_4_ = 0x67933;
  var_11[0x32]._0_4_ = (type_9 *)image;
  var_11[0x34]._4_4_ = distortion;
  var_11[0x35]._0_4_ = var_3(image,exception);
  var_11[0x32]._4_4_ = exception;
  var_11[0x31]._4_4_ = 0x67940;
  var_11[0x32]._0_4_ = (type_9 *)reconstruct_image;
  var_11[0x37]._0_4_ = var_3(reconstruct_image,exception);
  var_11[0x31]._4_4_ = 0x6794c;
  var_11[0x32]._0_4_ = (type_9 *)image;
  var_5 = var_4(image);
  if (var_5 == var_6) {
LAB_00067aec:
    var_11[0x31]._4_4_ = 0x67af5;
    var_11[0x32]._0_4_ = (type_9 *)image;
    var_5 = var_4(image);
    if (var_5 != var_6) {
      var_11[0x31]._4_4_ = 0x67b06;
      var_11[0x32]._0_4_ = (type_9 *)image;
      var_5 = var_4(image);
      if (var_5 != var_7) goto LAB_0006796d;
    }
    var_11[0x32]._0_4_ = (type_9 *)0x7;
    var_11[0x31]._4_4_ = 0x67b1c;
    var_10 = var_8(ThreadResource);
    var_9 = var_11[0x36]._0_4_ + 0x3f;
    if (-1 < var_11[0x36]._0_4_) {
      var_9 = var_11[0x36]._0_4_;
    }
    var_11[0x38]._0_4_ = var_9 >> 6;
    bVar3 = 0x7f < var_11[0x36]._0_4_;
    var_9 = var_11[0x38]._0_4_;
    if ((int)var_10 < var_11[0x38]._0_4_) {
      var_11[0x32]._0_4_ = (type_9 *)0x7;
      var_11[0x31]._4_4_ = 0x67b4a;
      var_11[0x38]._4_4_ = var_11[0x38]._0_4_;
      var_10 = var_8(ThreadResource);
      bVar3 = 1 < (int)var_10;
      var_9 = var_11[0x38]._4_4_;
    }
    if (bVar3) {
      var_11[0x32]._0_4_ = (type_9 *)0x7;
      var_11[0x31]._4_4_ = 0x67bdb;
      var_11[0x38]._4_4_ = var_9;
      var_10 = var_8(ThreadResource);
      var_11[0x33]._0_4_ = var_11[0x38]._0_4_;
      if ((int)var_10 < var_11[0x38]._4_4_) {
        var_11[0x32]._0_4_ = (type_9 *)0x7;
        var_11[0x31]._4_4_ = 0x67bf9;
        var_10 = var_8(ThreadResource);
        var_11[0x33]._0_4_ = (int)var_10;
      }
    }
    else {
LAB_00067b5b:
      var_11[0x33]._0_4_ = 1;
    }
  }
  else {
    var_11[0x31]._4_4_ = 0x67961;
    var_11[0x32]._0_4_ = (type_9 *)image;
    var_5 = var_4(image);
    if (var_5 == var_7) goto LAB_00067aec;
LAB_0006796d:
    var_11[0x32]._0_4_ = (type_9 *)0x7;
    var_11[0x31]._4_4_ = 0x67977;
    var_10 = var_8(ThreadResource);
    if (((int)(var_10 >> 0x20) == 0) && ((type_5)var_10 < 2)) {
      var_11[0x32]._0_4_ = (type_9 *)0x7;
      var_11[0x31]._4_4_ = 0x67b78;
      var_10 = var_8(ThreadResource);
      if (((int)(var_10 >> 0x20) == 0) && ((type_5)var_10 < 2)) goto LAB_00067b5b;
    }
    var_11[0x32]._0_4_ = (type_9 *)0x7;
    var_11[0x31]._4_4_ = 0x6798d;
    var_10 = var_8(ThreadResource);
    if (((int)(var_10 >> 0x20) == 0) && ((type_5)var_10 < 2)) {
      var_11[0x32]._0_4_ = (type_9 *)0x7;
      var_11[0x31]._4_4_ = 0x67bc5;
      var_10 = var_8(ThreadResource);
      var_11[0x33]._0_4_ = (int)var_10;
    }
    else {
      var_11[0x33]._0_4_ = 2;
    }
  }
  var_11[0x3d]._4_4_ = exception;
  var_11[0x3b] = 0.0;
  var_11[0x40]._0_4_ = var_11[0x36]._0_4_;
  var_11[0x38]._0_4_ = 0;
  var_11[0x3e]._0_4_ = var_11[0x35]._0_4_;
  var_11[0x3d]._0_4_ = var_11[0x34]._4_4_;
  var_11[0x3f]._4_4_ = var_11[0x37]._4_4_;
  var_11[0x3f]._0_4_ = 0;
  var_11[0x40]._4_4_ = MagickTrue;
  var_11[0x3e]._4_4_ = var_11[0x37]._0_4_;
  var_11[0x33]._4_4_ = (type_10 *)0x0;
  var_11[0x32]._4_4_ = (type_3 *)(var_11 + 0x3b);
  var_11[0x32]._0_4_ = GetMeanSquaredDistortion__omp_fn_4;
  var_11[0x31]._4_4_ = 0x67a00;
  var_11[0x3c]._0_4_ = image;
  var_11[0x3c]._4_4_ = reconstruct_image;
  var_12(GetMeanSquaredDistortion__omp_fn_4,var_11[0x32]._4_4_,
                var_11[0x33]._0_4_,0);
  MVar6 = var_11[0x40]._4_4_;
  var_11[0x36] = var_11[0x3b];
  var_11[0x32]._0_4_ = (type_9 *)var_11[0x37]._0_4_;
  var_11[0x31]._4_4_ = 0x67a16;
  var_13(var_11[0x37]._0_4_);
  var_11[0x32]._0_4_ = (type_9 *)var_11[0x35]._0_4_;
  var_11[0x31]._4_4_ = 0x67a20;
  var_13(var_11[0x35]._0_4_);
  if (var_11[0x36] < 0.0) {
    var_14 = -var_11[0x36];
    var_16 = -1.0;
  }
  else {
    var_16 = 1.0;
    var_14 = var_11[0x36];
  }
  if (var_14 < var_15) {
    var_16 = var_16 / var_15;
  }
  else {
    var_16 = (double)DAT_0029f718 / var_11[0x36];
  }
  var_17 = var_11[0x34]._4_4_;
  do {
    var_18 = var_17 + 1;
    *var_17 = *var_17 * var_16;
    var_17 = var_18;
  } while (var_11[0x34]._4_4_ + 0x41 != var_18);
  if (0 < (int)image->number_channels) {
    var_22 = image->channel_map;
    var_23 = (type_7 *)0x0;
    var_21 = var_22;
    do {
      var_23 = (type_7 *)
                ((int)&var_23->image +
                (type_5)((var_22[var_21->channel].traits & var_19) != var_20))
      ;
      var_21 = var_21 + 1;
    } while (var_21 != var_22 + image->number_channels);
    if (var_23 != (type_7 *)0x0) {
      var_11[0x35]._4_4_ = 0;
      var_16 = (double)var_23;
      var_11[0x35]._0_4_ = var_23;
      goto LAB_00067ac1;
    }
  }
  var_16 = 1.0;
LAB_00067ac1:
  var_11[0x34]._4_4_[0x40] = var_11[0x34]._4_4_[0x40] / var_16;
  if (var_24 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_11[0x33]._4_4_ = &UNK_00067c07;
    var_25();
  }
  return MVar6;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

undefined4 __regparm3 MASKED(int param_1,int param_2,double *param_3,undefined4 param_4)

{
  int *piVar1;
  bool bVar2;
  double dVar3;
  double dVar4;
  double dVar5;
  undefined4 uVar6;
  uint uVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  int iVar10;
  int iVar11;
  double *pdVar12;
  double *pdVar13;
  int *piVar14;
  uint uVar15;
  uint uVar16;
  int in_GS_OFFSET;
  undefined8 uVar17;
  double local_54;
  int local_4c;
  int local_48;
  double *local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  uint local_30;
  uint local_2c;
  undefined4 local_28;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x678ed;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  uVar15 = *(uint *)(param_1 + 0x1c);
  if (*(uint *)(param_1 + 0x1c) <= *(uint *)(param_2 + 0x1c)) {
    uVar15 = *(uint *)(param_2 + 0x1c);
  }
  uVar7 = *(uint *)(param_1 + 0x18);
  if (*(uint *)(param_1 + 0x18) <= *(uint *)(param_2 + 0x18)) {
    uVar7 = *(uint *)(param_2 + 0x18);
  }
  uVar8 = AcquireVirtualCacheView(param_1,param_4);
  uVar9 = AcquireVirtualCacheView(param_2,param_4);
  iVar10 = GetImagePixelCacheType(param_1);
  if (((iVar10 == 4) || (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)) &&
     ((iVar10 = GetImagePixelCacheType(param_1), iVar10 == 4 ||
      (iVar10 = GetImagePixelCacheType(param_1), iVar10 == 3)))) {
    iVar10 = GetMagickResourceLimit(7);
    uVar16 = uVar15 + 0x3f;
    if (-1 < (int)uVar15) {
      uVar16 = uVar15;
    }
    iVar11 = (int)uVar16 >> 6;
    bVar2 = 0x7f < (int)uVar15;
    if (iVar10 < iVar11) {
      iVar10 = GetMagickResourceLimit(7);
      bVar2 = 1 < iVar10;
    }
    if (bVar2) {
      iVar10 = GetMagickResourceLimit(7);
      if (iVar10 < iVar11) {
        iVar11 = GetMagickResourceLimit(7);
      }
    }
    else {
LAB_00067b5b:
      iVar11 = 1;
    }
  }
  else {
    uVar17 = GetMagickResourceLimit(7);
    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {
      uVar17 = GetMagickResourceLimit(7);
      if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) goto LAB_00067b5b;
    }
    uVar17 = GetMagickResourceLimit(7);
    if (((int)((ulonglong)uVar17 >> 0x20) == 0) && ((uint)uVar17 < 2)) {
      iVar11 = GetMagickResourceLimit(7);
    }
    else {
      iVar11 = 2;
    }
  }
  local_40 = param_4;
  local_54 = 0.0;
  local_34 = 0;
  local_28 = 1;
  local_4c = param_1;
  local_48 = param_2;
  local_44 = param_3;
  local_3c = uVar8;
  local_38 = uVar9;
  local_30 = uVar7;
  local_2c = uVar15;
  GOMP_parallel(FUN_00069e50,&local_54,iVar11,0);
  uVar6 = local_28;
  dVar3 = local_54;
  DestroyCacheView(uVar9);
  DestroyCacheView(uVar8);
  if (dVar3 < 0.0) {
    dVar4 = -dVar3;
    dVar5 = -1.0;
  }
  else {
    dVar5 = 1.0;
    dVar4 = dVar3;
  }
  if (dVar4 < DAT_0029f138) {
    dVar3 = dVar5 / DAT_0029f138;
  }
  else {
    dVar3 = (double)DAT_0029f718 / dVar3;
  }
  pdVar12 = param_3;
  do {
    pdVar13 = pdVar12 + 1;
    *pdVar12 = *pdVar12 * dVar3;
    pdVar12 = pdVar13;
  } while (param_3 + 0x41 != pdVar13);
  if (0 < *(int *)(param_1 + 0x298)) {
    piVar1 = *(int **)(param_1 + 0x2a8);
    uVar15 = 0;
    piVar14 = piVar1;
    do {
      uVar15 = (uVar15 + 1) - (uint)((piVar1[*piVar14 * 3 + 1] & 2U) == 0);
      piVar14 = piVar14 + 3;
    } while (piVar14 != piVar1 + *(int *)(param_1 + 0x298) * 3);
    if (uVar15 != 0) {
      dVar3 = (double)uVar15;
      goto LAB_00067ac1;
    }
  }
  dVar3 = 1.0;
LAB_00067ac1:
  param_3[0x40] = param_3[0x40] / dVar3;
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_0029eab0();
  }
  return uVar6;
}

