
/* 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
GetMeanAbsoluteDistortion
          (Image *image,Image *reconstruct_image,double *distortion,ExceptionInfo *exception)

{
  long lVar1;
  bool bVar2;
  double cache_view;
  MagickBooleanType MVar3;
  CacheType CVar4;
  MagickSizeType MVar5;
  double *pdVar6;
  size_t sVar7;
  double dVar8;
  double dVar9;
  long in_FS_OFFSET;
  double dVar10;
  double channel_distortion [65];
  
  lVar1 = *(long *)(in_FS_OFFSET + 0x28);
  dVar10 = (double)image->rows;
  if (image->rows <= reconstruct_image->rows) {
    dVar10 = (double)reconstruct_image->rows;
  }
  dVar9 = (double)image->columns;
  if (image->columns <= reconstruct_image->columns) {
    dVar9 = (double)reconstruct_image->columns;
  }
  channel_distortion[0x31] = 7.85804986857107e-318;
  channel_distortion[0x33] = (double)AcquireVirtualCacheView(image,exception);
  channel_distortion[0x31] = 7.8581289190744e-318;
  channel_distortion[0x34] = (double)AcquireVirtualCacheView(reconstruct_image,exception);
  channel_distortion[0x31] = 7.85819314760836e-318;
  CVar4 = GetImagePixelCacheType(image);
  if (CVar4 == MemoryCache) {
LAB_00184672:
    channel_distortion[0x31] = 7.86012000362714e-318;
    CVar4 = GetImagePixelCacheType(image);
    if (CVar4 != MemoryCache) {
      channel_distortion[0x31] = 7.8601842321611e-318;
      CVar4 = GetImagePixelCacheType(image);
      if (CVar4 != MapCache) goto LAB_0018450e;
    }
    channel_distortion[0x31] = 7.86027810463381e-318;
    MVar5 = GetMagickResourceLimit(ThreadResource);
    dVar8 = (double)((long)dVar10 + 0x3f);
    if (-1 < (long)dVar10) {
      dVar8 = dVar10;
    }
    channel_distortion[0x35] = (double)((long)dVar8 >> 6);
    bVar2 = 0x7f < (long)dVar10;
    if ((long)MVar5 < (long)channel_distortion[0x35]) {
      channel_distortion[0x31] = 7.86101426244611e-318;
      MVar5 = GetMagickResourceLimit(ThreadResource);
      bVar2 = 1 < (long)MVar5;
    }
    dVar8 = 4.94065645841247e-324;
    if (bVar2) {
      channel_distortion[0x31] = 7.86055478139548e-318;
      MVar5 = GetMagickResourceLimit(ThreadResource);
      dVar8 = channel_distortion[0x35];
      if ((long)MVar5 < (long)channel_distortion[0x35]) {
        channel_distortion[0x31] = 7.86068817911986e-318;
        dVar8 = (double)GetMagickResourceLimit(ThreadResource);
      }
    }
  }
  else {
    channel_distortion[0x31] = 7.85827713876815e-318;
    CVar4 = GetImagePixelCacheType(image);
    if (CVar4 == MapCache) goto LAB_00184672;
LAB_0018450e:
    channel_distortion[0x31] = 7.85837101124086e-318;
    MVar5 = GetMagickResourceLimit(ThreadResource);
    if (MVar5 < 2) {
      channel_distortion[0x31] = 7.86077711093611e-318;
      MVar5 = GetMagickResourceLimit(ThreadResource);
      dVar8 = 4.94065645841247e-324;
      if (MVar5 < 2) goto LAB_0018453b;
    }
    channel_distortion[0x31] = 7.85846982437003e-318;
    MVar5 = GetMagickResourceLimit(ThreadResource);
    dVar8 = 9.88131291682493e-324;
    if (MVar5 < 2) {
      channel_distortion[0x31] = 7.86092533062986e-318;
      dVar8 = (double)GetMagickResourceLimit(ThreadResource);
    }
  }
LAB_0018453b:
  cache_view = channel_distortion[0x34];
  channel_distortion[0x3f] = 0.0;
  channel_distortion[0x3b] = channel_distortion[0x34];
  channel_distortion[0x3a] = channel_distortion[0x33];
  channel_distortion[0x3c] = 0.0;
  channel_distortion[0x40]._0_4_ = MagickTrue;
  channel_distortion[0x31] = 7.85902811854983e-318;
  channel_distortion[0x36] = (double)image;
  channel_distortion[0x37] = (double)reconstruct_image;
  channel_distortion[0x38] = (double)distortion;
  channel_distortion[0x39] = (double)exception;
  channel_distortion[0x3d] = dVar9;
  channel_distortion[0x3e] = dVar10;
  GOMP_parallel(GetMeanAbsoluteDistortion__omp_fn_3,channel_distortion + 0x36,dVar8,0);
  MVar3 = channel_distortion[0x40]._0_4_;
  dVar10 = channel_distortion[0x3f];
  channel_distortion[0x31] = 7.85911210970963e-318;
  DestroyCacheView((CacheView *)cache_view);
  channel_distortion[0x31] = 7.85916151627421e-318;
  DestroyCacheView((CacheView *)channel_distortion[0x33]);
  dVar9 = DAT_003f9c68;
  if (0.0 <= dVar10) {
    dVar9 = DAT_003f9608;
  }
  if (dVar10 * dVar9 < DAT_003f9600) {
    dVar10 = dVar9 / DAT_003f9600;
  }
  else {
    dVar10 = DAT_003f9608 / dVar10;
  }
  pdVar6 = distortion;
  do {
    *pdVar6 = dVar10 * *pdVar6;
    pdVar6 = pdVar6 + 1;
  } while (pdVar6 != distortion + 0x41);
  channel_distortion[0x31] = 7.8596852258588e-318;
  sVar7 = GetImageChannels(image);
  distortion[0x40] = distortion[0x40] / (double)sVar7;
  if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {
    return MVar3;
  }
                    /* WARNING: Subroutine does not return */
  channel_distortion[0x31] = (double)GetMeanErrorPerPixel;
  __stack_chk_fail();
}



undefined4 FUN_00184488(long param_1,long param_2,double *param_3,undefined8 param_4)

{
  bool bVar1;
  undefined4 uVar2;
  int iVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  ulong uVar6;
  double *pdVar7;
  ulong uVar8;
  long lVar9;
  long lVar10;
  long lVar11;
  ulong uVar12;
  long in_FS_OFFSET;
  double dVar13;
  double dVar14;
  long local_98;
  long local_90;
  double *local_88;
  undefined8 local_80;
  undefined8 local_78;
  undefined8 local_70;
  undefined8 local_68;
  ulong local_60;
  ulong local_58;
  double local_50;
  undefined4 local_48;
  long local_40;
  
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  uVar8 = *(ulong *)(param_1 + 0x28);
  if (*(ulong *)(param_1 + 0x28) <= *(ulong *)(param_2 + 0x28)) {
    uVar8 = *(ulong *)(param_2 + 0x28);
  }
  uVar12 = *(ulong *)(param_1 + 0x20);
  if (*(ulong *)(param_1 + 0x20) <= *(ulong *)(param_2 + 0x20)) {
    uVar12 = *(ulong *)(param_2 + 0x20);
  }
  uVar4 = AcquireVirtualCacheView(param_1,param_4);
  uVar5 = AcquireVirtualCacheView(param_2,param_4);
  iVar3 = GetImagePixelCacheType(param_1);
  if (((iVar3 == 4) || (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)) &&
     ((iVar3 = GetImagePixelCacheType(param_1), iVar3 == 4 ||
      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)))) {
    lVar10 = GetMagickResourceLimit(7);
    uVar6 = uVar8 + 0x3f;
    if (-1 < (long)uVar8) {
      uVar6 = uVar8;
    }
    lVar11 = (long)uVar6 >> 6;
    bVar1 = 0x7f < (long)uVar8;
    if (lVar10 < lVar11) {
      lVar10 = GetMagickResourceLimit(7);
      bVar1 = 1 < lVar10;
    }
    lVar10 = 1;
    if ((bVar1) && (lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11)) {
      lVar10 = GetMagickResourceLimit(7);
    }
  }
  else {
    uVar6 = GetMagickResourceLimit(7);
    if (uVar6 < 2) {
      uVar6 = GetMagickResourceLimit(7);
      lVar10 = 1;
      if (uVar6 < 2) goto LAB_0018453b;
    }
    uVar6 = GetMagickResourceLimit(7);
    lVar10 = 2;
    if (uVar6 < 2) {
      lVar10 = GetMagickResourceLimit(7);
    }
  }
LAB_0018453b:
  local_50 = 0.0;
  local_68 = 0;
  local_48 = 1;
  local_98 = param_1;
  local_90 = param_2;
  local_88 = param_3;
  local_80 = param_4;
  local_78 = uVar4;
  local_70 = uVar5;
  local_60 = uVar12;
  local_58 = uVar8;
  GOMP_parallel(FUN_00186a2a,&local_98,lVar10,0);
  uVar2 = local_48;
  dVar14 = local_50;
  DestroyCacheView(uVar5);
  DestroyCacheView(uVar4);
  dVar13 = DAT_003f9c68;
  if (0.0 <= dVar14) {
    dVar13 = DAT_003f9608;
  }
  if (dVar14 * dVar13 < DAT_003f9600) {
    dVar14 = dVar13 / DAT_003f9600;
  }
  else {
    dVar14 = DAT_003f9608 / dVar14;
  }
  pdVar7 = param_3;
  do {
    *pdVar7 = dVar14 * *pdVar7;
    pdVar7 = pdVar7 + 1;
  } while (pdVar7 != param_3 + 0x41);
  uVar8 = FUN_001841bc(param_1);
  param_3[0x40] = param_3[0x40] / (double)uVar8;
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return uVar2;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x88
MOV RBX,RDI
MOV RBP,RSI
MOV R13,RDX
MOV R15,RCX
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x78],RAX
XOR EAX,EAX
MOV R12,qword ptr [RDI + 0x28]
CMP qword ptr [RSI + 0x28],R12
CMOVNC R12,qword ptr [RSI + 0x28]
MOV R14,qword ptr [RDI + 0x20]
CMP qword ptr [RSI + 0x20],R14
CMOVNC R14,qword ptr [RSI + 0x20]
MOV RSI,RCX
CALL 0x0014a510
MOV qword ptr [RSP + 0x8],RAX
MOV RSI,R15
MOV RDI,RBP
CALL 0x0014a510
MOV qword ptr [RSP + 0x10],RAX
MOV RDI,RBX
CALL 0x0014b110
CMP EAX,0x4
JZ 0x00184672
MOV RDI,RBX
CALL 0x0014b110
CMP EAX,0x3
JZ 0x00184672
MOV EDI,0x7
CALL 0x0014c170
CMP RAX,0x1
JBE 0x001846f5
MOV EDI,0x7
CALL 0x0014c170
MOV EDX,0x2
CMP RAX,0x1
JBE 0x00184713
MOV qword ptr [RSP + 0x68],0x0
MOV qword ptr [RSP + 0x60],R12
MOV qword ptr [RSP + 0x58],R14
MOV R14,qword ptr [RSP + 0x10]
MOV qword ptr [RSP + 0x48],R14
MOV RAX,qword ptr [RSP + 0x8]
MOV qword ptr [RSP + 0x40],RAX
MOV qword ptr [RSP + 0x38],R15
MOV qword ptr [RSP + 0x30],R13
MOV qword ptr [RSP + 0x28],RBP
MOV qword ptr [RSP + 0x20],RBX
MOV qword ptr [RSP + 0x50],0x0
MOV dword ptr [RSP + 0x70],0x1
LEA RSI,[RSP + 0x20]
MOV ECX,0x0
LEA RDI,[0x186a2a]
CALL 0x0014bf70
MOV R12,qword ptr [RSP + 0x68]
MOV EBP,dword ptr [RSP + 0x70]
MOV RDI,R14
CALL 0x0014cc70
MOV RDI,qword ptr [RSP + 0x8]
CALL 0x0014cc70
PXOR XMM0,XMM0
MOVQ XMM2,R12
UCOMISD XMM0,XMM2
JA 0x00184738
MOVSD XMM1,qword ptr [0x003f9608]
MOVQ XMM0,R12
MULSD XMM0,XMM1
UCOMISD XMM0,qword ptr [0x003f9600]
JC 0x00184745
MOVSD XMM1,qword ptr [0x003f9608]
MOVQ XMM3,R12
DIVSD XMM1,XMM3
MOV RAX,R13
LEA RDX,[R13 + 0x208]
MOVAPD XMM0,XMM1
MULSD XMM0,qword ptr [RAX]
MOVSD qword ptr [RAX],XMM0
ADD RAX,0x8
CMP RAX,RDX
JNZ 0x00184605
MOV RDI,RBX
CALL 0x001841bc
TEST RAX,RAX
JS 0x00184752
PXOR XMM0,XMM0
CVTSI2SD XMM0,RAX
MOVSD XMM1,qword ptr [R13 + 0x200]
DIVSD XMM1,XMM0
MOVSD qword ptr [R13 + 0x200],XMM1
MOV EAX,EBP
MOV RCX,qword ptr [RSP + 0x78]
XOR RCX,qword ptr FS:[0x28]
JNZ 0x00184770
ADD RSP,0x88
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RDI,RBX
CALL 0x0014b110
CMP EAX,0x4
JZ 0x00184690
MOV RDI,RBX
CALL 0x0014b110
CMP EAX,0x3
JNZ 0x0018450e
MOV EDI,0x7
CALL 0x0014c170
LEA RDX,[R12 + 0x3f]
TEST R12,R12
CMOVNS RDX,R12
SAR RDX,0x6
MOV qword ptr [RSP + 0x18],RDX
CMP R12,0x7f
SETG CL
CMP RAX,RDX
JL 0x00184725
MOV EDX,0x1
TEST CL,CL
JZ 0x0018453b
MOV EDI,0x7
CALL 0x0014c170
MOV RCX,qword ptr [RSP + 0x18]
MOV RDX,RCX
CMP RCX,RAX
JLE 0x0018453b
MOV EDI,0x7
CALL 0x0014c170
MOV RDX,RAX
JMP 0x0018453b
MOV EDI,0x7
CALL 0x0014c170
MOV EDX,0x1
CMP RAX,0x1
JA 0x00184522
JMP 0x0018453b
MOV EDI,0x7
CALL 0x0014c170
MOV RDX,RAX
JMP 0x0018453b
MOV EDI,0x7
CALL 0x0014c170
CMP RAX,0x1
SETG CL
JMP 0x001846bb
MOVSD XMM1,qword ptr [0x003f9c68]
JMP 0x001845d3
DIVSD XMM1,qword ptr [0x003f9600]
JMP 0x001845fb
MOV RDX,RAX
SHR RDX,0x1
AND EAX,0x1
OR RDX,RAX
PXOR XMM0,XMM0
CVTSI2SD XMM0,RDX
ADDSD XMM0,XMM0
JMP 0x00184634
CALL 0x0014c5c0
(translation_unit "undefined4 FUN_00184488(long param_1,long param_2,double *param_3,undefined8 param_4)\n\n{\n  bool bVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  double *pdVar7;\n  ulong uVar8;\n  long lVar9;\n  long lVar10;\n  long lVar11;\n  ulong uVar12;\n  long in_FS_OFFSET;\n  double dVar13;\n  double dVar14;\n  long local_98;\n  long local_90;\n  double *local_88;\n  undefined8 local_80;\n  undefined8 local_78;\n  undefined8 local_70;\n  undefined8 local_68;\n  ulong local_60;\n  ulong local_58;\n  double local_50;\n  undefined4 local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  uVar8 = *(ulong *)(param_1 + 0x28);\n  if (*(ulong *)(param_1 + 0x28) <= *(ulong *)(param_2 + 0x28)) {\n    uVar8 = *(ulong *)(param_2 + 0x28);\n  }\n  uVar12 = *(ulong *)(param_1 + 0x20);\n  if (*(ulong *)(param_1 + 0x20) <= *(ulong *)(param_2 + 0x20)) {\n    uVar12 = *(ulong *)(param_2 + 0x20);\n  }\n  uVar4 = AcquireVirtualCacheView(param_1,param_4);\n  uVar5 = AcquireVirtualCacheView(param_2,param_4);\n  iVar3 = GetImagePixelCacheType(param_1);\n  if (((iVar3 == 4) || (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)) &&\n     ((iVar3 = GetImagePixelCacheType(param_1), iVar3 == 4 ||\n      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)))) {\n    lVar10 = GetMagickResourceLimit(7);\n    uVar6 = uVar8 + 0x3f;\n    if (-1 < (long)uVar8) {\n      uVar6 = uVar8;\n    }\n    lVar11 = (long)uVar6 >> 6;\n    bVar1 = 0x7f < (long)uVar8;\n    if (lVar10 < lVar11) {\n      lVar10 = GetMagickResourceLimit(7);\n      bVar1 = 1 < lVar10;\n    }\n    lVar10 = 1;\n    if ((bVar1) && (lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11)) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }\n  else {\n    uVar6 = GetMagickResourceLimit(7);\n    if (uVar6 < 2) {\n      uVar6 = GetMagickResourceLimit(7);\n      lVar10 = 1;\n      if (uVar6 < 2) goto LAB_0018453b;\n    }\n    uVar6 = GetMagickResourceLimit(7);\n    lVar10 = 2;\n    if (uVar6 < 2) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }\nLAB_0018453b:\n  local_50 = 0.0;\n  local_68 = 0;\n  local_48 = 1;\n  local_98 = param_1;\n  local_90 = param_2;\n  local_88 = param_3;\n  local_80 = param_4;\n  local_78 = uVar4;\n  local_70 = uVar5;\n  local_60 = uVar12;\n  local_58 = uVar8;\n  GOMP_parallel(FUN_00186a2a,&local_98,lVar10,0);\n  uVar2 = local_48;\n  dVar14 = local_50;\n  DestroyCacheView(uVar5);\n  DestroyCacheView(uVar4);\n  dVar13 = DAT_003f9c68;\n  if (0.0 <= dVar14) {\n    dVar13 = DAT_003f9608;\n  }\n  if (dVar14 * dVar13 < DAT_003f9600) {\n    dVar14 = dVar13 / DAT_003f9600;\n  }\n  else {\n    dVar14 = DAT_003f9608 / dVar14;\n  }\n  pdVar7 = param_3;\n  do {\n    *pdVar7 = dVar14 * *pdVar7;\n    pdVar7 = pdVar7 + 1;\n  } while (pdVar7 != param_3 + 0x41);\n  uVar8 = FUN_001841bc(param_1);\n  param_3[0x40] = param_3[0x40] / (double)uVar8;\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}\n\n" (function_definition "undefined4 FUN_00184488(long param_1,long param_2,double *param_3,undefined8 param_4)\n\n{\n  bool bVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  double *pdVar7;\n  ulong uVar8;\n  long lVar9;\n  long lVar10;\n  long lVar11;\n  ulong uVar12;\n  long in_FS_OFFSET;\n  double dVar13;\n  double dVar14;\n  long local_98;\n  long local_90;\n  double *local_88;\n  undefined8 local_80;\n  undefined8 local_78;\n  undefined8 local_70;\n  undefined8 local_68;\n  ulong local_60;\n  ulong local_58;\n  double local_50;\n  undefined4 local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  uVar8 = *(ulong *)(param_1 + 0x28);\n  if (*(ulong *)(param_1 + 0x28) <= *(ulong *)(param_2 + 0x28)) {\n    uVar8 = *(ulong *)(param_2 + 0x28);\n  }\n  uVar12 = *(ulong *)(param_1 + 0x20);\n  if (*(ulong *)(param_1 + 0x20) <= *(ulong *)(param_2 + 0x20)) {\n    uVar12 = *(ulong *)(param_2 + 0x20);\n  }\n  uVar4 = AcquireVirtualCacheView(param_1,param_4);\n  uVar5 = AcquireVirtualCacheView(param_2,param_4);\n  iVar3 = GetImagePixelCacheType(param_1);\n  if (((iVar3 == 4) || (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)) &&\n     ((iVar3 = GetImagePixelCacheType(param_1), iVar3 == 4 ||\n      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)))) {\n    lVar10 = GetMagickResourceLimit(7);\n    uVar6 = uVar8 + 0x3f;\n    if (-1 < (long)uVar8) {\n      uVar6 = uVar8;\n    }\n    lVar11 = (long)uVar6 >> 6;\n    bVar1 = 0x7f < (long)uVar8;\n    if (lVar10 < lVar11) {\n      lVar10 = GetMagickResourceLimit(7);\n      bVar1 = 1 < lVar10;\n    }\n    lVar10 = 1;\n    if ((bVar1) && (lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11)) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }\n  else {\n    uVar6 = GetMagickResourceLimit(7);\n    if (uVar6 < 2) {\n      uVar6 = GetMagickResourceLimit(7);\n      lVar10 = 1;\n      if (uVar6 < 2) goto LAB_0018453b;\n    }\n    uVar6 = GetMagickResourceLimit(7);\n    lVar10 = 2;\n    if (uVar6 < 2) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }\nLAB_0018453b:\n  local_50 = 0.0;\n  local_68 = 0;\n  local_48 = 1;\n  local_98 = param_1;\n  local_90 = param_2;\n  local_88 = param_3;\n  local_80 = param_4;\n  local_78 = uVar4;\n  local_70 = uVar5;\n  local_60 = uVar12;\n  local_58 = uVar8;\n  GOMP_parallel(FUN_00186a2a,&local_98,lVar10,0);\n  uVar2 = local_48;\n  dVar14 = local_50;\n  DestroyCacheView(uVar5);\n  DestroyCacheView(uVar4);\n  dVar13 = DAT_003f9c68;\n  if (0.0 <= dVar14) {\n    dVar13 = DAT_003f9608;\n  }\n  if (dVar14 * dVar13 < DAT_003f9600) {\n    dVar14 = dVar13 / DAT_003f9600;\n  }\n  else {\n    dVar14 = DAT_003f9608 / dVar14;\n  }\n  pdVar7 = param_3;\n  do {\n    *pdVar7 = dVar14 * *pdVar7;\n    pdVar7 = pdVar7 + 1;\n  } while (pdVar7 != param_3 + 0x41);\n  uVar8 = FUN_001841bc(param_1);\n  param_3[0x40] = param_3[0x40] / (double)uVar8;\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" type_identifier (function_declarator "FUN_00184488(long param_1,long param_2,double *param_3,undefined8 param_4)" identifier (parameter_list "(long param_1,long param_2,double *param_3,undefined8 param_4)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "double *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined8 param_4" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  double *pdVar7;\n  ulong uVar8;\n  long lVar9;\n  long lVar10;\n  long lVar11;\n  ulong uVar12;\n  long in_FS_OFFSET;\n  double dVar13;\n  double dVar14;\n  long local_98;\n  long local_90;\n  double *local_88;\n  undefined8 local_80;\n  undefined8 local_78;\n  undefined8 local_70;\n  undefined8 local_68;\n  ulong local_60;\n  ulong local_58;\n  double local_50;\n  undefined4 local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  uVar8 = *(ulong *)(param_1 + 0x28);\n  if (*(ulong *)(param_1 + 0x28) <= *(ulong *)(param_2 + 0x28)) {\n    uVar8 = *(ulong *)(param_2 + 0x28);\n  }\n  uVar12 = *(ulong *)(param_1 + 0x20);\n  if (*(ulong *)(param_1 + 0x20) <= *(ulong *)(param_2 + 0x20)) {\n    uVar12 = *(ulong *)(param_2 + 0x20);\n  }\n  uVar4 = AcquireVirtualCacheView(param_1,param_4);\n  uVar5 = AcquireVirtualCacheView(param_2,param_4);\n  iVar3 = GetImagePixelCacheType(param_1);\n  if (((iVar3 == 4) || (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)) &&\n     ((iVar3 = GetImagePixelCacheType(param_1), iVar3 == 4 ||\n      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)))) {\n    lVar10 = GetMagickResourceLimit(7);\n    uVar6 = uVar8 + 0x3f;\n    if (-1 < (long)uVar8) {\n      uVar6 = uVar8;\n    }\n    lVar11 = (long)uVar6 >> 6;\n    bVar1 = 0x7f < (long)uVar8;\n    if (lVar10 < lVar11) {\n      lVar10 = GetMagickResourceLimit(7);\n      bVar1 = 1 < lVar10;\n    }\n    lVar10 = 1;\n    if ((bVar1) && (lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11)) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }\n  else {\n    uVar6 = GetMagickResourceLimit(7);\n    if (uVar6 < 2) {\n      uVar6 = GetMagickResourceLimit(7);\n      lVar10 = 1;\n      if (uVar6 < 2) goto LAB_0018453b;\n    }\n    uVar6 = GetMagickResourceLimit(7);\n    lVar10 = 2;\n    if (uVar6 < 2) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }\nLAB_0018453b:\n  local_50 = 0.0;\n  local_68 = 0;\n  local_48 = 1;\n  local_98 = param_1;\n  local_90 = param_2;\n  local_88 = param_3;\n  local_80 = param_4;\n  local_78 = uVar4;\n  local_70 = uVar5;\n  local_60 = uVar12;\n  local_58 = uVar8;\n  GOMP_parallel(FUN_00186a2a,&local_98,lVar10,0);\n  uVar2 = local_48;\n  dVar14 = local_50;\n  DestroyCacheView(uVar5);\n  DestroyCacheView(uVar4);\n  dVar13 = DAT_003f9c68;\n  if (0.0 <= dVar14) {\n    dVar13 = DAT_003f9608;\n  }\n  if (dVar14 * dVar13 < DAT_003f9600) {\n    dVar14 = dVar13 / DAT_003f9600;\n  }\n  else {\n    dVar14 = DAT_003f9608 / dVar14;\n  }\n  pdVar7 = param_3;\n  do {\n    *pdVar7 = dVar14 * *pdVar7;\n    pdVar7 = pdVar7 + 1;\n  } while (pdVar7 != param_3 + 0x41);\n  uVar8 = FUN_001841bc(param_1);\n  param_3[0x40] = param_3[0x40] / (double)uVar8;\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "double *pdVar7;" primitive_type (pointer_declarator "*pdVar7" * identifier) ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "double dVar13;" primitive_type identifier ;) (declaration "double dVar14;" primitive_type identifier ;) (declaration "long local_98;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_90;" (sized_type_specifier "long" long) identifier ;) (declaration "double *local_88;" primitive_type (pointer_declarator "*local_88" * identifier) ;) (declaration "undefined8 local_80;" type_identifier identifier ;) (declaration "undefined8 local_78;" type_identifier identifier ;) (declaration "undefined8 local_70;" type_identifier identifier ;) (declaration "undefined8 local_68;" type_identifier identifier ;) (declaration "ulong local_60;" type_identifier identifier ;) (declaration "ulong local_58;" type_identifier identifier ;) (declaration "double local_50;" primitive_type identifier ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = *(ulong *)(param_1 + 0x28);" (assignment_expression "uVar8 = *(ulong *)(param_1 + 0x28)" identifier = (pointer_expression "*(ulong *)(param_1 + 0x28)" * (cast_expression "(ulong *)(param_1 + 0x28)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (*(ulong *)(param_1 + 0x28) <= *(ulong *)(param_2 + 0x28)) {\n    uVar8 = *(ulong *)(param_2 + 0x28);\n  }" if (parenthesized_expression "(*(ulong *)(param_1 + 0x28) <= *(ulong *)(param_2 + 0x28))" ( (binary_expression "*(ulong *)(param_1 + 0x28) <= *(ulong *)(param_2 + 0x28)" (pointer_expression "*(ulong *)(param_1 + 0x28)" * (cast_expression "(ulong *)(param_1 + 0x28)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) <= (pointer_expression "*(ulong *)(param_2 + 0x28)" * (cast_expression "(ulong *)(param_2 + 0x28)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    uVar8 = *(ulong *)(param_2 + 0x28);\n  }" { (expression_statement "uVar8 = *(ulong *)(param_2 + 0x28);" (assignment_expression "uVar8 = *(ulong *)(param_2 + 0x28)" identifier = (pointer_expression "*(ulong *)(param_2 + 0x28)" * (cast_expression "(ulong *)(param_2 + 0x28)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) ))))) ;) })) (expression_statement "uVar12 = *(ulong *)(param_1 + 0x20);" (assignment_expression "uVar12 = *(ulong *)(param_1 + 0x20)" identifier = (pointer_expression "*(ulong *)(param_1 + 0x20)" * (cast_expression "(ulong *)(param_1 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (*(ulong *)(param_1 + 0x20) <= *(ulong *)(param_2 + 0x20)) {\n    uVar12 = *(ulong *)(param_2 + 0x20);\n  }" if (parenthesized_expression "(*(ulong *)(param_1 + 0x20) <= *(ulong *)(param_2 + 0x20))" ( (binary_expression "*(ulong *)(param_1 + 0x20) <= *(ulong *)(param_2 + 0x20)" (pointer_expression "*(ulong *)(param_1 + 0x20)" * (cast_expression "(ulong *)(param_1 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) <= (pointer_expression "*(ulong *)(param_2 + 0x20)" * (cast_expression "(ulong *)(param_2 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) ))))) )) (compound_statement "{\n    uVar12 = *(ulong *)(param_2 + 0x20);\n  }" { (expression_statement "uVar12 = *(ulong *)(param_2 + 0x20);" (assignment_expression "uVar12 = *(ulong *)(param_2 + 0x20)" identifier = (pointer_expression "*(ulong *)(param_2 + 0x20)" * (cast_expression "(ulong *)(param_2 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) ))))) ;) })) (expression_statement "uVar4 = AcquireVirtualCacheView(param_1,param_4);" (assignment_expression "uVar4 = AcquireVirtualCacheView(param_1,param_4)" identifier = (call_expression "AcquireVirtualCacheView(param_1,param_4)" identifier (argument_list "(param_1,param_4)" ( identifier , identifier )))) ;) (expression_statement "uVar5 = AcquireVirtualCacheView(param_2,param_4);" (assignment_expression "uVar5 = AcquireVirtualCacheView(param_2,param_4)" identifier = (call_expression "AcquireVirtualCacheView(param_2,param_4)" identifier (argument_list "(param_2,param_4)" ( identifier , identifier )))) ;) (expression_statement "iVar3 = GetImagePixelCacheType(param_1);" (assignment_expression "iVar3 = GetImagePixelCacheType(param_1)" identifier = (call_expression "GetImagePixelCacheType(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (((iVar3 == 4) || (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)) &&\n     ((iVar3 = GetImagePixelCacheType(param_1), iVar3 == 4 ||\n      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)))) {\n    lVar10 = GetMagickResourceLimit(7);\n    uVar6 = uVar8 + 0x3f;\n    if (-1 < (long)uVar8) {\n      uVar6 = uVar8;\n    }\n    lVar11 = (long)uVar6 >> 6;\n    bVar1 = 0x7f < (long)uVar8;\n    if (lVar10 < lVar11) {\n      lVar10 = GetMagickResourceLimit(7);\n      bVar1 = 1 < lVar10;\n    }\n    lVar10 = 1;\n    if ((bVar1) && (lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11)) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }\n  else {\n    uVar6 = GetMagickResourceLimit(7);\n    if (uVar6 < 2) {\n      uVar6 = GetMagickResourceLimit(7);\n      lVar10 = 1;\n      if (uVar6 < 2) goto LAB_0018453b;\n    }\n    uVar6 = GetMagickResourceLimit(7);\n    lVar10 = 2;\n    if (uVar6 < 2) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }" if (parenthesized_expression "(((iVar3 == 4) || (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)) &&\n     ((iVar3 = GetImagePixelCacheType(param_1), iVar3 == 4 ||\n      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3))))" ( (binary_expression "((iVar3 == 4) || (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)) &&\n     ((iVar3 = GetImagePixelCacheType(param_1), iVar3 == 4 ||\n      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)))" (parenthesized_expression "((iVar3 == 4) || (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3))" ( (binary_expression "(iVar3 == 4) || (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)" (parenthesized_expression "(iVar3 == 4)" ( (binary_expression "iVar3 == 4" identifier == number_literal) )) || (parenthesized_expression "(iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)" ( (comma_expression "iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3" (assignment_expression "iVar3 = GetImagePixelCacheType(param_1)" identifier = (call_expression "GetImagePixelCacheType(param_1)" identifier (argument_list "(param_1)" ( identifier )))) , (binary_expression "iVar3 == 3" identifier == number_literal)) ))) )) && (parenthesized_expression "((iVar3 = GetImagePixelCacheType(param_1), iVar3 == 4 ||\n      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)))" ( (parenthesized_expression "(iVar3 = GetImagePixelCacheType(param_1), iVar3 == 4 ||\n      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3))" ( (comma_expression "iVar3 = GetImagePixelCacheType(param_1), iVar3 == 4 ||\n      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)" (assignment_expression "iVar3 = GetImagePixelCacheType(param_1)" identifier = (call_expression "GetImagePixelCacheType(param_1)" identifier (argument_list "(param_1)" ( identifier )))) , (binary_expression "iVar3 == 4 ||\n      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)" (binary_expression "iVar3 == 4" identifier == number_literal) || (parenthesized_expression "(iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)" ( (comma_expression "iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3" (assignment_expression "iVar3 = GetImagePixelCacheType(param_1)" identifier = (call_expression "GetImagePixelCacheType(param_1)" identifier (argument_list "(param_1)" ( identifier )))) , (binary_expression "iVar3 == 3" identifier == number_literal)) )))) )) ))) )) (compound_statement "{\n    lVar10 = GetMagickResourceLimit(7);\n    uVar6 = uVar8 + 0x3f;\n    if (-1 < (long)uVar8) {\n      uVar6 = uVar8;\n    }\n    lVar11 = (long)uVar6 >> 6;\n    bVar1 = 0x7f < (long)uVar8;\n    if (lVar10 < lVar11) {\n      lVar10 = GetMagickResourceLimit(7);\n      bVar1 = 1 < lVar10;\n    }\n    lVar10 = 1;\n    if ((bVar1) && (lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11)) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }" { (expression_statement "lVar10 = GetMagickResourceLimit(7);" (assignment_expression "lVar10 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) ;) (expression_statement "uVar6 = uVar8 + 0x3f;" (assignment_expression "uVar6 = uVar8 + 0x3f" identifier = (binary_expression "uVar8 + 0x3f" identifier + number_literal)) ;) (if_statement "if (-1 < (long)uVar8) {\n      uVar6 = uVar8;\n    }" if (parenthesized_expression "(-1 < (long)uVar8)" ( (binary_expression "-1 < (long)uVar8" number_literal < (cast_expression "(long)uVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n      uVar6 = uVar8;\n    }" { (expression_statement "uVar6 = uVar8;" (assignment_expression "uVar6 = uVar8" identifier = identifier) ;) })) (expression_statement "lVar11 = (long)uVar6 >> 6;" (assignment_expression "lVar11 = (long)uVar6 >> 6" identifier = (binary_expression "(long)uVar6 >> 6" (cast_expression "(long)uVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal)) ;) (expression_statement "bVar1 = 0x7f < (long)uVar8;" (assignment_expression "bVar1 = 0x7f < (long)uVar8" identifier = (binary_expression "0x7f < (long)uVar8" number_literal < (cast_expression "(long)uVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if (lVar10 < lVar11) {\n      lVar10 = GetMagickResourceLimit(7);\n      bVar1 = 1 < lVar10;\n    }" if (parenthesized_expression "(lVar10 < lVar11)" ( (binary_expression "lVar10 < lVar11" identifier < identifier) )) (compound_statement "{\n      lVar10 = GetMagickResourceLimit(7);\n      bVar1 = 1 < lVar10;\n    }" { (expression_statement "lVar10 = GetMagickResourceLimit(7);" (assignment_expression "lVar10 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) ;) (expression_statement "bVar1 = 1 < lVar10;" (assignment_expression "bVar1 = 1 < lVar10" identifier = (binary_expression "1 < lVar10" number_literal < identifier)) ;) })) (expression_statement "lVar10 = 1;" (assignment_expression "lVar10 = 1" identifier = number_literal) ;) (if_statement "if ((bVar1) && (lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11)) {\n      lVar10 = GetMagickResourceLimit(7);\n    }" if (parenthesized_expression "((bVar1) && (lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11))" ( (binary_expression "(bVar1) && (lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11)" (parenthesized_expression "(bVar1)" ( identifier )) && (parenthesized_expression "(lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11)" ( (comma_expression "lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11" (assignment_expression "lVar9 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) , (comma_expression "lVar10 = lVar11, lVar9 < lVar11" (assignment_expression "lVar10 = lVar11" identifier = identifier) , (binary_expression "lVar9 < lVar11" identifier < identifier))) ))) )) (compound_statement "{\n      lVar10 = GetMagickResourceLimit(7);\n    }" { (expression_statement "lVar10 = GetMagickResourceLimit(7);" (assignment_expression "lVar10 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) ;) })) }) (else_clause "else {\n    uVar6 = GetMagickResourceLimit(7);\n    if (uVar6 < 2) {\n      uVar6 = GetMagickResourceLimit(7);\n      lVar10 = 1;\n      if (uVar6 < 2) goto LAB_0018453b;\n    }\n    uVar6 = GetMagickResourceLimit(7);\n    lVar10 = 2;\n    if (uVar6 < 2) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }" else (compound_statement "{\n    uVar6 = GetMagickResourceLimit(7);\n    if (uVar6 < 2) {\n      uVar6 = GetMagickResourceLimit(7);\n      lVar10 = 1;\n      if (uVar6 < 2) goto LAB_0018453b;\n    }\n    uVar6 = GetMagickResourceLimit(7);\n    lVar10 = 2;\n    if (uVar6 < 2) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }" { (expression_statement "uVar6 = GetMagickResourceLimit(7);" (assignment_expression "uVar6 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) ;) (if_statement "if (uVar6 < 2) {\n      uVar6 = GetMagickResourceLimit(7);\n      lVar10 = 1;\n      if (uVar6 < 2) goto LAB_0018453b;\n    }" if (parenthesized_expression "(uVar6 < 2)" ( (binary_expression "uVar6 < 2" identifier < number_literal) )) (compound_statement "{\n      uVar6 = GetMagickResourceLimit(7);\n      lVar10 = 1;\n      if (uVar6 < 2) goto LAB_0018453b;\n    }" { (expression_statement "uVar6 = GetMagickResourceLimit(7);" (assignment_expression "uVar6 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) ;) (expression_statement "lVar10 = 1;" (assignment_expression "lVar10 = 1" identifier = number_literal) ;) (if_statement "if (uVar6 < 2) goto LAB_0018453b;" if (parenthesized_expression "(uVar6 < 2)" ( (binary_expression "uVar6 < 2" identifier < number_literal) )) (goto_statement "goto LAB_0018453b;" goto statement_identifier ;)) })) (expression_statement "uVar6 = GetMagickResourceLimit(7);" (assignment_expression "uVar6 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) ;) (expression_statement "lVar10 = 2;" (assignment_expression "lVar10 = 2" identifier = number_literal) ;) (if_statement "if (uVar6 < 2) {\n      lVar10 = GetMagickResourceLimit(7);\n    }" if (parenthesized_expression "(uVar6 < 2)" ( (binary_expression "uVar6 < 2" identifier < number_literal) )) (compound_statement "{\n      lVar10 = GetMagickResourceLimit(7);\n    }" { (expression_statement "lVar10 = GetMagickResourceLimit(7);" (assignment_expression "lVar10 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) ;) })) }))) (labeled_statement "LAB_0018453b:\n  local_50 = 0.0;" statement_identifier : (expression_statement "local_50 = 0.0;" (assignment_expression "local_50 = 0.0" identifier = number_literal) ;)) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" identifier = number_literal) ;) (expression_statement "local_48 = 1;" (assignment_expression "local_48 = 1" identifier = number_literal) ;) (expression_statement "local_98 = param_1;" (assignment_expression "local_98 = param_1" identifier = identifier) ;) (expression_statement "local_90 = param_2;" (assignment_expression "local_90 = param_2" identifier = identifier) ;) (expression_statement "local_88 = param_3;" (assignment_expression "local_88 = param_3" identifier = identifier) ;) (expression_statement "local_80 = param_4;" (assignment_expression "local_80 = param_4" identifier = identifier) ;) (expression_statement "local_78 = uVar4;" (assignment_expression "local_78 = uVar4" identifier = identifier) ;) (expression_statement "local_70 = uVar5;" (assignment_expression "local_70 = uVar5" identifier = identifier) ;) (expression_statement "local_60 = uVar12;" (assignment_expression "local_60 = uVar12" identifier = identifier) ;) (expression_statement "local_58 = uVar8;" (assignment_expression "local_58 = uVar8" identifier = identifier) ;) (expression_statement "GOMP_parallel(FUN_00186a2a,&local_98,lVar10,0);" (call_expression "GOMP_parallel(FUN_00186a2a,&local_98,lVar10,0)" identifier (argument_list "(FUN_00186a2a,&local_98,lVar10,0)" ( identifier , (pointer_expression "&local_98" & identifier) , identifier , number_literal ))) ;) (expression_statement "uVar2 = local_48;" (assignment_expression "uVar2 = local_48" identifier = identifier) ;) (expression_statement "dVar14 = local_50;" (assignment_expression "dVar14 = local_50" identifier = identifier) ;) (expression_statement "DestroyCacheView(uVar5);" (call_expression "DestroyCacheView(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))) ;) (expression_statement "DestroyCacheView(uVar4);" (call_expression "DestroyCacheView(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) (expression_statement "dVar13 = DAT_003f9c68;" (assignment_expression "dVar13 = DAT_003f9c68" identifier = identifier) ;) (if_statement "if (0.0 <= dVar14) {\n    dVar13 = DAT_003f9608;\n  }" if (parenthesized_expression "(0.0 <= dVar14)" ( (binary_expression "0.0 <= dVar14" number_literal <= identifier) )) (compound_statement "{\n    dVar13 = DAT_003f9608;\n  }" { (expression_statement "dVar13 = DAT_003f9608;" (assignment_expression "dVar13 = DAT_003f9608" identifier = identifier) ;) })) (if_statement "if (dVar14 * dVar13 < DAT_003f9600) {\n    dVar14 = dVar13 / DAT_003f9600;\n  }\n  else {\n    dVar14 = DAT_003f9608 / dVar14;\n  }" if (parenthesized_expression "(dVar14 * dVar13 < DAT_003f9600)" ( (binary_expression "dVar14 * dVar13 < DAT_003f9600" (binary_expression "dVar14 * dVar13" identifier * identifier) < identifier) )) (compound_statement "{\n    dVar14 = dVar13 / DAT_003f9600;\n  }" { (expression_statement "dVar14 = dVar13 / DAT_003f9600;" (assignment_expression "dVar14 = dVar13 / DAT_003f9600" identifier = (binary_expression "dVar13 / DAT_003f9600" identifier / identifier)) ;) }) (else_clause "else {\n    dVar14 = DAT_003f9608 / dVar14;\n  }" else (compound_statement "{\n    dVar14 = DAT_003f9608 / dVar14;\n  }" { (expression_statement "dVar14 = DAT_003f9608 / dVar14;" (assignment_expression "dVar14 = DAT_003f9608 / dVar14" identifier = (binary_expression "DAT_003f9608 / dVar14" identifier / identifier)) ;) }))) (expression_statement "pdVar7 = param_3;" (assignment_expression "pdVar7 = param_3" identifier = identifier) ;) (do_statement "do {\n    *pdVar7 = dVar14 * *pdVar7;\n    pdVar7 = pdVar7 + 1;\n  } while (pdVar7 != param_3 + 0x41);" do (compound_statement "{\n    *pdVar7 = dVar14 * *pdVar7;\n    pdVar7 = pdVar7 + 1;\n  }" { (expression_statement "*pdVar7 = dVar14 * *pdVar7;" (assignment_expression "*pdVar7 = dVar14 * *pdVar7" (pointer_expression "*pdVar7" * identifier) = (binary_expression "dVar14 * *pdVar7" identifier * (pointer_expression "*pdVar7" * identifier))) ;) (expression_statement "pdVar7 = pdVar7 + 1;" (assignment_expression "pdVar7 = pdVar7 + 1" identifier = (binary_expression "pdVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pdVar7 != param_3 + 0x41)" ( (binary_expression "pdVar7 != param_3 + 0x41" identifier != (binary_expression "param_3 + 0x41" identifier + number_literal)) )) ;) (expression_statement "uVar8 = FUN_001841bc(param_1);" (assignment_expression "uVar8 = FUN_001841bc(param_1)" identifier = (call_expression "FUN_001841bc(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "param_3[0x40] = param_3[0x40] / (double)uVar8;" (assignment_expression "param_3[0x40] = param_3[0x40] / (double)uVar8" (subscript_expression "param_3[0x40]" identifier [ number_literal ]) = (binary_expression "param_3[0x40] / (double)uVar8" (subscript_expression "param_3[0x40]" identifier [ number_literal ]) / (cast_expression "(double)uVar8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar2;\n  }" if (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return uVar2;\n  }" { (return_statement "return uVar2;" return identifier ;) })) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* 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\nGetMeanAbsoluteDistortion\n          (Image *image,Image *reconstruct_image,double *distortion,ExceptionInfo *exception)\n\n{\n  long lVar1;\n  bool bVar2;\n  double cache_view;\n  MagickBooleanType MVar3;\n  CacheType CVar4;\n  MagickSizeType MVar5;\n  double *pdVar6;\n  size_t sVar7;\n  double dVar8;\n  double dVar9;\n  long in_FS_OFFSET;\n  double dVar10;\n  double channel_distortion [65];\n  \n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  dVar10 = (double)image->rows;\n  if (image->rows <= reconstruct_image->rows) {\n    dVar10 = (double)reconstruct_image->rows;\n  }\n  dVar9 = (double)image->columns;\n  if (image->columns <= reconstruct_image->columns) {\n    dVar9 = (double)reconstruct_image->columns;\n  }\n  channel_distortion[0x31] = 7.85804986857107e-318;\n  channel_distortion[0x33] = (double)AcquireVirtualCacheView(image,exception);\n  channel_distortion[0x31] = 7.8581289190744e-318;\n  channel_distortion[0x34] = (double)AcquireVirtualCacheView(reconstruct_image,exception);\n  channel_distortion[0x31] = 7.85819314760836e-318;\n  CVar4 = GetImagePixelCacheType(image);\n  if (CVar4 == MemoryCache) {\nLAB_00184672:\n    channel_distortion[0x31] = 7.86012000362714e-318;\n    CVar4 = GetImagePixelCacheType(image);\n    if (CVar4 != MemoryCache) {\n      channel_distortion[0x31] = 7.8601842321611e-318;\n      CVar4 = GetImagePixelCacheType(image);\n      if (CVar4 != MapCache) goto LAB_0018450e;\n    }\n    channel_distortion[0x31] = 7.86027810463381e-318;\n    MVar5 = GetMagickResourceLimit(ThreadResource);\n    dVar8 = (double)((long)dVar10 + 0x3f);\n    if (-1 < (long)dVar10) {\n      dVar8 = dVar10;\n    }\n    channel_distortion[0x35] = (double)((long)dVar8 >> 6);\n    bVar2 = 0x7f < (long)dVar10;\n    if ((long)MVar5 < (long)channel_distortion[0x35]) {\n      channel_distortion[0x31] = 7.86101426244611e-318;\n      MVar5 = GetMagickResourceLimit(ThreadResource);\n      bVar2 = 1 < (long)MVar5;\n    }\n    dVar8 = 4.94065645841247e-324;\n    if (bVar2) {\n      channel_distortion[0x31] = 7.86055478139548e-318;\n      MVar5 = GetMagickResourceLimit(ThreadResource);\n      dVar8 = channel_distortion[0x35];\n      if ((long)MVar5 < (long)channel_distortion[0x35]) {\n        channel_distortion[0x31] = 7.86068817911986e-318;\n        dVar8 = (double)GetMagickResourceLimit(ThreadResource);\n      }\n    }\n  }\n  else {\n    channel_distortion[0x31] = 7.85827713876815e-318;\n    CVar4 = GetImagePixelCacheType(image);\n    if (CVar4 == MapCache) goto LAB_00184672;\nLAB_0018450e:\n    channel_distortion[0x31] = 7.85837101124086e-318;\n    MVar5 = GetMagickResourceLimit(ThreadResource);\n    if (MVar5 < 2) {\n      channel_distortion[0x31] = 7.86077711093611e-318;\n      MVar5 = GetMagickResourceLimit(ThreadResource);\n      dVar8 = 4.94065645841247e-324;\n      if (MVar5 < 2) goto LAB_0018453b;\n    }\n    channel_distortion[0x31] = 7.85846982437003e-318;\n    MVar5 = GetMagickResourceLimit(ThreadResource);\n    dVar8 = 9.88131291682493e-324;\n    if (MVar5 < 2) {\n      channel_distortion[0x31] = 7.86092533062986e-318;\n      dVar8 = (double)GetMagickResourceLimit(ThreadResource);\n    }\n  }\nLAB_0018453b:\n  cache_view = channel_distortion[0x34];\n  channel_distortion[0x3f] = 0.0;\n  channel_distortion[0x3b] = channel_distortion[0x34];\n  channel_distortion[0x3a] = channel_distortion[0x33];\n  channel_distortion[0x3c] = 0.0;\n  channel_distortion[0x40]._0_4_ = MagickTrue;\n  channel_distortion[0x31] = 7.85902811854983e-318;\n  channel_distortion[0x36] = (double)image;\n  channel_distortion[0x37] = (double)reconstruct_image;\n  channel_distortion[0x38] = (double)distortion;\n  channel_distortion[0x39] = (double)exception;\n  channel_distortion[0x3d] = dVar9;\n  channel_distortion[0x3e] = dVar10;\n  GOMP_parallel(GetMeanAbsoluteDistortion__omp_fn_3,channel_distortion + 0x36,dVar8,0);\n  MVar3 = channel_distortion[0x40]._0_4_;\n  dVar10 = channel_distortion[0x3f];\n  channel_distortion[0x31] = 7.85911210970963e-318;\n  DestroyCacheView((CacheView *)cache_view);\n  channel_distortion[0x31] = 7.85916151627421e-318;\n  DestroyCacheView((CacheView *)channel_distortion[0x33]);\n  dVar9 = DAT_003f9c68;\n  if (0.0 <= dVar10) {\n    dVar9 = DAT_003f9608;\n  }\n  if (dVar10 * dVar9 < DAT_003f9600) {\n    dVar10 = dVar9 / DAT_003f9600;\n  }\n  else {\n    dVar10 = DAT_003f9608 / dVar10;\n  }\n  pdVar6 = distortion;\n  do {\n    *pdVar6 = dVar10 * *pdVar6;\n    pdVar6 = pdVar6 + 1;\n  } while (pdVar6 != distortion + 0x41);\n  channel_distortion[0x31] = 7.8596852258588e-318;\n  sVar7 = GetImageChannels(image);\n  distortion[0x40] = distortion[0x40] / (double)sVar7;\n  if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return MVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  channel_distortion[0x31] = (double)GetMeanErrorPerPixel;\n  __stack_chk_fail();\n}\n\n" comment comment comment comment comment (function_definition "MagickBooleanType\nGetMeanAbsoluteDistortion\n          (Image *image,Image *reconstruct_image,double *distortion,ExceptionInfo *exception)\n\n{\n  long lVar1;\n  bool bVar2;\n  double cache_view;\n  MagickBooleanType MVar3;\n  CacheType CVar4;\n  MagickSizeType MVar5;\n  double *pdVar6;\n  size_t sVar7;\n  double dVar8;\n  double dVar9;\n  long in_FS_OFFSET;\n  double dVar10;\n  double channel_distortion [65];\n  \n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  dVar10 = (double)image->rows;\n  if (image->rows <= reconstruct_image->rows) {\n    dVar10 = (double)reconstruct_image->rows;\n  }\n  dVar9 = (double)image->columns;\n  if (image->columns <= reconstruct_image->columns) {\n    dVar9 = (double)reconstruct_image->columns;\n  }\n  channel_distortion[0x31] = 7.85804986857107e-318;\n  channel_distortion[0x33] = (double)AcquireVirtualCacheView(image,exception);\n  channel_distortion[0x31] = 7.8581289190744e-318;\n  channel_distortion[0x34] = (double)AcquireVirtualCacheView(reconstruct_image,exception);\n  channel_distortion[0x31] = 7.85819314760836e-318;\n  CVar4 = GetImagePixelCacheType(image);\n  if (CVar4 == MemoryCache) {\nLAB_00184672:\n    channel_distortion[0x31] = 7.86012000362714e-318;\n    CVar4 = GetImagePixelCacheType(image);\n    if (CVar4 != MemoryCache) {\n      channel_distortion[0x31] = 7.8601842321611e-318;\n      CVar4 = GetImagePixelCacheType(image);\n      if (CVar4 != MapCache) goto LAB_0018450e;\n    }\n    channel_distortion[0x31] = 7.86027810463381e-318;\n    MVar5 = GetMagickResourceLimit(ThreadResource);\n    dVar8 = (double)((long)dVar10 + 0x3f);\n    if (-1 < (long)dVar10) {\n      dVar8 = dVar10;\n    }\n    channel_distortion[0x35] = (double)((long)dVar8 >> 6);\n    bVar2 = 0x7f < (long)dVar10;\n    if ((long)MVar5 < (long)channel_distortion[0x35]) {\n      channel_distortion[0x31] = 7.86101426244611e-318;\n      MVar5 = GetMagickResourceLimit(ThreadResource);\n      bVar2 = 1 < (long)MVar5;\n    }\n    dVar8 = 4.94065645841247e-324;\n    if (bVar2) {\n      channel_distortion[0x31] = 7.86055478139548e-318;\n      MVar5 = GetMagickResourceLimit(ThreadResource);\n      dVar8 = channel_distortion[0x35];\n      if ((long)MVar5 < (long)channel_distortion[0x35]) {\n        channel_distortion[0x31] = 7.86068817911986e-318;\n        dVar8 = (double)GetMagickResourceLimit(ThreadResource);\n      }\n    }\n  }\n  else {\n    channel_distortion[0x31] = 7.85827713876815e-318;\n    CVar4 = GetImagePixelCacheType(image);\n    if (CVar4 == MapCache) goto LAB_00184672;\nLAB_0018450e:\n    channel_distortion[0x31] = 7.85837101124086e-318;\n    MVar5 = GetMagickResourceLimit(ThreadResource);\n    if (MVar5 < 2) {\n      channel_distortion[0x31] = 7.86077711093611e-318;\n      MVar5 = GetMagickResourceLimit(ThreadResource);\n      dVar8 = 4.94065645841247e-324;\n      if (MVar5 < 2) goto LAB_0018453b;\n    }\n    channel_distortion[0x31] = 7.85846982437003e-318;\n    MVar5 = GetMagickResourceLimit(ThreadResource);\n    dVar8 = 9.88131291682493e-324;\n    if (MVar5 < 2) {\n      channel_distortion[0x31] = 7.86092533062986e-318;\n      dVar8 = (double)GetMagickResourceLimit(ThreadResource);\n    }\n  }\nLAB_0018453b:\n  cache_view = channel_distortion[0x34];\n  channel_distortion[0x3f] = 0.0;\n  channel_distortion[0x3b] = channel_distortion[0x34];\n  channel_distortion[0x3a] = channel_distortion[0x33];\n  channel_distortion[0x3c] = 0.0;\n  channel_distortion[0x40]._0_4_ = MagickTrue;\n  channel_distortion[0x31] = 7.85902811854983e-318;\n  channel_distortion[0x36] = (double)image;\n  channel_distortion[0x37] = (double)reconstruct_image;\n  channel_distortion[0x38] = (double)distortion;\n  channel_distortion[0x39] = (double)exception;\n  channel_distortion[0x3d] = dVar9;\n  channel_distortion[0x3e] = dVar10;\n  GOMP_parallel(GetMeanAbsoluteDistortion__omp_fn_3,channel_distortion + 0x36,dVar8,0);\n  MVar3 = channel_distortion[0x40]._0_4_;\n  dVar10 = channel_distortion[0x3f];\n  channel_distortion[0x31] = 7.85911210970963e-318;\n  DestroyCacheView((CacheView *)cache_view);\n  channel_distortion[0x31] = 7.85916151627421e-318;\n  DestroyCacheView((CacheView *)channel_distortion[0x33]);\n  dVar9 = DAT_003f9c68;\n  if (0.0 <= dVar10) {\n    dVar9 = DAT_003f9608;\n  }\n  if (dVar10 * dVar9 < DAT_003f9600) {\n    dVar10 = dVar9 / DAT_003f9600;\n  }\n  else {\n    dVar10 = DAT_003f9608 / dVar10;\n  }\n  pdVar6 = distortion;\n  do {\n    *pdVar6 = dVar10 * *pdVar6;\n    pdVar6 = pdVar6 + 1;\n  } while (pdVar6 != distortion + 0x41);\n  channel_distortion[0x31] = 7.8596852258588e-318;\n  sVar7 = GetImageChannels(image);\n  distortion[0x40] = distortion[0x40] / (double)sVar7;\n  if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return MVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  channel_distortion[0x31] = (double)GetMeanErrorPerPixel;\n  __stack_chk_fail();\n}" type_identifier (function_declarator "GetMeanAbsoluteDistortion\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  long lVar1;\n  bool bVar2;\n  double cache_view;\n  MagickBooleanType MVar3;\n  CacheType CVar4;\n  MagickSizeType MVar5;\n  double *pdVar6;\n  size_t sVar7;\n  double dVar8;\n  double dVar9;\n  long in_FS_OFFSET;\n  double dVar10;\n  double channel_distortion [65];\n  \n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  dVar10 = (double)image->rows;\n  if (image->rows <= reconstruct_image->rows) {\n    dVar10 = (double)reconstruct_image->rows;\n  }\n  dVar9 = (double)image->columns;\n  if (image->columns <= reconstruct_image->columns) {\n    dVar9 = (double)reconstruct_image->columns;\n  }\n  channel_distortion[0x31] = 7.85804986857107e-318;\n  channel_distortion[0x33] = (double)AcquireVirtualCacheView(image,exception);\n  channel_distortion[0x31] = 7.8581289190744e-318;\n  channel_distortion[0x34] = (double)AcquireVirtualCacheView(reconstruct_image,exception);\n  channel_distortion[0x31] = 7.85819314760836e-318;\n  CVar4 = GetImagePixelCacheType(image);\n  if (CVar4 == MemoryCache) {\nLAB_00184672:\n    channel_distortion[0x31] = 7.86012000362714e-318;\n    CVar4 = GetImagePixelCacheType(image);\n    if (CVar4 != MemoryCache) {\n      channel_distortion[0x31] = 7.8601842321611e-318;\n      CVar4 = GetImagePixelCacheType(image);\n      if (CVar4 != MapCache) goto LAB_0018450e;\n    }\n    channel_distortion[0x31] = 7.86027810463381e-318;\n    MVar5 = GetMagickResourceLimit(ThreadResource);\n    dVar8 = (double)((long)dVar10 + 0x3f);\n    if (-1 < (long)dVar10) {\n      dVar8 = dVar10;\n    }\n    channel_distortion[0x35] = (double)((long)dVar8 >> 6);\n    bVar2 = 0x7f < (long)dVar10;\n    if ((long)MVar5 < (long)channel_distortion[0x35]) {\n      channel_distortion[0x31] = 7.86101426244611e-318;\n      MVar5 = GetMagickResourceLimit(ThreadResource);\n      bVar2 = 1 < (long)MVar5;\n    }\n    dVar8 = 4.94065645841247e-324;\n    if (bVar2) {\n      channel_distortion[0x31] = 7.86055478139548e-318;\n      MVar5 = GetMagickResourceLimit(ThreadResource);\n      dVar8 = channel_distortion[0x35];\n      if ((long)MVar5 < (long)channel_distortion[0x35]) {\n        channel_distortion[0x31] = 7.86068817911986e-318;\n        dVar8 = (double)GetMagickResourceLimit(ThreadResource);\n      }\n    }\n  }\n  else {\n    channel_distortion[0x31] = 7.85827713876815e-318;\n    CVar4 = GetImagePixelCacheType(image);\n    if (CVar4 == MapCache) goto LAB_00184672;\nLAB_0018450e:\n    channel_distortion[0x31] = 7.85837101124086e-318;\n    MVar5 = GetMagickResourceLimit(ThreadResource);\n    if (MVar5 < 2) {\n      channel_distortion[0x31] = 7.86077711093611e-318;\n      MVar5 = GetMagickResourceLimit(ThreadResource);\n      dVar8 = 4.94065645841247e-324;\n      if (MVar5 < 2) goto LAB_0018453b;\n    }\n    channel_distortion[0x31] = 7.85846982437003e-318;\n    MVar5 = GetMagickResourceLimit(ThreadResource);\n    dVar8 = 9.88131291682493e-324;\n    if (MVar5 < 2) {\n      channel_distortion[0x31] = 7.86092533062986e-318;\n      dVar8 = (double)GetMagickResourceLimit(ThreadResource);\n    }\n  }\nLAB_0018453b:\n  cache_view = channel_distortion[0x34];\n  channel_distortion[0x3f] = 0.0;\n  channel_distortion[0x3b] = channel_distortion[0x34];\n  channel_distortion[0x3a] = channel_distortion[0x33];\n  channel_distortion[0x3c] = 0.0;\n  channel_distortion[0x40]._0_4_ = MagickTrue;\n  channel_distortion[0x31] = 7.85902811854983e-318;\n  channel_distortion[0x36] = (double)image;\n  channel_distortion[0x37] = (double)reconstruct_image;\n  channel_distortion[0x38] = (double)distortion;\n  channel_distortion[0x39] = (double)exception;\n  channel_distortion[0x3d] = dVar9;\n  channel_distortion[0x3e] = dVar10;\n  GOMP_parallel(GetMeanAbsoluteDistortion__omp_fn_3,channel_distortion + 0x36,dVar8,0);\n  MVar3 = channel_distortion[0x40]._0_4_;\n  dVar10 = channel_distortion[0x3f];\n  channel_distortion[0x31] = 7.85911210970963e-318;\n  DestroyCacheView((CacheView *)cache_view);\n  channel_distortion[0x31] = 7.85916151627421e-318;\n  DestroyCacheView((CacheView *)channel_distortion[0x33]);\n  dVar9 = DAT_003f9c68;\n  if (0.0 <= dVar10) {\n    dVar9 = DAT_003f9608;\n  }\n  if (dVar10 * dVar9 < DAT_003f9600) {\n    dVar10 = dVar9 / DAT_003f9600;\n  }\n  else {\n    dVar10 = DAT_003f9608 / dVar10;\n  }\n  pdVar6 = distortion;\n  do {\n    *pdVar6 = dVar10 * *pdVar6;\n    pdVar6 = pdVar6 + 1;\n  } while (pdVar6 != distortion + 0x41);\n  channel_distortion[0x31] = 7.8596852258588e-318;\n  sVar7 = GetImageChannels(image);\n  distortion[0x40] = distortion[0x40] / (double)sVar7;\n  if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return MVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  channel_distortion[0x31] = (double)GetMeanErrorPerPixel;\n  __stack_chk_fail();\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "double cache_view;" primitive_type identifier ;) (declaration "MagickBooleanType MVar3;" type_identifier identifier ;) (declaration "CacheType CVar4;" type_identifier identifier ;) (declaration "MagickSizeType MVar5;" type_identifier identifier ;) (declaration "double *pdVar6;" primitive_type (pointer_declarator "*pdVar6" * identifier) ;) (declaration "size_t sVar7;" primitive_type identifier ;) (declaration "double dVar8;" primitive_type identifier ;) (declaration "double dVar9;" primitive_type identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "double dVar10;" primitive_type identifier ;) (declaration "double channel_distortion [65];" primitive_type (array_declarator "channel_distortion [65]" identifier [ number_literal ]) ;) (expression_statement "lVar1 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lVar1 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "dVar10 = (double)image->rows;" (assignment_expression "dVar10 = (double)image->rows" identifier = (cast_expression "(double)image->rows" ( (type_descriptor "double" primitive_type) ) (field_expression "image->rows" identifier -> field_identifier))) ;) (if_statement "if (image->rows <= reconstruct_image->rows) {\n    dVar10 = (double)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    dVar10 = (double)reconstruct_image->rows;\n  }" { (expression_statement "dVar10 = (double)reconstruct_image->rows;" (assignment_expression "dVar10 = (double)reconstruct_image->rows" identifier = (cast_expression "(double)reconstruct_image->rows" ( (type_descriptor "double" primitive_type) ) (field_expression "reconstruct_image->rows" identifier -> field_identifier))) ;) })) (expression_statement "dVar9 = (double)image->columns;" (assignment_expression "dVar9 = (double)image->columns" identifier = (cast_expression "(double)image->columns" ( (type_descriptor "double" primitive_type) ) (field_expression "image->columns" identifier -> field_identifier))) ;) (if_statement "if (image->columns <= reconstruct_image->columns) {\n    dVar9 = (double)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    dVar9 = (double)reconstruct_image->columns;\n  }" { (expression_statement "dVar9 = (double)reconstruct_image->columns;" (assignment_expression "dVar9 = (double)reconstruct_image->columns" identifier = (cast_expression "(double)reconstruct_image->columns" ( (type_descriptor "double" primitive_type) ) (field_expression "reconstruct_image->columns" identifier -> field_identifier))) ;) })) (expression_statement "channel_distortion[0x31] = 7.85804986857107e-318;" (assignment_expression "channel_distortion[0x31] = 7.85804986857107e-318" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "channel_distortion[0x33] = (double)AcquireVirtualCacheView(image,exception);" (assignment_expression "channel_distortion[0x33] = (double)AcquireVirtualCacheView(image,exception)" (subscript_expression "channel_distortion[0x33]" identifier [ number_literal ]) = (cast_expression "(double)AcquireVirtualCacheView(image,exception)" ( (type_descriptor "double" primitive_type) ) (call_expression "AcquireVirtualCacheView(image,exception)" identifier (argument_list "(image,exception)" ( identifier , identifier ))))) ;) (expression_statement "channel_distortion[0x31] = 7.8581289190744e-318;" (assignment_expression "channel_distortion[0x31] = 7.8581289190744e-318" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "channel_distortion[0x34] = (double)AcquireVirtualCacheView(reconstruct_image,exception);" (assignment_expression "channel_distortion[0x34] = (double)AcquireVirtualCacheView(reconstruct_image,exception)" (subscript_expression "channel_distortion[0x34]" identifier [ number_literal ]) = (cast_expression "(double)AcquireVirtualCacheView(reconstruct_image,exception)" ( (type_descriptor "double" primitive_type) ) (call_expression "AcquireVirtualCacheView(reconstruct_image,exception)" identifier (argument_list "(reconstruct_image,exception)" ( identifier , identifier ))))) ;) (expression_statement "channel_distortion[0x31] = 7.85819314760836e-318;" (assignment_expression "channel_distortion[0x31] = 7.85819314760836e-318" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "CVar4 = GetImagePixelCacheType(image);" (assignment_expression "CVar4 = GetImagePixelCacheType(image)" identifier = (call_expression "GetImagePixelCacheType(image)" identifier (argument_list "(image)" ( identifier )))) ;) (if_statement "if (CVar4 == MemoryCache) {\nLAB_00184672:\n    channel_distortion[0x31] = 7.86012000362714e-318;\n    CVar4 = GetImagePixelCacheType(image);\n    if (CVar4 != MemoryCache) {\n      channel_distortion[0x31] = 7.8601842321611e-318;\n      CVar4 = GetImagePixelCacheType(image);\n      if (CVar4 != MapCache) goto LAB_0018450e;\n    }\n    channel_distortion[0x31] = 7.86027810463381e-318;\n    MVar5 = GetMagickResourceLimit(ThreadResource);\n    dVar8 = (double)((long)dVar10 + 0x3f);\n    if (-1 < (long)dVar10) {\n      dVar8 = dVar10;\n    }\n    channel_distortion[0x35] = (double)((long)dVar8 >> 6);\n    bVar2 = 0x7f < (long)dVar10;\n    if ((long)MVar5 < (long)channel_distortion[0x35]) {\n      channel_distortion[0x31] = 7.86101426244611e-318;\n      MVar5 = GetMagickResourceLimit(ThreadResource);\n      bVar2 = 1 < (long)MVar5;\n    }\n    dVar8 = 4.94065645841247e-324;\n    if (bVar2) {\n      channel_distortion[0x31] = 7.86055478139548e-318;\n      MVar5 = GetMagickResourceLimit(ThreadResource);\n      dVar8 = channel_distortion[0x35];\n      if ((long)MVar5 < (long)channel_distortion[0x35]) {\n        channel_distortion[0x31] = 7.86068817911986e-318;\n        dVar8 = (double)GetMagickResourceLimit(ThreadResource);\n      }\n    }\n  }\n  else {\n    channel_distortion[0x31] = 7.85827713876815e-318;\n    CVar4 = GetImagePixelCacheType(image);\n    if (CVar4 == MapCache) goto LAB_00184672;\nLAB_0018450e:\n    channel_distortion[0x31] = 7.85837101124086e-318;\n    MVar5 = GetMagickResourceLimit(ThreadResource);\n    if (MVar5 < 2) {\n      channel_distortion[0x31] = 7.86077711093611e-318;\n      MVar5 = GetMagickResourceLimit(ThreadResource);\n      dVar8 = 4.94065645841247e-324;\n      if (MVar5 < 2) goto LAB_0018453b;\n    }\n    channel_distortion[0x31] = 7.85846982437003e-318;\n    MVar5 = GetMagickResourceLimit(ThreadResource);\n    dVar8 = 9.88131291682493e-324;\n    if (MVar5 < 2) {\n      channel_distortion[0x31] = 7.86092533062986e-318;\n      dVar8 = (double)GetMagickResourceLimit(ThreadResource);\n    }\n  }" if (parenthesized_expression "(CVar4 == MemoryCache)" ( (binary_expression "CVar4 == MemoryCache" identifier == identifier) )) (compound_statement "{\nLAB_00184672:\n    channel_distortion[0x31] = 7.86012000362714e-318;\n    CVar4 = GetImagePixelCacheType(image);\n    if (CVar4 != MemoryCache) {\n      channel_distortion[0x31] = 7.8601842321611e-318;\n      CVar4 = GetImagePixelCacheType(image);\n      if (CVar4 != MapCache) goto LAB_0018450e;\n    }\n    channel_distortion[0x31] = 7.86027810463381e-318;\n    MVar5 = GetMagickResourceLimit(ThreadResource);\n    dVar8 = (double)((long)dVar10 + 0x3f);\n    if (-1 < (long)dVar10) {\n      dVar8 = dVar10;\n    }\n    channel_distortion[0x35] = (double)((long)dVar8 >> 6);\n    bVar2 = 0x7f < (long)dVar10;\n    if ((long)MVar5 < (long)channel_distortion[0x35]) {\n      channel_distortion[0x31] = 7.86101426244611e-318;\n      MVar5 = GetMagickResourceLimit(ThreadResource);\n      bVar2 = 1 < (long)MVar5;\n    }\n    dVar8 = 4.94065645841247e-324;\n    if (bVar2) {\n      channel_distortion[0x31] = 7.86055478139548e-318;\n      MVar5 = GetMagickResourceLimit(ThreadResource);\n      dVar8 = channel_distortion[0x35];\n      if ((long)MVar5 < (long)channel_distortion[0x35]) {\n        channel_distortion[0x31] = 7.86068817911986e-318;\n        dVar8 = (double)GetMagickResourceLimit(ThreadResource);\n      }\n    }\n  }" { (labeled_statement "LAB_00184672:\n    channel_distortion[0x31] = 7.86012000362714e-318;" statement_identifier : (expression_statement "channel_distortion[0x31] = 7.86012000362714e-318;" (assignment_expression "channel_distortion[0x31] = 7.86012000362714e-318" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) = number_literal) ;)) (expression_statement "CVar4 = GetImagePixelCacheType(image);" (assignment_expression "CVar4 = GetImagePixelCacheType(image)" identifier = (call_expression "GetImagePixelCacheType(image)" identifier (argument_list "(image)" ( identifier )))) ;) (if_statement "if (CVar4 != MemoryCache) {\n      channel_distortion[0x31] = 7.8601842321611e-318;\n      CVar4 = GetImagePixelCacheType(image);\n      if (CVar4 != MapCache) goto LAB_0018450e;\n    }" if (parenthesized_expression "(CVar4 != MemoryCache)" ( (binary_expression "CVar4 != MemoryCache" identifier != identifier) )) (compound_statement "{\n      channel_distortion[0x31] = 7.8601842321611e-318;\n      CVar4 = GetImagePixelCacheType(image);\n      if (CVar4 != MapCache) goto LAB_0018450e;\n    }" { (expression_statement "channel_distortion[0x31] = 7.8601842321611e-318;" (assignment_expression "channel_distortion[0x31] = 7.8601842321611e-318" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "CVar4 = GetImagePixelCacheType(image);" (assignment_expression "CVar4 = GetImagePixelCacheType(image)" identifier = (call_expression "GetImagePixelCacheType(image)" identifier (argument_list "(image)" ( identifier )))) ;) (if_statement "if (CVar4 != MapCache) goto LAB_0018450e;" if (parenthesized_expression "(CVar4 != MapCache)" ( (binary_expression "CVar4 != MapCache" identifier != identifier) )) (goto_statement "goto LAB_0018450e;" goto statement_identifier ;)) })) (expression_statement "channel_distortion[0x31] = 7.86027810463381e-318;" (assignment_expression "channel_distortion[0x31] = 7.86027810463381e-318" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "MVar5 = GetMagickResourceLimit(ThreadResource);" (assignment_expression "MVar5 = GetMagickResourceLimit(ThreadResource)" identifier = (call_expression "GetMagickResourceLimit(ThreadResource)" identifier (argument_list "(ThreadResource)" ( identifier )))) ;) (expression_statement "dVar8 = (double)((long)dVar10 + 0x3f);" (assignment_expression "dVar8 = (double)((long)dVar10 + 0x3f)" identifier = (cast_expression "(double)((long)dVar10 + 0x3f)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((long)dVar10 + 0x3f)" ( (binary_expression "(long)dVar10 + 0x3f" (cast_expression "(long)dVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (if_statement "if (-1 < (long)dVar10) {\n      dVar8 = dVar10;\n    }" if (parenthesized_expression "(-1 < (long)dVar10)" ( (binary_expression "-1 < (long)dVar10" number_literal < (cast_expression "(long)dVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n      dVar8 = dVar10;\n    }" { (expression_statement "dVar8 = dVar10;" (assignment_expression "dVar8 = dVar10" identifier = identifier) ;) })) (expression_statement "channel_distortion[0x35] = (double)((long)dVar8 >> 6);" (assignment_expression "channel_distortion[0x35] = (double)((long)dVar8 >> 6)" (subscript_expression "channel_distortion[0x35]" identifier [ number_literal ]) = (cast_expression "(double)((long)dVar8 >> 6)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((long)dVar8 >> 6)" ( (binary_expression "(long)dVar8 >> 6" (cast_expression "(long)dVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal) )))) ;) (expression_statement "bVar2 = 0x7f < (long)dVar10;" (assignment_expression "bVar2 = 0x7f < (long)dVar10" identifier = (binary_expression "0x7f < (long)dVar10" number_literal < (cast_expression "(long)dVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if ((long)MVar5 < (long)channel_distortion[0x35]) {\n      channel_distortion[0x31] = 7.86101426244611e-318;\n      MVar5 = GetMagickResourceLimit(ThreadResource);\n      bVar2 = 1 < (long)MVar5;\n    }" if (parenthesized_expression "((long)MVar5 < (long)channel_distortion[0x35])" ( (binary_expression "(long)MVar5 < (long)channel_distortion[0x35]" (cast_expression "(long)MVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < (cast_expression "(long)channel_distortion[0x35]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (subscript_expression "channel_distortion[0x35]" identifier [ number_literal ]))) )) (compound_statement "{\n      channel_distortion[0x31] = 7.86101426244611e-318;\n      MVar5 = GetMagickResourceLimit(ThreadResource);\n      bVar2 = 1 < (long)MVar5;\n    }" { (expression_statement "channel_distortion[0x31] = 7.86101426244611e-318;" (assignment_expression "channel_distortion[0x31] = 7.86101426244611e-318" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "MVar5 = GetMagickResourceLimit(ThreadResource);" (assignment_expression "MVar5 = GetMagickResourceLimit(ThreadResource)" identifier = (call_expression "GetMagickResourceLimit(ThreadResource)" identifier (argument_list "(ThreadResource)" ( identifier )))) ;) (expression_statement "bVar2 = 1 < (long)MVar5;" (assignment_expression "bVar2 = 1 < (long)MVar5" identifier = (binary_expression "1 < (long)MVar5" number_literal < (cast_expression "(long)MVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) })) (expression_statement "dVar8 = 4.94065645841247e-324;" (assignment_expression "dVar8 = 4.94065645841247e-324" identifier = number_literal) ;) (if_statement "if (bVar2) {\n      channel_distortion[0x31] = 7.86055478139548e-318;\n      MVar5 = GetMagickResourceLimit(ThreadResource);\n      dVar8 = channel_distortion[0x35];\n      if ((long)MVar5 < (long)channel_distortion[0x35]) {\n        channel_distortion[0x31] = 7.86068817911986e-318;\n        dVar8 = (double)GetMagickResourceLimit(ThreadResource);\n      }\n    }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n      channel_distortion[0x31] = 7.86055478139548e-318;\n      MVar5 = GetMagickResourceLimit(ThreadResource);\n      dVar8 = channel_distortion[0x35];\n      if ((long)MVar5 < (long)channel_distortion[0x35]) {\n        channel_distortion[0x31] = 7.86068817911986e-318;\n        dVar8 = (double)GetMagickResourceLimit(ThreadResource);\n      }\n    }" { (expression_statement "channel_distortion[0x31] = 7.86055478139548e-318;" (assignment_expression "channel_distortion[0x31] = 7.86055478139548e-318" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "MVar5 = GetMagickResourceLimit(ThreadResource);" (assignment_expression "MVar5 = GetMagickResourceLimit(ThreadResource)" identifier = (call_expression "GetMagickResourceLimit(ThreadResource)" identifier (argument_list "(ThreadResource)" ( identifier )))) ;) (expression_statement "dVar8 = channel_distortion[0x35];" (assignment_expression "dVar8 = channel_distortion[0x35]" identifier = (subscript_expression "channel_distortion[0x35]" identifier [ number_literal ])) ;) (if_statement "if ((long)MVar5 < (long)channel_distortion[0x35]) {\n        channel_distortion[0x31] = 7.86068817911986e-318;\n        dVar8 = (double)GetMagickResourceLimit(ThreadResource);\n      }" if (parenthesized_expression "((long)MVar5 < (long)channel_distortion[0x35])" ( (binary_expression "(long)MVar5 < (long)channel_distortion[0x35]" (cast_expression "(long)MVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < (cast_expression "(long)channel_distortion[0x35]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (subscript_expression "channel_distortion[0x35]" identifier [ number_literal ]))) )) (compound_statement "{\n        channel_distortion[0x31] = 7.86068817911986e-318;\n        dVar8 = (double)GetMagickResourceLimit(ThreadResource);\n      }" { (expression_statement "channel_distortion[0x31] = 7.86068817911986e-318;" (assignment_expression "channel_distortion[0x31] = 7.86068817911986e-318" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "dVar8 = (double)GetMagickResourceLimit(ThreadResource);" (assignment_expression "dVar8 = (double)GetMagickResourceLimit(ThreadResource)" identifier = (cast_expression "(double)GetMagickResourceLimit(ThreadResource)" ( (type_descriptor "double" primitive_type) ) (call_expression "GetMagickResourceLimit(ThreadResource)" identifier (argument_list "(ThreadResource)" ( identifier ))))) ;) })) })) }) (else_clause "else {\n    channel_distortion[0x31] = 7.85827713876815e-318;\n    CVar4 = GetImagePixelCacheType(image);\n    if (CVar4 == MapCache) goto LAB_00184672;\nLAB_0018450e:\n    channel_distortion[0x31] = 7.85837101124086e-318;\n    MVar5 = GetMagickResourceLimit(ThreadResource);\n    if (MVar5 < 2) {\n      channel_distortion[0x31] = 7.86077711093611e-318;\n      MVar5 = GetMagickResourceLimit(ThreadResource);\n      dVar8 = 4.94065645841247e-324;\n      if (MVar5 < 2) goto LAB_0018453b;\n    }\n    channel_distortion[0x31] = 7.85846982437003e-318;\n    MVar5 = GetMagickResourceLimit(ThreadResource);\n    dVar8 = 9.88131291682493e-324;\n    if (MVar5 < 2) {\n      channel_distortion[0x31] = 7.86092533062986e-318;\n      dVar8 = (double)GetMagickResourceLimit(ThreadResource);\n    }\n  }" else (compound_statement "{\n    channel_distortion[0x31] = 7.85827713876815e-318;\n    CVar4 = GetImagePixelCacheType(image);\n    if (CVar4 == MapCache) goto LAB_00184672;\nLAB_0018450e:\n    channel_distortion[0x31] = 7.85837101124086e-318;\n    MVar5 = GetMagickResourceLimit(ThreadResource);\n    if (MVar5 < 2) {\n      channel_distortion[0x31] = 7.86077711093611e-318;\n      MVar5 = GetMagickResourceLimit(ThreadResource);\n      dVar8 = 4.94065645841247e-324;\n      if (MVar5 < 2) goto LAB_0018453b;\n    }\n    channel_distortion[0x31] = 7.85846982437003e-318;\n    MVar5 = GetMagickResourceLimit(ThreadResource);\n    dVar8 = 9.88131291682493e-324;\n    if (MVar5 < 2) {\n      channel_distortion[0x31] = 7.86092533062986e-318;\n      dVar8 = (double)GetMagickResourceLimit(ThreadResource);\n    }\n  }" { (expression_statement "channel_distortion[0x31] = 7.85827713876815e-318;" (assignment_expression "channel_distortion[0x31] = 7.85827713876815e-318" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "CVar4 = GetImagePixelCacheType(image);" (assignment_expression "CVar4 = GetImagePixelCacheType(image)" identifier = (call_expression "GetImagePixelCacheType(image)" identifier (argument_list "(image)" ( identifier )))) ;) (if_statement "if (CVar4 == MapCache) goto LAB_00184672;" if (parenthesized_expression "(CVar4 == MapCache)" ( (binary_expression "CVar4 == MapCache" identifier == identifier) )) (goto_statement "goto LAB_00184672;" goto statement_identifier ;)) (labeled_statement "LAB_0018450e:\n    channel_distortion[0x31] = 7.85837101124086e-318;" statement_identifier : (expression_statement "channel_distortion[0x31] = 7.85837101124086e-318;" (assignment_expression "channel_distortion[0x31] = 7.85837101124086e-318" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) = number_literal) ;)) (expression_statement "MVar5 = GetMagickResourceLimit(ThreadResource);" (assignment_expression "MVar5 = GetMagickResourceLimit(ThreadResource)" identifier = (call_expression "GetMagickResourceLimit(ThreadResource)" identifier (argument_list "(ThreadResource)" ( identifier )))) ;) (if_statement "if (MVar5 < 2) {\n      channel_distortion[0x31] = 7.86077711093611e-318;\n      MVar5 = GetMagickResourceLimit(ThreadResource);\n      dVar8 = 4.94065645841247e-324;\n      if (MVar5 < 2) goto LAB_0018453b;\n    }" if (parenthesized_expression "(MVar5 < 2)" ( (binary_expression "MVar5 < 2" identifier < number_literal) )) (compound_statement "{\n      channel_distortion[0x31] = 7.86077711093611e-318;\n      MVar5 = GetMagickResourceLimit(ThreadResource);\n      dVar8 = 4.94065645841247e-324;\n      if (MVar5 < 2) goto LAB_0018453b;\n    }" { (expression_statement "channel_distortion[0x31] = 7.86077711093611e-318;" (assignment_expression "channel_distortion[0x31] = 7.86077711093611e-318" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "MVar5 = GetMagickResourceLimit(ThreadResource);" (assignment_expression "MVar5 = GetMagickResourceLimit(ThreadResource)" identifier = (call_expression "GetMagickResourceLimit(ThreadResource)" identifier (argument_list "(ThreadResource)" ( identifier )))) ;) (expression_statement "dVar8 = 4.94065645841247e-324;" (assignment_expression "dVar8 = 4.94065645841247e-324" identifier = number_literal) ;) (if_statement "if (MVar5 < 2) goto LAB_0018453b;" if (parenthesized_expression "(MVar5 < 2)" ( (binary_expression "MVar5 < 2" identifier < number_literal) )) (goto_statement "goto LAB_0018453b;" goto statement_identifier ;)) })) (expression_statement "channel_distortion[0x31] = 7.85846982437003e-318;" (assignment_expression "channel_distortion[0x31] = 7.85846982437003e-318" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "MVar5 = GetMagickResourceLimit(ThreadResource);" (assignment_expression "MVar5 = GetMagickResourceLimit(ThreadResource)" identifier = (call_expression "GetMagickResourceLimit(ThreadResource)" identifier (argument_list "(ThreadResource)" ( identifier )))) ;) (expression_statement "dVar8 = 9.88131291682493e-324;" (assignment_expression "dVar8 = 9.88131291682493e-324" identifier = number_literal) ;) (if_statement "if (MVar5 < 2) {\n      channel_distortion[0x31] = 7.86092533062986e-318;\n      dVar8 = (double)GetMagickResourceLimit(ThreadResource);\n    }" if (parenthesized_expression "(MVar5 < 2)" ( (binary_expression "MVar5 < 2" identifier < number_literal) )) (compound_statement "{\n      channel_distortion[0x31] = 7.86092533062986e-318;\n      dVar8 = (double)GetMagickResourceLimit(ThreadResource);\n    }" { (expression_statement "channel_distortion[0x31] = 7.86092533062986e-318;" (assignment_expression "channel_distortion[0x31] = 7.86092533062986e-318" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "dVar8 = (double)GetMagickResourceLimit(ThreadResource);" (assignment_expression "dVar8 = (double)GetMagickResourceLimit(ThreadResource)" identifier = (cast_expression "(double)GetMagickResourceLimit(ThreadResource)" ( (type_descriptor "double" primitive_type) ) (call_expression "GetMagickResourceLimit(ThreadResource)" identifier (argument_list "(ThreadResource)" ( identifier ))))) ;) })) }))) (labeled_statement "LAB_0018453b:\n  cache_view = channel_distortion[0x34];" statement_identifier : (expression_statement "cache_view = channel_distortion[0x34];" (assignment_expression "cache_view = channel_distortion[0x34]" identifier = (subscript_expression "channel_distortion[0x34]" identifier [ number_literal ])) ;)) (expression_statement "channel_distortion[0x3f] = 0.0;" (assignment_expression "channel_distortion[0x3f] = 0.0" (subscript_expression "channel_distortion[0x3f]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "channel_distortion[0x3b] = channel_distortion[0x34];" (assignment_expression "channel_distortion[0x3b] = channel_distortion[0x34]" (subscript_expression "channel_distortion[0x3b]" identifier [ number_literal ]) = (subscript_expression "channel_distortion[0x34]" identifier [ number_literal ])) ;) (expression_statement "channel_distortion[0x3a] = channel_distortion[0x33];" (assignment_expression "channel_distortion[0x3a] = channel_distortion[0x33]" (subscript_expression "channel_distortion[0x3a]" identifier [ number_literal ]) = (subscript_expression "channel_distortion[0x33]" identifier [ number_literal ])) ;) (expression_statement "channel_distortion[0x3c] = 0.0;" (assignment_expression "channel_distortion[0x3c] = 0.0" (subscript_expression "channel_distortion[0x3c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "channel_distortion[0x40]._0_4_ = MagickTrue;" (assignment_expression "channel_distortion[0x40]._0_4_ = MagickTrue" (field_expression "channel_distortion[0x40]._0_4_" (subscript_expression "channel_distortion[0x40]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "channel_distortion[0x31] = 7.85902811854983e-318;" (assignment_expression "channel_distortion[0x31] = 7.85902811854983e-318" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "channel_distortion[0x36] = (double)image;" (assignment_expression "channel_distortion[0x36] = (double)image" (subscript_expression "channel_distortion[0x36]" identifier [ number_literal ]) = (cast_expression "(double)image" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "channel_distortion[0x37] = (double)reconstruct_image;" (assignment_expression "channel_distortion[0x37] = (double)reconstruct_image" (subscript_expression "channel_distortion[0x37]" identifier [ number_literal ]) = (cast_expression "(double)reconstruct_image" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "channel_distortion[0x38] = (double)distortion;" (assignment_expression "channel_distortion[0x38] = (double)distortion" (subscript_expression "channel_distortion[0x38]" identifier [ number_literal ]) = (cast_expression "(double)distortion" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "channel_distortion[0x39] = (double)exception;" (assignment_expression "channel_distortion[0x39] = (double)exception" (subscript_expression "channel_distortion[0x39]" identifier [ number_literal ]) = (cast_expression "(double)exception" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "channel_distortion[0x3d] = dVar9;" (assignment_expression "channel_distortion[0x3d] = dVar9" (subscript_expression "channel_distortion[0x3d]" identifier [ number_literal ]) = identifier) ;) (expression_statement "channel_distortion[0x3e] = dVar10;" (assignment_expression "channel_distortion[0x3e] = dVar10" (subscript_expression "channel_distortion[0x3e]" identifier [ number_literal ]) = identifier) ;) (expression_statement "GOMP_parallel(GetMeanAbsoluteDistortion__omp_fn_3,channel_distortion + 0x36,dVar8,0);" (call_expression "GOMP_parallel(GetMeanAbsoluteDistortion__omp_fn_3,channel_distortion + 0x36,dVar8,0)" identifier (argument_list "(GetMeanAbsoluteDistortion__omp_fn_3,channel_distortion + 0x36,dVar8,0)" ( identifier , (binary_expression "channel_distortion + 0x36" identifier + number_literal) , identifier , number_literal ))) ;) (expression_statement "MVar3 = channel_distortion[0x40]._0_4_;" (assignment_expression "MVar3 = channel_distortion[0x40]._0_4_" identifier = (field_expression "channel_distortion[0x40]._0_4_" (subscript_expression "channel_distortion[0x40]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "dVar10 = channel_distortion[0x3f];" (assignment_expression "dVar10 = channel_distortion[0x3f]" identifier = (subscript_expression "channel_distortion[0x3f]" identifier [ number_literal ])) ;) (expression_statement "channel_distortion[0x31] = 7.85911210970963e-318;" (assignment_expression "channel_distortion[0x31] = 7.85911210970963e-318" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "DestroyCacheView((CacheView *)cache_view);" (call_expression "DestroyCacheView((CacheView *)cache_view)" identifier (argument_list "((CacheView *)cache_view)" ( (cast_expression "(CacheView *)cache_view" ( (type_descriptor "CacheView *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "channel_distortion[0x31] = 7.85916151627421e-318;" (assignment_expression "channel_distortion[0x31] = 7.85916151627421e-318" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "DestroyCacheView((CacheView *)channel_distortion[0x33]);" (call_expression "DestroyCacheView((CacheView *)channel_distortion[0x33])" identifier (argument_list "((CacheView *)channel_distortion[0x33])" ( (cast_expression "(CacheView *)channel_distortion[0x33]" ( (type_descriptor "CacheView *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "channel_distortion[0x33]" identifier [ number_literal ])) ))) ;) (expression_statement "dVar9 = DAT_003f9c68;" (assignment_expression "dVar9 = DAT_003f9c68" identifier = identifier) ;) (if_statement "if (0.0 <= dVar10) {\n    dVar9 = DAT_003f9608;\n  }" if (parenthesized_expression "(0.0 <= dVar10)" ( (binary_expression "0.0 <= dVar10" number_literal <= identifier) )) (compound_statement "{\n    dVar9 = DAT_003f9608;\n  }" { (expression_statement "dVar9 = DAT_003f9608;" (assignment_expression "dVar9 = DAT_003f9608" identifier = identifier) ;) })) (if_statement "if (dVar10 * dVar9 < DAT_003f9600) {\n    dVar10 = dVar9 / DAT_003f9600;\n  }\n  else {\n    dVar10 = DAT_003f9608 / dVar10;\n  }" if (parenthesized_expression "(dVar10 * dVar9 < DAT_003f9600)" ( (binary_expression "dVar10 * dVar9 < DAT_003f9600" (binary_expression "dVar10 * dVar9" identifier * identifier) < identifier) )) (compound_statement "{\n    dVar10 = dVar9 / DAT_003f9600;\n  }" { (expression_statement "dVar10 = dVar9 / DAT_003f9600;" (assignment_expression "dVar10 = dVar9 / DAT_003f9600" identifier = (binary_expression "dVar9 / DAT_003f9600" identifier / identifier)) ;) }) (else_clause "else {\n    dVar10 = DAT_003f9608 / dVar10;\n  }" else (compound_statement "{\n    dVar10 = DAT_003f9608 / dVar10;\n  }" { (expression_statement "dVar10 = DAT_003f9608 / dVar10;" (assignment_expression "dVar10 = DAT_003f9608 / dVar10" identifier = (binary_expression "DAT_003f9608 / dVar10" identifier / identifier)) ;) }))) (expression_statement "pdVar6 = distortion;" (assignment_expression "pdVar6 = distortion" identifier = identifier) ;) (do_statement "do {\n    *pdVar6 = dVar10 * *pdVar6;\n    pdVar6 = pdVar6 + 1;\n  } while (pdVar6 != distortion + 0x41);" do (compound_statement "{\n    *pdVar6 = dVar10 * *pdVar6;\n    pdVar6 = pdVar6 + 1;\n  }" { (expression_statement "*pdVar6 = dVar10 * *pdVar6;" (assignment_expression "*pdVar6 = dVar10 * *pdVar6" (pointer_expression "*pdVar6" * identifier) = (binary_expression "dVar10 * *pdVar6" identifier * (pointer_expression "*pdVar6" * identifier))) ;) (expression_statement "pdVar6 = pdVar6 + 1;" (assignment_expression "pdVar6 = pdVar6 + 1" identifier = (binary_expression "pdVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pdVar6 != distortion + 0x41)" ( (binary_expression "pdVar6 != distortion + 0x41" identifier != (binary_expression "distortion + 0x41" identifier + number_literal)) )) ;) (expression_statement "channel_distortion[0x31] = 7.8596852258588e-318;" (assignment_expression "channel_distortion[0x31] = 7.8596852258588e-318" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "sVar7 = GetImageChannels(image);" (assignment_expression "sVar7 = GetImageChannels(image)" identifier = (call_expression "GetImageChannels(image)" identifier (argument_list "(image)" ( identifier )))) ;) (expression_statement "distortion[0x40] = distortion[0x40] / (double)sVar7;" (assignment_expression "distortion[0x40] = distortion[0x40] / (double)sVar7" (subscript_expression "distortion[0x40]" identifier [ number_literal ]) = (binary_expression "distortion[0x40] / (double)sVar7" (subscript_expression "distortion[0x40]" identifier [ number_literal ]) / (cast_expression "(double)sVar7" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return MVar3;\n  }" if (parenthesized_expression "(lVar1 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "lVar1 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return MVar3;\n  }" { (return_statement "return MVar3;" return identifier ;) })) comment (expression_statement "channel_distortion[0x31] = (double)GetMeanErrorPerPixel;" (assignment_expression "channel_distortion[0x31] = (double)GetMeanErrorPerPixel" (subscript_expression "channel_distortion[0x31]" identifier [ number_literal ]) = (cast_expression "(double)GetMeanErrorPerPixel" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "undefined4 FUN_00184488(long param_1,long param_2,double *param_3,undefined8 param_4)\n\n{\n  bool bVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  double *pdVar7;\n  ulong uVar8;\n  long lVar9;\n  long lVar10;\n  long lVar11;\n  ulong uVar12;\n  long in_FS_OFFSET;\n  double dVar13;\n  double dVar14;\n  long local_98;\n  long local_90;\n  double *local_88;\n  undefined8 local_80;\n  undefined8 local_78;\n  undefined8 local_70;\n  undefined8 local_68;\n  ulong local_60;\n  ulong local_58;\n  double local_50;\n  undefined4 local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  uVar8 = *(ulong *)(param_1 + 0x28);\n  if (*(ulong *)(param_1 + 0x28) <= *(ulong *)(param_2 + 0x28)) {\n    uVar8 = *(ulong *)(param_2 + 0x28);\n  }\n  uVar12 = *(ulong *)(param_1 + 0x20);\n  if (*(ulong *)(param_1 + 0x20) <= *(ulong *)(param_2 + 0x20)) {\n    uVar12 = *(ulong *)(param_2 + 0x20);\n  }\n  uVar4 = AcquireVirtualCacheView(param_1,param_4);\n  uVar5 = AcquireVirtualCacheView(param_2,param_4);\n  iVar3 = GetImagePixelCacheType(param_1);\n  if (((iVar3 == 4) || (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)) &&\n     ((iVar3 = GetImagePixelCacheType(param_1), iVar3 == 4 ||\n      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)))) {\n    lVar10 = GetMagickResourceLimit(7);\n    uVar6 = uVar8 + 0x3f;\n    if (-1 < (long)uVar8) {\n      uVar6 = uVar8;\n    }\n    lVar11 = (long)uVar6 >> 6;\n    bVar1 = 0x7f < (long)uVar8;\n    if (lVar10 < lVar11) {\n      lVar10 = GetMagickResourceLimit(7);\n      bVar1 = 1 < lVar10;\n    }\n    lVar10 = 1;\n    if ((bVar1) && (lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11)) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }\n  else {\n    uVar6 = GetMagickResourceLimit(7);\n    if (uVar6 < 2) {\n      uVar6 = GetMagickResourceLimit(7);\n      lVar10 = 1;\n      if (uVar6 < 2) goto LAB_0018453b;\n    }\n    uVar6 = GetMagickResourceLimit(7);\n    lVar10 = 2;\n    if (uVar6 < 2) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }\nLAB_0018453b:\n  local_50 = 0.0;\n  local_68 = 0;\n  local_48 = 1;\n  local_98 = param_1;\n  local_90 = param_2;\n  local_88 = param_3;\n  local_80 = param_4;\n  local_78 = uVar4;\n  local_70 = uVar5;\n  local_60 = uVar12;\n  local_58 = uVar8;\n  GOMP_parallel(FUN_00186a2a,&local_98,lVar10,0);\n  uVar2 = local_48;\n  dVar14 = local_50;\n  DestroyCacheView(uVar5);\n  DestroyCacheView(uVar4);\n  dVar13 = DAT_003f9c68;\n  if (0.0 <= dVar14) {\n    dVar13 = DAT_003f9608;\n  }\n  if (dVar14 * dVar13 < DAT_003f9600) {\n    dVar14 = dVar13 / DAT_003f9600;\n  }\n  else {\n    dVar14 = DAT_003f9608 / dVar14;\n  }\n  pdVar7 = param_3;\n  do {\n    *pdVar7 = dVar14 * *pdVar7;\n    pdVar7 = pdVar7 + 1;\n  } while (pdVar7 != param_3 + 0x41);\n  uVar8 = FUN_001841bc(param_1);\n  param_3[0x40] = param_3[0x40] / (double)uVar8;\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar2;\n  }\n                    \n  __stack_chk_fail();\n}\n\n" (function_definition "undefined4 FUN_00184488(long param_1,long param_2,double *param_3,undefined8 param_4)\n\n{\n  bool bVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  double *pdVar7;\n  ulong uVar8;\n  long lVar9;\n  long lVar10;\n  long lVar11;\n  ulong uVar12;\n  long in_FS_OFFSET;\n  double dVar13;\n  double dVar14;\n  long local_98;\n  long local_90;\n  double *local_88;\n  undefined8 local_80;\n  undefined8 local_78;\n  undefined8 local_70;\n  undefined8 local_68;\n  ulong local_60;\n  ulong local_58;\n  double local_50;\n  undefined4 local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  uVar8 = *(ulong *)(param_1 + 0x28);\n  if (*(ulong *)(param_1 + 0x28) <= *(ulong *)(param_2 + 0x28)) {\n    uVar8 = *(ulong *)(param_2 + 0x28);\n  }\n  uVar12 = *(ulong *)(param_1 + 0x20);\n  if (*(ulong *)(param_1 + 0x20) <= *(ulong *)(param_2 + 0x20)) {\n    uVar12 = *(ulong *)(param_2 + 0x20);\n  }\n  uVar4 = AcquireVirtualCacheView(param_1,param_4);\n  uVar5 = AcquireVirtualCacheView(param_2,param_4);\n  iVar3 = GetImagePixelCacheType(param_1);\n  if (((iVar3 == 4) || (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)) &&\n     ((iVar3 = GetImagePixelCacheType(param_1), iVar3 == 4 ||\n      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)))) {\n    lVar10 = GetMagickResourceLimit(7);\n    uVar6 = uVar8 + 0x3f;\n    if (-1 < (long)uVar8) {\n      uVar6 = uVar8;\n    }\n    lVar11 = (long)uVar6 >> 6;\n    bVar1 = 0x7f < (long)uVar8;\n    if (lVar10 < lVar11) {\n      lVar10 = GetMagickResourceLimit(7);\n      bVar1 = 1 < lVar10;\n    }\n    lVar10 = 1;\n    if ((bVar1) && (lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11)) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }\n  else {\n    uVar6 = GetMagickResourceLimit(7);\n    if (uVar6 < 2) {\n      uVar6 = GetMagickResourceLimit(7);\n      lVar10 = 1;\n      if (uVar6 < 2) goto LAB_0018453b;\n    }\n    uVar6 = GetMagickResourceLimit(7);\n    lVar10 = 2;\n    if (uVar6 < 2) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }\nLAB_0018453b:\n  local_50 = 0.0;\n  local_68 = 0;\n  local_48 = 1;\n  local_98 = param_1;\n  local_90 = param_2;\n  local_88 = param_3;\n  local_80 = param_4;\n  local_78 = uVar4;\n  local_70 = uVar5;\n  local_60 = uVar12;\n  local_58 = uVar8;\n  GOMP_parallel(FUN_00186a2a,&local_98,lVar10,0);\n  uVar2 = local_48;\n  dVar14 = local_50;\n  DestroyCacheView(uVar5);\n  DestroyCacheView(uVar4);\n  dVar13 = DAT_003f9c68;\n  if (0.0 <= dVar14) {\n    dVar13 = DAT_003f9608;\n  }\n  if (dVar14 * dVar13 < DAT_003f9600) {\n    dVar14 = dVar13 / DAT_003f9600;\n  }\n  else {\n    dVar14 = DAT_003f9608 / dVar14;\n  }\n  pdVar7 = param_3;\n  do {\n    *pdVar7 = dVar14 * *pdVar7;\n    pdVar7 = pdVar7 + 1;\n  } while (pdVar7 != param_3 + 0x41);\n  uVar8 = FUN_001841bc(param_1);\n  param_3[0x40] = param_3[0x40] / (double)uVar8;\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar2;\n  }\n                    \n  __stack_chk_fail();\n}" type_identifier (function_declarator "FUN_00184488(long param_1,long param_2,double *param_3,undefined8 param_4)" identifier (parameter_list "(long param_1,long param_2,double *param_3,undefined8 param_4)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "double *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined8 param_4" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  double *pdVar7;\n  ulong uVar8;\n  long lVar9;\n  long lVar10;\n  long lVar11;\n  ulong uVar12;\n  long in_FS_OFFSET;\n  double dVar13;\n  double dVar14;\n  long local_98;\n  long local_90;\n  double *local_88;\n  undefined8 local_80;\n  undefined8 local_78;\n  undefined8 local_70;\n  undefined8 local_68;\n  ulong local_60;\n  ulong local_58;\n  double local_50;\n  undefined4 local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  uVar8 = *(ulong *)(param_1 + 0x28);\n  if (*(ulong *)(param_1 + 0x28) <= *(ulong *)(param_2 + 0x28)) {\n    uVar8 = *(ulong *)(param_2 + 0x28);\n  }\n  uVar12 = *(ulong *)(param_1 + 0x20);\n  if (*(ulong *)(param_1 + 0x20) <= *(ulong *)(param_2 + 0x20)) {\n    uVar12 = *(ulong *)(param_2 + 0x20);\n  }\n  uVar4 = AcquireVirtualCacheView(param_1,param_4);\n  uVar5 = AcquireVirtualCacheView(param_2,param_4);\n  iVar3 = GetImagePixelCacheType(param_1);\n  if (((iVar3 == 4) || (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)) &&\n     ((iVar3 = GetImagePixelCacheType(param_1), iVar3 == 4 ||\n      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)))) {\n    lVar10 = GetMagickResourceLimit(7);\n    uVar6 = uVar8 + 0x3f;\n    if (-1 < (long)uVar8) {\n      uVar6 = uVar8;\n    }\n    lVar11 = (long)uVar6 >> 6;\n    bVar1 = 0x7f < (long)uVar8;\n    if (lVar10 < lVar11) {\n      lVar10 = GetMagickResourceLimit(7);\n      bVar1 = 1 < lVar10;\n    }\n    lVar10 = 1;\n    if ((bVar1) && (lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11)) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }\n  else {\n    uVar6 = GetMagickResourceLimit(7);\n    if (uVar6 < 2) {\n      uVar6 = GetMagickResourceLimit(7);\n      lVar10 = 1;\n      if (uVar6 < 2) goto LAB_0018453b;\n    }\n    uVar6 = GetMagickResourceLimit(7);\n    lVar10 = 2;\n    if (uVar6 < 2) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }\nLAB_0018453b:\n  local_50 = 0.0;\n  local_68 = 0;\n  local_48 = 1;\n  local_98 = param_1;\n  local_90 = param_2;\n  local_88 = param_3;\n  local_80 = param_4;\n  local_78 = uVar4;\n  local_70 = uVar5;\n  local_60 = uVar12;\n  local_58 = uVar8;\n  GOMP_parallel(FUN_00186a2a,&local_98,lVar10,0);\n  uVar2 = local_48;\n  dVar14 = local_50;\n  DestroyCacheView(uVar5);\n  DestroyCacheView(uVar4);\n  dVar13 = DAT_003f9c68;\n  if (0.0 <= dVar14) {\n    dVar13 = DAT_003f9608;\n  }\n  if (dVar14 * dVar13 < DAT_003f9600) {\n    dVar14 = dVar13 / DAT_003f9600;\n  }\n  else {\n    dVar14 = DAT_003f9608 / dVar14;\n  }\n  pdVar7 = param_3;\n  do {\n    *pdVar7 = dVar14 * *pdVar7;\n    pdVar7 = pdVar7 + 1;\n  } while (pdVar7 != param_3 + 0x41);\n  uVar8 = FUN_001841bc(param_1);\n  param_3[0x40] = param_3[0x40] / (double)uVar8;\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar2;\n  }\n                    \n  __stack_chk_fail();\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "double *pdVar7;" primitive_type (pointer_declarator "*pdVar7" * identifier) ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "double dVar13;" primitive_type identifier ;) (declaration "double dVar14;" primitive_type identifier ;) (declaration "long local_98;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_90;" (sized_type_specifier "long" long) identifier ;) (declaration "double *local_88;" primitive_type (pointer_declarator "*local_88" * identifier) ;) (declaration "undefined8 local_80;" type_identifier identifier ;) (declaration "undefined8 local_78;" type_identifier identifier ;) (declaration "undefined8 local_70;" type_identifier identifier ;) (declaration "undefined8 local_68;" type_identifier identifier ;) (declaration "ulong local_60;" type_identifier identifier ;) (declaration "ulong local_58;" type_identifier identifier ;) (declaration "double local_50;" primitive_type identifier ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = *(ulong *)(param_1 + 0x28);" (assignment_expression "uVar8 = *(ulong *)(param_1 + 0x28)" identifier = (pointer_expression "*(ulong *)(param_1 + 0x28)" * (cast_expression "(ulong *)(param_1 + 0x28)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (*(ulong *)(param_1 + 0x28) <= *(ulong *)(param_2 + 0x28)) {\n    uVar8 = *(ulong *)(param_2 + 0x28);\n  }" if (parenthesized_expression "(*(ulong *)(param_1 + 0x28) <= *(ulong *)(param_2 + 0x28))" ( (binary_expression "*(ulong *)(param_1 + 0x28) <= *(ulong *)(param_2 + 0x28)" (pointer_expression "*(ulong *)(param_1 + 0x28)" * (cast_expression "(ulong *)(param_1 + 0x28)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) <= (pointer_expression "*(ulong *)(param_2 + 0x28)" * (cast_expression "(ulong *)(param_2 + 0x28)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    uVar8 = *(ulong *)(param_2 + 0x28);\n  }" { (expression_statement "uVar8 = *(ulong *)(param_2 + 0x28);" (assignment_expression "uVar8 = *(ulong *)(param_2 + 0x28)" identifier = (pointer_expression "*(ulong *)(param_2 + 0x28)" * (cast_expression "(ulong *)(param_2 + 0x28)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) ))))) ;) })) (expression_statement "uVar12 = *(ulong *)(param_1 + 0x20);" (assignment_expression "uVar12 = *(ulong *)(param_1 + 0x20)" identifier = (pointer_expression "*(ulong *)(param_1 + 0x20)" * (cast_expression "(ulong *)(param_1 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (*(ulong *)(param_1 + 0x20) <= *(ulong *)(param_2 + 0x20)) {\n    uVar12 = *(ulong *)(param_2 + 0x20);\n  }" if (parenthesized_expression "(*(ulong *)(param_1 + 0x20) <= *(ulong *)(param_2 + 0x20))" ( (binary_expression "*(ulong *)(param_1 + 0x20) <= *(ulong *)(param_2 + 0x20)" (pointer_expression "*(ulong *)(param_1 + 0x20)" * (cast_expression "(ulong *)(param_1 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) <= (pointer_expression "*(ulong *)(param_2 + 0x20)" * (cast_expression "(ulong *)(param_2 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) ))))) )) (compound_statement "{\n    uVar12 = *(ulong *)(param_2 + 0x20);\n  }" { (expression_statement "uVar12 = *(ulong *)(param_2 + 0x20);" (assignment_expression "uVar12 = *(ulong *)(param_2 + 0x20)" identifier = (pointer_expression "*(ulong *)(param_2 + 0x20)" * (cast_expression "(ulong *)(param_2 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) ))))) ;) })) (expression_statement "uVar4 = AcquireVirtualCacheView(param_1,param_4);" (assignment_expression "uVar4 = AcquireVirtualCacheView(param_1,param_4)" identifier = (call_expression "AcquireVirtualCacheView(param_1,param_4)" identifier (argument_list "(param_1,param_4)" ( identifier , identifier )))) ;) (expression_statement "uVar5 = AcquireVirtualCacheView(param_2,param_4);" (assignment_expression "uVar5 = AcquireVirtualCacheView(param_2,param_4)" identifier = (call_expression "AcquireVirtualCacheView(param_2,param_4)" identifier (argument_list "(param_2,param_4)" ( identifier , identifier )))) ;) (expression_statement "iVar3 = GetImagePixelCacheType(param_1);" (assignment_expression "iVar3 = GetImagePixelCacheType(param_1)" identifier = (call_expression "GetImagePixelCacheType(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (((iVar3 == 4) || (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)) &&\n     ((iVar3 = GetImagePixelCacheType(param_1), iVar3 == 4 ||\n      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)))) {\n    lVar10 = GetMagickResourceLimit(7);\n    uVar6 = uVar8 + 0x3f;\n    if (-1 < (long)uVar8) {\n      uVar6 = uVar8;\n    }\n    lVar11 = (long)uVar6 >> 6;\n    bVar1 = 0x7f < (long)uVar8;\n    if (lVar10 < lVar11) {\n      lVar10 = GetMagickResourceLimit(7);\n      bVar1 = 1 < lVar10;\n    }\n    lVar10 = 1;\n    if ((bVar1) && (lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11)) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }\n  else {\n    uVar6 = GetMagickResourceLimit(7);\n    if (uVar6 < 2) {\n      uVar6 = GetMagickResourceLimit(7);\n      lVar10 = 1;\n      if (uVar6 < 2) goto LAB_0018453b;\n    }\n    uVar6 = GetMagickResourceLimit(7);\n    lVar10 = 2;\n    if (uVar6 < 2) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }" if (parenthesized_expression "(((iVar3 == 4) || (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)) &&\n     ((iVar3 = GetImagePixelCacheType(param_1), iVar3 == 4 ||\n      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3))))" ( (binary_expression "((iVar3 == 4) || (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)) &&\n     ((iVar3 = GetImagePixelCacheType(param_1), iVar3 == 4 ||\n      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)))" (parenthesized_expression "((iVar3 == 4) || (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3))" ( (binary_expression "(iVar3 == 4) || (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)" (parenthesized_expression "(iVar3 == 4)" ( (binary_expression "iVar3 == 4" identifier == number_literal) )) || (parenthesized_expression "(iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)" ( (comma_expression "iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3" (assignment_expression "iVar3 = GetImagePixelCacheType(param_1)" identifier = (call_expression "GetImagePixelCacheType(param_1)" identifier (argument_list "(param_1)" ( identifier )))) , (binary_expression "iVar3 == 3" identifier == number_literal)) ))) )) && (parenthesized_expression "((iVar3 = GetImagePixelCacheType(param_1), iVar3 == 4 ||\n      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)))" ( (parenthesized_expression "(iVar3 = GetImagePixelCacheType(param_1), iVar3 == 4 ||\n      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3))" ( (comma_expression "iVar3 = GetImagePixelCacheType(param_1), iVar3 == 4 ||\n      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)" (assignment_expression "iVar3 = GetImagePixelCacheType(param_1)" identifier = (call_expression "GetImagePixelCacheType(param_1)" identifier (argument_list "(param_1)" ( identifier )))) , (binary_expression "iVar3 == 4 ||\n      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)" (binary_expression "iVar3 == 4" identifier == number_literal) || (parenthesized_expression "(iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)" ( (comma_expression "iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3" (assignment_expression "iVar3 = GetImagePixelCacheType(param_1)" identifier = (call_expression "GetImagePixelCacheType(param_1)" identifier (argument_list "(param_1)" ( identifier )))) , (binary_expression "iVar3 == 3" identifier == number_literal)) )))) )) ))) )) (compound_statement "{\n    lVar10 = GetMagickResourceLimit(7);\n    uVar6 = uVar8 + 0x3f;\n    if (-1 < (long)uVar8) {\n      uVar6 = uVar8;\n    }\n    lVar11 = (long)uVar6 >> 6;\n    bVar1 = 0x7f < (long)uVar8;\n    if (lVar10 < lVar11) {\n      lVar10 = GetMagickResourceLimit(7);\n      bVar1 = 1 < lVar10;\n    }\n    lVar10 = 1;\n    if ((bVar1) && (lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11)) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }" { (expression_statement "lVar10 = GetMagickResourceLimit(7);" (assignment_expression "lVar10 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) ;) (expression_statement "uVar6 = uVar8 + 0x3f;" (assignment_expression "uVar6 = uVar8 + 0x3f" identifier = (binary_expression "uVar8 + 0x3f" identifier + number_literal)) ;) (if_statement "if (-1 < (long)uVar8) {\n      uVar6 = uVar8;\n    }" if (parenthesized_expression "(-1 < (long)uVar8)" ( (binary_expression "-1 < (long)uVar8" number_literal < (cast_expression "(long)uVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n      uVar6 = uVar8;\n    }" { (expression_statement "uVar6 = uVar8;" (assignment_expression "uVar6 = uVar8" identifier = identifier) ;) })) (expression_statement "lVar11 = (long)uVar6 >> 6;" (assignment_expression "lVar11 = (long)uVar6 >> 6" identifier = (binary_expression "(long)uVar6 >> 6" (cast_expression "(long)uVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal)) ;) (expression_statement "bVar1 = 0x7f < (long)uVar8;" (assignment_expression "bVar1 = 0x7f < (long)uVar8" identifier = (binary_expression "0x7f < (long)uVar8" number_literal < (cast_expression "(long)uVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if (lVar10 < lVar11) {\n      lVar10 = GetMagickResourceLimit(7);\n      bVar1 = 1 < lVar10;\n    }" if (parenthesized_expression "(lVar10 < lVar11)" ( (binary_expression "lVar10 < lVar11" identifier < identifier) )) (compound_statement "{\n      lVar10 = GetMagickResourceLimit(7);\n      bVar1 = 1 < lVar10;\n    }" { (expression_statement "lVar10 = GetMagickResourceLimit(7);" (assignment_expression "lVar10 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) ;) (expression_statement "bVar1 = 1 < lVar10;" (assignment_expression "bVar1 = 1 < lVar10" identifier = (binary_expression "1 < lVar10" number_literal < identifier)) ;) })) (expression_statement "lVar10 = 1;" (assignment_expression "lVar10 = 1" identifier = number_literal) ;) (if_statement "if ((bVar1) && (lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11)) {\n      lVar10 = GetMagickResourceLimit(7);\n    }" if (parenthesized_expression "((bVar1) && (lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11))" ( (binary_expression "(bVar1) && (lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11)" (parenthesized_expression "(bVar1)" ( identifier )) && (parenthesized_expression "(lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11)" ( (comma_expression "lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11" (assignment_expression "lVar9 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) , (comma_expression "lVar10 = lVar11, lVar9 < lVar11" (assignment_expression "lVar10 = lVar11" identifier = identifier) , (binary_expression "lVar9 < lVar11" identifier < identifier))) ))) )) (compound_statement "{\n      lVar10 = GetMagickResourceLimit(7);\n    }" { (expression_statement "lVar10 = GetMagickResourceLimit(7);" (assignment_expression "lVar10 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) ;) })) }) (else_clause "else {\n    uVar6 = GetMagickResourceLimit(7);\n    if (uVar6 < 2) {\n      uVar6 = GetMagickResourceLimit(7);\n      lVar10 = 1;\n      if (uVar6 < 2) goto LAB_0018453b;\n    }\n    uVar6 = GetMagickResourceLimit(7);\n    lVar10 = 2;\n    if (uVar6 < 2) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }" else (compound_statement "{\n    uVar6 = GetMagickResourceLimit(7);\n    if (uVar6 < 2) {\n      uVar6 = GetMagickResourceLimit(7);\n      lVar10 = 1;\n      if (uVar6 < 2) goto LAB_0018453b;\n    }\n    uVar6 = GetMagickResourceLimit(7);\n    lVar10 = 2;\n    if (uVar6 < 2) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }" { (expression_statement "uVar6 = GetMagickResourceLimit(7);" (assignment_expression "uVar6 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) ;) (if_statement "if (uVar6 < 2) {\n      uVar6 = GetMagickResourceLimit(7);\n      lVar10 = 1;\n      if (uVar6 < 2) goto LAB_0018453b;\n    }" if (parenthesized_expression "(uVar6 < 2)" ( (binary_expression "uVar6 < 2" identifier < number_literal) )) (compound_statement "{\n      uVar6 = GetMagickResourceLimit(7);\n      lVar10 = 1;\n      if (uVar6 < 2) goto LAB_0018453b;\n    }" { (expression_statement "uVar6 = GetMagickResourceLimit(7);" (assignment_expression "uVar6 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) ;) (expression_statement "lVar10 = 1;" (assignment_expression "lVar10 = 1" identifier = number_literal) ;) (if_statement "if (uVar6 < 2) goto LAB_0018453b;" if (parenthesized_expression "(uVar6 < 2)" ( (binary_expression "uVar6 < 2" identifier < number_literal) )) (goto_statement "goto LAB_0018453b;" goto statement_identifier ;)) })) (expression_statement "uVar6 = GetMagickResourceLimit(7);" (assignment_expression "uVar6 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) ;) (expression_statement "lVar10 = 2;" (assignment_expression "lVar10 = 2" identifier = number_literal) ;) (if_statement "if (uVar6 < 2) {\n      lVar10 = GetMagickResourceLimit(7);\n    }" if (parenthesized_expression "(uVar6 < 2)" ( (binary_expression "uVar6 < 2" identifier < number_literal) )) (compound_statement "{\n      lVar10 = GetMagickResourceLimit(7);\n    }" { (expression_statement "lVar10 = GetMagickResourceLimit(7);" (assignment_expression "lVar10 = GetMagickResourceLimit(7)" identifier = (call_expression "GetMagickResourceLimit(7)" identifier (argument_list "(7)" ( number_literal )))) ;) })) }))) (labeled_statement "LAB_0018453b:\n  local_50 = 0.0;" statement_identifier : (expression_statement "local_50 = 0.0;" (assignment_expression "local_50 = 0.0" identifier = number_literal) ;)) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" identifier = number_literal) ;) (expression_statement "local_48 = 1;" (assignment_expression "local_48 = 1" identifier = number_literal) ;) (expression_statement "local_98 = param_1;" (assignment_expression "local_98 = param_1" identifier = identifier) ;) (expression_statement "local_90 = param_2;" (assignment_expression "local_90 = param_2" identifier = identifier) ;) (expression_statement "local_88 = param_3;" (assignment_expression "local_88 = param_3" identifier = identifier) ;) (expression_statement "local_80 = param_4;" (assignment_expression "local_80 = param_4" identifier = identifier) ;) (expression_statement "local_78 = uVar4;" (assignment_expression "local_78 = uVar4" identifier = identifier) ;) (expression_statement "local_70 = uVar5;" (assignment_expression "local_70 = uVar5" identifier = identifier) ;) (expression_statement "local_60 = uVar12;" (assignment_expression "local_60 = uVar12" identifier = identifier) ;) (expression_statement "local_58 = uVar8;" (assignment_expression "local_58 = uVar8" identifier = identifier) ;) (expression_statement "GOMP_parallel(FUN_00186a2a,&local_98,lVar10,0);" (call_expression "GOMP_parallel(FUN_00186a2a,&local_98,lVar10,0)" identifier (argument_list "(FUN_00186a2a,&local_98,lVar10,0)" ( identifier , (pointer_expression "&local_98" & identifier) , identifier , number_literal ))) ;) (expression_statement "uVar2 = local_48;" (assignment_expression "uVar2 = local_48" identifier = identifier) ;) (expression_statement "dVar14 = local_50;" (assignment_expression "dVar14 = local_50" identifier = identifier) ;) (expression_statement "DestroyCacheView(uVar5);" (call_expression "DestroyCacheView(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))) ;) (expression_statement "DestroyCacheView(uVar4);" (call_expression "DestroyCacheView(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) (expression_statement "dVar13 = DAT_003f9c68;" (assignment_expression "dVar13 = DAT_003f9c68" identifier = identifier) ;) (if_statement "if (0.0 <= dVar14) {\n    dVar13 = DAT_003f9608;\n  }" if (parenthesized_expression "(0.0 <= dVar14)" ( (binary_expression "0.0 <= dVar14" number_literal <= identifier) )) (compound_statement "{\n    dVar13 = DAT_003f9608;\n  }" { (expression_statement "dVar13 = DAT_003f9608;" (assignment_expression "dVar13 = DAT_003f9608" identifier = identifier) ;) })) (if_statement "if (dVar14 * dVar13 < DAT_003f9600) {\n    dVar14 = dVar13 / DAT_003f9600;\n  }\n  else {\n    dVar14 = DAT_003f9608 / dVar14;\n  }" if (parenthesized_expression "(dVar14 * dVar13 < DAT_003f9600)" ( (binary_expression "dVar14 * dVar13 < DAT_003f9600" (binary_expression "dVar14 * dVar13" identifier * identifier) < identifier) )) (compound_statement "{\n    dVar14 = dVar13 / DAT_003f9600;\n  }" { (expression_statement "dVar14 = dVar13 / DAT_003f9600;" (assignment_expression "dVar14 = dVar13 / DAT_003f9600" identifier = (binary_expression "dVar13 / DAT_003f9600" identifier / identifier)) ;) }) (else_clause "else {\n    dVar14 = DAT_003f9608 / dVar14;\n  }" else (compound_statement "{\n    dVar14 = DAT_003f9608 / dVar14;\n  }" { (expression_statement "dVar14 = DAT_003f9608 / dVar14;" (assignment_expression "dVar14 = DAT_003f9608 / dVar14" identifier = (binary_expression "DAT_003f9608 / dVar14" identifier / identifier)) ;) }))) (expression_statement "pdVar7 = param_3;" (assignment_expression "pdVar7 = param_3" identifier = identifier) ;) (do_statement "do {\n    *pdVar7 = dVar14 * *pdVar7;\n    pdVar7 = pdVar7 + 1;\n  } while (pdVar7 != param_3 + 0x41);" do (compound_statement "{\n    *pdVar7 = dVar14 * *pdVar7;\n    pdVar7 = pdVar7 + 1;\n  }" { (expression_statement "*pdVar7 = dVar14 * *pdVar7;" (assignment_expression "*pdVar7 = dVar14 * *pdVar7" (pointer_expression "*pdVar7" * identifier) = (binary_expression "dVar14 * *pdVar7" identifier * (pointer_expression "*pdVar7" * identifier))) ;) (expression_statement "pdVar7 = pdVar7 + 1;" (assignment_expression "pdVar7 = pdVar7 + 1" identifier = (binary_expression "pdVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pdVar7 != param_3 + 0x41)" ( (binary_expression "pdVar7 != param_3 + 0x41" identifier != (binary_expression "param_3 + 0x41" identifier + number_literal)) )) ;) (expression_statement "uVar8 = FUN_001841bc(param_1);" (assignment_expression "uVar8 = FUN_001841bc(param_1)" identifier = (call_expression "FUN_001841bc(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "param_3[0x40] = param_3[0x40] / (double)uVar8;" (assignment_expression "param_3[0x40] = param_3[0x40] / (double)uVar8" (subscript_expression "param_3[0x40]" identifier [ number_literal ]) = (binary_expression "param_3[0x40] / (double)uVar8" (subscript_expression "param_3[0x40]" identifier [ number_literal ]) / (cast_expression "(double)uVar8" ( (type_descriptor "double" primitive_type) ) identifier))) ;) (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar2;\n  }" if (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return uVar2;\n  }" { (return_statement "return uVar2;" return identifier ;) })) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (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 (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) 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 (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (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 (sized_type_specifier long)) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT < (cast_expression ( (type_descriptor (sized_type_specifier long)) ) 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)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( IDENT )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT < IDENT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) })) }))) (labeled_statement statement_identifier : (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 (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 ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT * 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 IDENT / IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT * (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + LIT)) )) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "undefined4 FUN_00184488(long param_1,long param_2,double *param_3,undefined8 param_4)\n\n{\n  bool bVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  double *pdVar7;\n  ulong uVar8;\n  long lVar9;\n  long lVar10;\n  long lVar11;\n  ulong uVar12;\n  long in_FS_OFFSET;\n  double dVar13;\n  double dVar14;\n  long local_98;\n  long local_90;\n  double *local_88;\n  undefined8 local_80;\n  undefined8 local_78;\n  undefined8 local_70;\n  undefined8 local_68;\n  ulong local_60;\n  ulong local_58;\n  double local_50;\n  undefined4 local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  uVar8 = *(ulong *)(param_1 + 0x28);\n  if (*(ulong *)(param_1 + 0x28) <= *(ulong *)(param_2 + 0x28)) {\n    uVar8 = *(ulong *)(param_2 + 0x28);\n  }\n  uVar12 = *(ulong *)(param_1 + 0x20);\n  if (*(ulong *)(param_1 + 0x20) <= *(ulong *)(param_2 + 0x20)) {\n    uVar12 = *(ulong *)(param_2 + 0x20);\n  }\n  uVar4 = AcquireVirtualCacheView(param_1,param_4);\n  uVar5 = AcquireVirtualCacheView(param_2,param_4);\n  iVar3 = GetImagePixelCacheType(param_1);\n  if (((iVar3 == 4) || (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)) &&\n     ((iVar3 = GetImagePixelCacheType(param_1), iVar3 == 4 ||\n      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)))) {\n    lVar10 = GetMagickResourceLimit(7);\n    uVar6 = uVar8 + 0x3f;\n    if (-1 < (long)uVar8) {\n      uVar6 = uVar8;\n    }\n    lVar11 = (long)uVar6 >> 6;\n    bVar1 = 0x7f < (long)uVar8;\n    if (lVar10 < lVar11) {\n      lVar10 = GetMagickResourceLimit(7);\n      bVar1 = 1 < lVar10;\n    }\n    lVar10 = 1;\n    if ((bVar1) && (lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11)) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }\n  else {\n    uVar6 = GetMagickResourceLimit(7);\n    if (uVar6 < 2) {\n      uVar6 = GetMagickResourceLimit(7);\n      lVar10 = 1;\n      if (uVar6 < 2) goto LAB_0018453b;\n    }\n    uVar6 = GetMagickResourceLimit(7);\n    lVar10 = 2;\n    if (uVar6 < 2) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }\nLAB_0018453b:\n  local_50 = 0.0;\n  local_68 = 0;\n  local_48 = 1;\n  local_98 = param_1;\n  local_90 = param_2;\n  local_88 = param_3;\n  local_80 = param_4;\n  local_78 = uVar4;\n  local_70 = uVar5;\n  local_60 = uVar12;\n  local_58 = uVar8;\n  GOMP_parallel(FUN_00186a2a,&local_98,lVar10,0);\n  uVar2 = local_48;\n  dVar14 = local_50;\n  DestroyCacheView(uVar5);\n  DestroyCacheView(uVar4);\n  dVar13 = DAT_003f9c68;\n  if (0.0 <= dVar14) {\n    dVar13 = DAT_003f9608;\n  }\n  if (dVar14 * dVar13 < DAT_003f9600) {\n    dVar14 = dVar13 / DAT_003f9600;\n  }\n  else {\n    dVar14 = DAT_003f9608 / dVar14;\n  }\n  pdVar7 = param_3;\n  do {\n    *pdVar7 = dVar14 * *pdVar7;\n    pdVar7 = pdVar7 + 1;\n  } while (pdVar7 != param_3 + 0x41);\n  uVar8 = FUN_001841bc(param_1);\n  param_3[0x40] = param_3[0x40] / (double)uVar8;\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar2;\n  }\n                    \n  __stack_chk_fail();\n}" (type_identifier "undefined4") (function_declarator "FUN_00184488(long param_1,long param_2,double *param_3,undefined8 param_4)" (identifier "FUN_00184488") (parameter_list "(long param_1,long param_2,double *param_3,undefined8 param_4)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "double *param_3" (primitive_type "double") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "undefined8 param_4" (type_identifier "undefined8") (identifier "param_4")) () ")"))) (compound_statement "{\n  bool bVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  double *pdVar7;\n  ulong uVar8;\n  long lVar9;\n  long lVar10;\n  long lVar11;\n  ulong uVar12;\n  long in_FS_OFFSET;\n  double dVar13;\n  double dVar14;\n  long local_98;\n  long local_90;\n  double *local_88;\n  undefined8 local_80;\n  undefined8 local_78;\n  undefined8 local_70;\n  undefined8 local_68;\n  ulong local_60;\n  ulong local_58;\n  double local_50;\n  undefined4 local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  uVar8 = *(ulong *)(param_1 + 0x28);\n  if (*(ulong *)(param_1 + 0x28) <= *(ulong *)(param_2 + 0x28)) {\n    uVar8 = *(ulong *)(param_2 + 0x28);\n  }\n  uVar12 = *(ulong *)(param_1 + 0x20);\n  if (*(ulong *)(param_1 + 0x20) <= *(ulong *)(param_2 + 0x20)) {\n    uVar12 = *(ulong *)(param_2 + 0x20);\n  }\n  uVar4 = AcquireVirtualCacheView(param_1,param_4);\n  uVar5 = AcquireVirtualCacheView(param_2,param_4);\n  iVar3 = GetImagePixelCacheType(param_1);\n  if (((iVar3 == 4) || (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)) &&\n     ((iVar3 = GetImagePixelCacheType(param_1), iVar3 == 4 ||\n      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)))) {\n    lVar10 = GetMagickResourceLimit(7);\n    uVar6 = uVar8 + 0x3f;\n    if (-1 < (long)uVar8) {\n      uVar6 = uVar8;\n    }\n    lVar11 = (long)uVar6 >> 6;\n    bVar1 = 0x7f < (long)uVar8;\n    if (lVar10 < lVar11) {\n      lVar10 = GetMagickResourceLimit(7);\n      bVar1 = 1 < lVar10;\n    }\n    lVar10 = 1;\n    if ((bVar1) && (lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11)) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }\n  else {\n    uVar6 = GetMagickResourceLimit(7);\n    if (uVar6 < 2) {\n      uVar6 = GetMagickResourceLimit(7);\n      lVar10 = 1;\n      if (uVar6 < 2) goto LAB_0018453b;\n    }\n    uVar6 = GetMagickResourceLimit(7);\n    lVar10 = 2;\n    if (uVar6 < 2) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }\nLAB_0018453b:\n  local_50 = 0.0;\n  local_68 = 0;\n  local_48 = 1;\n  local_98 = param_1;\n  local_90 = param_2;\n  local_88 = param_3;\n  local_80 = param_4;\n  local_78 = uVar4;\n  local_70 = uVar5;\n  local_60 = uVar12;\n  local_58 = uVar8;\n  GOMP_parallel(FUN_00186a2a,&local_98,lVar10,0);\n  uVar2 = local_48;\n  dVar14 = local_50;\n  DestroyCacheView(uVar5);\n  DestroyCacheView(uVar4);\n  dVar13 = DAT_003f9c68;\n  if (0.0 <= dVar14) {\n    dVar13 = DAT_003f9608;\n  }\n  if (dVar14 * dVar13 < DAT_003f9600) {\n    dVar14 = dVar13 / DAT_003f9600;\n  }\n  else {\n    dVar14 = DAT_003f9608 / dVar14;\n  }\n  pdVar7 = param_3;\n  do {\n    *pdVar7 = dVar14 * *pdVar7;\n    pdVar7 = pdVar7 + 1;\n  } while (pdVar7 != param_3 + 0x41);\n  uVar8 = FUN_001841bc(param_1);\n  param_3[0x40] = param_3[0x40] / (double)uVar8;\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar2;\n  }\n                    \n  __stack_chk_fail();\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "undefined8 uVar4;" (type_identifier "undefined8") (identifier "uVar4") (; ";")) (declaration "undefined8 uVar5;" (type_identifier "undefined8") (identifier "uVar5") (; ";")) (declaration "ulong uVar6;" (type_identifier "ulong") (identifier "uVar6") (; ";")) (declaration "double *pdVar7;" (primitive_type "double") (pointer_declarator "*pdVar7" (* "*") (identifier "pdVar7")) (; ";")) (declaration "ulong uVar8;" (type_identifier "ulong") (identifier "uVar8") (; ";")) (declaration "long lVar9;" (sized_type_specifier "long" (long "long")) (identifier "lVar9") (; ";")) (declaration "long lVar10;" (sized_type_specifier "long" (long "long")) (identifier "lVar10") (; ";")) (declaration "long lVar11;" (sized_type_specifier "long" (long "long")) (identifier "lVar11") (; ";")) (declaration "ulong uVar12;" (type_identifier "ulong") (identifier "uVar12") (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "double dVar13;" (primitive_type "double") (identifier "dVar13") (; ";")) (declaration "double dVar14;" (primitive_type "double") (identifier "dVar14") (; ";")) (declaration "long local_98;" (sized_type_specifier "long" (long "long")) (identifier "local_98") (; ";")) (declaration "long local_90;" (sized_type_specifier "long" (long "long")) (identifier "local_90") (; ";")) (declaration "double *local_88;" (primitive_type "double") (pointer_declarator "*local_88" (* "*") (identifier "local_88")) (; ";")) (declaration "undefined8 local_80;" (type_identifier "undefined8") (identifier "local_80") (; ";")) (declaration "undefined8 local_78;" (type_identifier "undefined8") (identifier "local_78") (; ";")) (declaration "undefined8 local_70;" (type_identifier "undefined8") (identifier "local_70") (; ";")) (declaration "undefined8 local_68;" (type_identifier "undefined8") (identifier "local_68") (; ";")) (declaration "ulong local_60;" (type_identifier "ulong") (identifier "local_60") (; ";")) (declaration "ulong local_58;" (type_identifier "ulong") (identifier "local_58") (; ";")) (declaration "double local_50;" (primitive_type "double") (identifier "local_50") (; ";")) (declaration "undefined4 local_48;" (type_identifier "undefined4") (identifier "local_48") (; ";")) (declaration "long local_40;" (sized_type_specifier "long" (long "long")) (identifier "local_40") (; ";")) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (= "=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "uVar8 = *(ulong *)(param_1 + 0x28);" (assignment_expression "uVar8 = *(ulong *)(param_1 + 0x28)" (identifier "uVar8") (= "=") (pointer_expression "*(ulong *)(param_1 + 0x28)" (* "*") (cast_expression "(ulong *)(param_1 + 0x28)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if (*(ulong *)(param_1 + 0x28) <= *(ulong *)(param_2 + 0x28)) {\n    uVar8 = *(ulong *)(param_2 + 0x28);\n  }" (if "if") (parenthesized_expression "(*(ulong *)(param_1 + 0x28) <= *(ulong *)(param_2 + 0x28))" (( "(") (binary_expression "*(ulong *)(param_1 + 0x28) <= *(ulong *)(param_2 + 0x28)" (pointer_expression "*(ulong *)(param_1 + 0x28)" (* "*") (cast_expression "(ulong *)(param_1 + 0x28)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (<= "<=") (pointer_expression "*(ulong *)(param_2 + 0x28)" (* "*") (cast_expression "(ulong *)(param_2 + 0x28)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x28)" (( "(") (binary_expression "param_2 + 0x28" (identifier "param_2") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n    uVar8 = *(ulong *)(param_2 + 0x28);\n  }" ({ "{") (expression_statement "uVar8 = *(ulong *)(param_2 + 0x28);" (assignment_expression "uVar8 = *(ulong *)(param_2 + 0x28)" (identifier "uVar8") (= "=") (pointer_expression "*(ulong *)(param_2 + 0x28)" (* "*") (cast_expression "(ulong *)(param_2 + 0x28)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x28)" (( "(") (binary_expression "param_2 + 0x28" (identifier "param_2") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar12 = *(ulong *)(param_1 + 0x20);" (assignment_expression "uVar12 = *(ulong *)(param_1 + 0x20)" (identifier "uVar12") (= "=") (pointer_expression "*(ulong *)(param_1 + 0x20)" (* "*") (cast_expression "(ulong *)(param_1 + 0x20)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if (*(ulong *)(param_1 + 0x20) <= *(ulong *)(param_2 + 0x20)) {\n    uVar12 = *(ulong *)(param_2 + 0x20);\n  }" (if "if") (parenthesized_expression "(*(ulong *)(param_1 + 0x20) <= *(ulong *)(param_2 + 0x20))" (( "(") (binary_expression "*(ulong *)(param_1 + 0x20) <= *(ulong *)(param_2 + 0x20)" (pointer_expression "*(ulong *)(param_1 + 0x20)" (* "*") (cast_expression "(ulong *)(param_1 + 0x20)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (<= "<=") (pointer_expression "*(ulong *)(param_2 + 0x20)" (* "*") (cast_expression "(ulong *)(param_2 + 0x20)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x20)" (( "(") (binary_expression "param_2 + 0x20" (identifier "param_2") (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (compound_statement "{\n    uVar12 = *(ulong *)(param_2 + 0x20);\n  }" ({ "{") (expression_statement "uVar12 = *(ulong *)(param_2 + 0x20);" (assignment_expression "uVar12 = *(ulong *)(param_2 + 0x20)" (identifier "uVar12") (= "=") (pointer_expression "*(ulong *)(param_2 + 0x20)" (* "*") (cast_expression "(ulong *)(param_2 + 0x20)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x20)" (( "(") (binary_expression "param_2 + 0x20" (identifier "param_2") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar4 = AcquireVirtualCacheView(param_1,param_4);" (assignment_expression "uVar4 = AcquireVirtualCacheView(param_1,param_4)" (identifier "uVar4") (= "=") (call_expression "AcquireVirtualCacheView(param_1,param_4)" (identifier "AcquireVirtualCacheView") (argument_list "(param_1,param_4)" (( "(") (identifier "param_1") (, ",") (identifier "param_4") () ")")))) (; ";")) (expression_statement "uVar5 = AcquireVirtualCacheView(param_2,param_4);" (assignment_expression "uVar5 = AcquireVirtualCacheView(param_2,param_4)" (identifier "uVar5") (= "=") (call_expression "AcquireVirtualCacheView(param_2,param_4)" (identifier "AcquireVirtualCacheView") (argument_list "(param_2,param_4)" (( "(") (identifier "param_2") (, ",") (identifier "param_4") () ")")))) (; ";")) (expression_statement "iVar3 = GetImagePixelCacheType(param_1);" (assignment_expression "iVar3 = GetImagePixelCacheType(param_1)" (identifier "iVar3") (= "=") (call_expression "GetImagePixelCacheType(param_1)" (identifier "GetImagePixelCacheType") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (((iVar3 == 4) || (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)) &&\n     ((iVar3 = GetImagePixelCacheType(param_1), iVar3 == 4 ||\n      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)))) {\n    lVar10 = GetMagickResourceLimit(7);\n    uVar6 = uVar8 + 0x3f;\n    if (-1 < (long)uVar8) {\n      uVar6 = uVar8;\n    }\n    lVar11 = (long)uVar6 >> 6;\n    bVar1 = 0x7f < (long)uVar8;\n    if (lVar10 < lVar11) {\n      lVar10 = GetMagickResourceLimit(7);\n      bVar1 = 1 < lVar10;\n    }\n    lVar10 = 1;\n    if ((bVar1) && (lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11)) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }\n  else {\n    uVar6 = GetMagickResourceLimit(7);\n    if (uVar6 < 2) {\n      uVar6 = GetMagickResourceLimit(7);\n      lVar10 = 1;\n      if (uVar6 < 2) goto LAB_0018453b;\n    }\n    uVar6 = GetMagickResourceLimit(7);\n    lVar10 = 2;\n    if (uVar6 < 2) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }" (if "if") (parenthesized_expression "(((iVar3 == 4) || (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)) &&\n     ((iVar3 = GetImagePixelCacheType(param_1), iVar3 == 4 ||\n      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3))))" (( "(") (binary_expression "((iVar3 == 4) || (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)) &&\n     ((iVar3 = GetImagePixelCacheType(param_1), iVar3 == 4 ||\n      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)))" (parenthesized_expression "((iVar3 == 4) || (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3))" (( "(") (binary_expression "(iVar3 == 4) || (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)" (parenthesized_expression "(iVar3 == 4)" (( "(") (binary_expression "iVar3 == 4" (identifier "iVar3") (== "==") (number_literal "4")) () ")")) (|| "||") (parenthesized_expression "(iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)" (( "(") (comma_expression "iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3" (assignment_expression "iVar3 = GetImagePixelCacheType(param_1)" (identifier "iVar3") (= "=") (call_expression "GetImagePixelCacheType(param_1)" (identifier "GetImagePixelCacheType") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (, ",") (binary_expression "iVar3 == 3" (identifier "iVar3") (== "==") (number_literal "3"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((iVar3 = GetImagePixelCacheType(param_1), iVar3 == 4 ||\n      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)))" (( "(") (parenthesized_expression "(iVar3 = GetImagePixelCacheType(param_1), iVar3 == 4 ||\n      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3))" (( "(") (comma_expression "iVar3 = GetImagePixelCacheType(param_1), iVar3 == 4 ||\n      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)" (assignment_expression "iVar3 = GetImagePixelCacheType(param_1)" (identifier "iVar3") (= "=") (call_expression "GetImagePixelCacheType(param_1)" (identifier "GetImagePixelCacheType") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (, ",") (binary_expression "iVar3 == 4 ||\n      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)" (binary_expression "iVar3 == 4" (identifier "iVar3") (== "==") (number_literal "4")) (|| "||") (parenthesized_expression "(iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)" (( "(") (comma_expression "iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3" (assignment_expression "iVar3 = GetImagePixelCacheType(param_1)" (identifier "iVar3") (= "=") (call_expression "GetImagePixelCacheType(param_1)" (identifier "GetImagePixelCacheType") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (, ",") (binary_expression "iVar3 == 3" (identifier "iVar3") (== "==") (number_literal "3"))) () ")")))) () ")")) () ")"))) () ")")) (compound_statement "{\n    lVar10 = GetMagickResourceLimit(7);\n    uVar6 = uVar8 + 0x3f;\n    if (-1 < (long)uVar8) {\n      uVar6 = uVar8;\n    }\n    lVar11 = (long)uVar6 >> 6;\n    bVar1 = 0x7f < (long)uVar8;\n    if (lVar10 < lVar11) {\n      lVar10 = GetMagickResourceLimit(7);\n      bVar1 = 1 < lVar10;\n    }\n    lVar10 = 1;\n    if ((bVar1) && (lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11)) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }" ({ "{") (expression_statement "lVar10 = GetMagickResourceLimit(7);" (assignment_expression "lVar10 = GetMagickResourceLimit(7)" (identifier "lVar10") (= "=") (call_expression "GetMagickResourceLimit(7)" (identifier "GetMagickResourceLimit") (argument_list "(7)" (( "(") (number_literal "7") () ")")))) (; ";")) (expression_statement "uVar6 = uVar8 + 0x3f;" (assignment_expression "uVar6 = uVar8 + 0x3f" (identifier "uVar6") (= "=") (binary_expression "uVar8 + 0x3f" (identifier "uVar8") (+ "+") (number_literal "0x3f"))) (; ";")) (if_statement "if (-1 < (long)uVar8) {\n      uVar6 = uVar8;\n    }" (if "if") (parenthesized_expression "(-1 < (long)uVar8)" (( "(") (binary_expression "-1 < (long)uVar8" (number_literal "-1") (< "<") (cast_expression "(long)uVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar8"))) () ")")) (compound_statement "{\n      uVar6 = uVar8;\n    }" ({ "{") (expression_statement "uVar6 = uVar8;" (assignment_expression "uVar6 = uVar8" (identifier "uVar6") (= "=") (identifier "uVar8")) (; ";")) (} "}"))) (expression_statement "lVar11 = (long)uVar6 >> 6;" (assignment_expression "lVar11 = (long)uVar6 >> 6" (identifier "lVar11") (= "=") (binary_expression "(long)uVar6 >> 6" (cast_expression "(long)uVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar6")) (>> ">>") (number_literal "6"))) (; ";")) (expression_statement "bVar1 = 0x7f < (long)uVar8;" (assignment_expression "bVar1 = 0x7f < (long)uVar8" (identifier "bVar1") (= "=") (binary_expression "0x7f < (long)uVar8" (number_literal "0x7f") (< "<") (cast_expression "(long)uVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar8")))) (; ";")) (if_statement "if (lVar10 < lVar11) {\n      lVar10 = GetMagickResourceLimit(7);\n      bVar1 = 1 < lVar10;\n    }" (if "if") (parenthesized_expression "(lVar10 < lVar11)" (( "(") (binary_expression "lVar10 < lVar11" (identifier "lVar10") (< "<") (identifier "lVar11")) () ")")) (compound_statement "{\n      lVar10 = GetMagickResourceLimit(7);\n      bVar1 = 1 < lVar10;\n    }" ({ "{") (expression_statement "lVar10 = GetMagickResourceLimit(7);" (assignment_expression "lVar10 = GetMagickResourceLimit(7)" (identifier "lVar10") (= "=") (call_expression "GetMagickResourceLimit(7)" (identifier "GetMagickResourceLimit") (argument_list "(7)" (( "(") (number_literal "7") () ")")))) (; ";")) (expression_statement "bVar1 = 1 < lVar10;" (assignment_expression "bVar1 = 1 < lVar10" (identifier "bVar1") (= "=") (binary_expression "1 < lVar10" (number_literal "1") (< "<") (identifier "lVar10"))) (; ";")) (} "}"))) (expression_statement "lVar10 = 1;" (assignment_expression "lVar10 = 1" (identifier "lVar10") (= "=") (number_literal "1")) (; ";")) (if_statement "if ((bVar1) && (lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11)) {\n      lVar10 = GetMagickResourceLimit(7);\n    }" (if "if") (parenthesized_expression "((bVar1) && (lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11))" (( "(") (binary_expression "(bVar1) && (lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11)" (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (&& "&&") (parenthesized_expression "(lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11)" (( "(") (comma_expression "lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11" (assignment_expression "lVar9 = GetMagickResourceLimit(7)" (identifier "lVar9") (= "=") (call_expression "GetMagickResourceLimit(7)" (identifier "GetMagickResourceLimit") (argument_list "(7)" (( "(") (number_literal "7") () ")")))) (, ",") (comma_expression "lVar10 = lVar11, lVar9 < lVar11" (assignment_expression "lVar10 = lVar11" (identifier "lVar10") (= "=") (identifier "lVar11")) (, ",") (binary_expression "lVar9 < lVar11" (identifier "lVar9") (< "<") (identifier "lVar11")))) () ")"))) () ")")) (compound_statement "{\n      lVar10 = GetMagickResourceLimit(7);\n    }" ({ "{") (expression_statement "lVar10 = GetMagickResourceLimit(7);" (assignment_expression "lVar10 = GetMagickResourceLimit(7)" (identifier "lVar10") (= "=") (call_expression "GetMagickResourceLimit(7)" (identifier "GetMagickResourceLimit") (argument_list "(7)" (( "(") (number_literal "7") () ")")))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    uVar6 = GetMagickResourceLimit(7);\n    if (uVar6 < 2) {\n      uVar6 = GetMagickResourceLimit(7);\n      lVar10 = 1;\n      if (uVar6 < 2) goto LAB_0018453b;\n    }\n    uVar6 = GetMagickResourceLimit(7);\n    lVar10 = 2;\n    if (uVar6 < 2) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }" (else "else") (compound_statement "{\n    uVar6 = GetMagickResourceLimit(7);\n    if (uVar6 < 2) {\n      uVar6 = GetMagickResourceLimit(7);\n      lVar10 = 1;\n      if (uVar6 < 2) goto LAB_0018453b;\n    }\n    uVar6 = GetMagickResourceLimit(7);\n    lVar10 = 2;\n    if (uVar6 < 2) {\n      lVar10 = GetMagickResourceLimit(7);\n    }\n  }" ({ "{") (expression_statement "uVar6 = GetMagickResourceLimit(7);" (assignment_expression "uVar6 = GetMagickResourceLimit(7)" (identifier "uVar6") (= "=") (call_expression "GetMagickResourceLimit(7)" (identifier "GetMagickResourceLimit") (argument_list "(7)" (( "(") (number_literal "7") () ")")))) (; ";")) (if_statement "if (uVar6 < 2) {\n      uVar6 = GetMagickResourceLimit(7);\n      lVar10 = 1;\n      if (uVar6 < 2) goto LAB_0018453b;\n    }" (if "if") (parenthesized_expression "(uVar6 < 2)" (( "(") (binary_expression "uVar6 < 2" (identifier "uVar6") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n      uVar6 = GetMagickResourceLimit(7);\n      lVar10 = 1;\n      if (uVar6 < 2) goto LAB_0018453b;\n    }" ({ "{") (expression_statement "uVar6 = GetMagickResourceLimit(7);" (assignment_expression "uVar6 = GetMagickResourceLimit(7)" (identifier "uVar6") (= "=") (call_expression "GetMagickResourceLimit(7)" (identifier "GetMagickResourceLimit") (argument_list "(7)" (( "(") (number_literal "7") () ")")))) (; ";")) (expression_statement "lVar10 = 1;" (assignment_expression "lVar10 = 1" (identifier "lVar10") (= "=") (number_literal "1")) (; ";")) (if_statement "if (uVar6 < 2) goto LAB_0018453b;" (if "if") (parenthesized_expression "(uVar6 < 2)" (( "(") (binary_expression "uVar6 < 2" (identifier "uVar6") (< "<") (number_literal "2")) () ")")) (goto_statement "goto LAB_0018453b;" (goto "goto") (statement_identifier "LAB_0018453b") (; ";"))) (} "}"))) (expression_statement "uVar6 = GetMagickResourceLimit(7);" (assignment_expression "uVar6 = GetMagickResourceLimit(7)" (identifier "uVar6") (= "=") (call_expression "GetMagickResourceLimit(7)" (identifier "GetMagickResourceLimit") (argument_list "(7)" (( "(") (number_literal "7") () ")")))) (; ";")) (expression_statement "lVar10 = 2;" (assignment_expression "lVar10 = 2" (identifier "lVar10") (= "=") (number_literal "2")) (; ";")) (if_statement "if (uVar6 < 2) {\n      lVar10 = GetMagickResourceLimit(7);\n    }" (if "if") (parenthesized_expression "(uVar6 < 2)" (( "(") (binary_expression "uVar6 < 2" (identifier "uVar6") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n      lVar10 = GetMagickResourceLimit(7);\n    }" ({ "{") (expression_statement "lVar10 = GetMagickResourceLimit(7);" (assignment_expression "lVar10 = GetMagickResourceLimit(7)" (identifier "lVar10") (= "=") (call_expression "GetMagickResourceLimit(7)" (identifier "GetMagickResourceLimit") (argument_list "(7)" (( "(") (number_literal "7") () ")")))) (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_0018453b:\n  local_50 = 0.0;" (statement_identifier "LAB_0018453b") (: ":") (expression_statement "local_50 = 0.0;" (assignment_expression "local_50 = 0.0" (identifier "local_50") (= "=") (number_literal "0.0")) (; ";"))) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" (identifier "local_68") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_48 = 1;" (assignment_expression "local_48 = 1" (identifier "local_48") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_98 = param_1;" (assignment_expression "local_98 = param_1" (identifier "local_98") (= "=") (identifier "param_1")) (; ";")) (expression_statement "local_90 = param_2;" (assignment_expression "local_90 = param_2" (identifier "local_90") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_88 = param_3;" (assignment_expression "local_88 = param_3" (identifier "local_88") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_80 = param_4;" (assignment_expression "local_80 = param_4" (identifier "local_80") (= "=") (identifier "param_4")) (; ";")) (expression_statement "local_78 = uVar4;" (assignment_expression "local_78 = uVar4" (identifier "local_78") (= "=") (identifier "uVar4")) (; ";")) (expression_statement "local_70 = uVar5;" (assignment_expression "local_70 = uVar5" (identifier "local_70") (= "=") (identifier "uVar5")) (; ";")) (expression_statement "local_60 = uVar12;" (assignment_expression "local_60 = uVar12" (identifier "local_60") (= "=") (identifier "uVar12")) (; ";")) (expression_statement "local_58 = uVar8;" (assignment_expression "local_58 = uVar8" (identifier "local_58") (= "=") (identifier "uVar8")) (; ";")) (expression_statement "GOMP_parallel(FUN_00186a2a,&local_98,lVar10,0);" (call_expression "GOMP_parallel(FUN_00186a2a,&local_98,lVar10,0)" (identifier "GOMP_parallel") (argument_list "(FUN_00186a2a,&local_98,lVar10,0)" (( "(") (identifier "FUN_00186a2a") (, ",") (pointer_expression "&local_98" (& "&") (identifier "local_98")) (, ",") (identifier "lVar10") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "uVar2 = local_48;" (assignment_expression "uVar2 = local_48" (identifier "uVar2") (= "=") (identifier "local_48")) (; ";")) (expression_statement "dVar14 = local_50;" (assignment_expression "dVar14 = local_50" (identifier "dVar14") (= "=") (identifier "local_50")) (; ";")) (expression_statement "DestroyCacheView(uVar5);" (call_expression "DestroyCacheView(uVar5)" (identifier "DestroyCacheView") (argument_list "(uVar5)" (( "(") (identifier "uVar5") () ")"))) (; ";")) (expression_statement "DestroyCacheView(uVar4);" (call_expression "DestroyCacheView(uVar4)" (identifier "DestroyCacheView") (argument_list "(uVar4)" (( "(") (identifier "uVar4") () ")"))) (; ";")) (expression_statement "dVar13 = DAT_003f9c68;" (assignment_expression "dVar13 = DAT_003f9c68" (identifier "dVar13") (= "=") (identifier "DAT_003f9c68")) (; ";")) (if_statement "if (0.0 <= dVar14) {\n    dVar13 = DAT_003f9608;\n  }" (if "if") (parenthesized_expression "(0.0 <= dVar14)" (( "(") (binary_expression "0.0 <= dVar14" (number_literal "0.0") (<= "<=") (identifier "dVar14")) () ")")) (compound_statement "{\n    dVar13 = DAT_003f9608;\n  }" ({ "{") (expression_statement "dVar13 = DAT_003f9608;" (assignment_expression "dVar13 = DAT_003f9608" (identifier "dVar13") (= "=") (identifier "DAT_003f9608")) (; ";")) (} "}"))) (if_statement "if (dVar14 * dVar13 < DAT_003f9600) {\n    dVar14 = dVar13 / DAT_003f9600;\n  }\n  else {\n    dVar14 = DAT_003f9608 / dVar14;\n  }" (if "if") (parenthesized_expression "(dVar14 * dVar13 < DAT_003f9600)" (( "(") (binary_expression "dVar14 * dVar13 < DAT_003f9600" (binary_expression "dVar14 * dVar13" (identifier "dVar14") (* "*") (identifier "dVar13")) (< "<") (identifier "DAT_003f9600")) () ")")) (compound_statement "{\n    dVar14 = dVar13 / DAT_003f9600;\n  }" ({ "{") (expression_statement "dVar14 = dVar13 / DAT_003f9600;" (assignment_expression "dVar14 = dVar13 / DAT_003f9600" (identifier "dVar14") (= "=") (binary_expression "dVar13 / DAT_003f9600" (identifier "dVar13") (/ "/") (identifier "DAT_003f9600"))) (; ";")) (} "}")) (else_clause "else {\n    dVar14 = DAT_003f9608 / dVar14;\n  }" (else "else") (compound_statement "{\n    dVar14 = DAT_003f9608 / dVar14;\n  }" ({ "{") (expression_statement "dVar14 = DAT_003f9608 / dVar14;" (assignment_expression "dVar14 = DAT_003f9608 / dVar14" (identifier "dVar14") (= "=") (binary_expression "DAT_003f9608 / dVar14" (identifier "DAT_003f9608") (/ "/") (identifier "dVar14"))) (; ";")) (} "}")))) (expression_statement "pdVar7 = param_3;" (assignment_expression "pdVar7 = param_3" (identifier "pdVar7") (= "=") (identifier "param_3")) (; ";")) (do_statement "do {\n    *pdVar7 = dVar14 * *pdVar7;\n    pdVar7 = pdVar7 + 1;\n  } while (pdVar7 != param_3 + 0x41);" (do "do") (compound_statement "{\n    *pdVar7 = dVar14 * *pdVar7;\n    pdVar7 = pdVar7 + 1;\n  }" ({ "{") (expression_statement "*pdVar7 = dVar14 * *pdVar7;" (assignment_expression "*pdVar7 = dVar14 * *pdVar7" (pointer_expression "*pdVar7" (* "*") (identifier "pdVar7")) (= "=") (binary_expression "dVar14 * *pdVar7" (identifier "dVar14") (* "*") (pointer_expression "*pdVar7" (* "*") (identifier "pdVar7")))) (; ";")) (expression_statement "pdVar7 = pdVar7 + 1;" (assignment_expression "pdVar7 = pdVar7 + 1" (identifier "pdVar7") (= "=") (binary_expression "pdVar7 + 1" (identifier "pdVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pdVar7 != param_3 + 0x41)" (( "(") (binary_expression "pdVar7 != param_3 + 0x41" (identifier "pdVar7") (!= "!=") (binary_expression "param_3 + 0x41" (identifier "param_3") (+ "+") (number_literal "0x41"))) () ")")) (; ";")) (expression_statement "uVar8 = FUN_001841bc(param_1);" (assignment_expression "uVar8 = FUN_001841bc(param_1)" (identifier "uVar8") (= "=") (call_expression "FUN_001841bc(param_1)" (identifier "FUN_001841bc") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "param_3[0x40] = param_3[0x40] / (double)uVar8;" (assignment_expression "param_3[0x40] = param_3[0x40] / (double)uVar8" (subscript_expression "param_3[0x40]" (identifier "param_3") ([ "[") (number_literal "0x40") (] "]")) (= "=") (binary_expression "param_3[0x40] / (double)uVar8" (subscript_expression "param_3[0x40]" (identifier "param_3") ([ "[") (number_literal "0x40") (] "]")) (/ "/") (cast_expression "(double)uVar8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "uVar8")))) (; ";")) (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar2;\n  }" (if "if") (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (== "==") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n    return uVar2;\n  }" ({ "{") (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}"))) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* 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
function_1
          (type_2 *image,type_2 *reconstruct_image,double *var_17,type_3 *exception)

{
  long var_19;
  bool bVar2;
  double cache_view;
  type_1 MVar3;
  type_4 var_4;
  type_5 var_8;
  double *var_16;
  size_t sVar7;
  double dVar8;
  double var_13;
  long var_1;
  double var_12;
  double var_10 [65];
  
  var_19 = *(long *)(var_1 + 0x28);
  var_12 = (double)image->rows;
  if (image->rows <= reconstruct_image->rows) {
    var_12 = (double)reconstruct_image->rows;
  }
  var_13 = (double)image->columns;
  if (image->columns <= reconstruct_image->columns) {
    var_13 = (double)reconstruct_image->columns;
  }
  var_10[0x31] = 7.85804986857107e-318;
  var_10[0x33] = (double)var_2(image,exception);
  var_10[0x31] = 7.8581289190744e-318;
  var_10[0x34] = (double)var_2(reconstruct_image,exception);
  var_10[0x31] = 7.85819314760836e-318;
  var_4 = var_3(image);
  if (var_4 == var_5) {
LAB_00184672:
    var_10[0x31] = 7.86012000362714e-318;
    var_4 = var_3(image);
    if (var_4 != var_5) {
      var_10[0x31] = 7.8601842321611e-318;
      var_4 = var_3(image);
      if (var_4 != var_6) goto LAB_0018450e;
    }
    var_10[0x31] = 7.86027810463381e-318;
    var_8 = var_7(ThreadResource);
    dVar8 = (double)((long)var_12 + 0x3f);
    if (-1 < (long)var_12) {
      dVar8 = var_12;
    }
    var_10[0x35] = (double)((long)dVar8 >> 6);
    bVar2 = 0x7f < (long)var_12;
    if ((long)var_8 < (long)var_10[0x35]) {
      var_10[0x31] = 7.86101426244611e-318;
      var_8 = var_7(ThreadResource);
      bVar2 = 1 < (long)var_8;
    }
    dVar8 = 4.94065645841247e-324;
    if (bVar2) {
      var_10[0x31] = 7.86055478139548e-318;
      var_8 = var_7(ThreadResource);
      dVar8 = var_10[0x35];
      if ((long)var_8 < (long)var_10[0x35]) {
        var_10[0x31] = 7.86068817911986e-318;
        dVar8 = (double)var_7(ThreadResource);
      }
    }
  }
  else {
    var_10[0x31] = 7.85827713876815e-318;
    var_4 = var_3(image);
    if (var_4 == var_6) goto LAB_00184672;
LAB_0018450e:
    var_10[0x31] = 7.85837101124086e-318;
    var_8 = var_7(ThreadResource);
    if (var_8 < 2) {
      var_10[0x31] = 7.86077711093611e-318;
      var_8 = var_7(ThreadResource);
      dVar8 = 4.94065645841247e-324;
      if (var_8 < 2) goto LAB_0018453b;
    }
    var_10[0x31] = 7.85846982437003e-318;
    var_8 = var_7(ThreadResource);
    dVar8 = 9.88131291682493e-324;
    if (var_8 < 2) {
      var_10[0x31] = 7.86092533062986e-318;
      dVar8 = (double)var_7(ThreadResource);
    }
  }
LAB_0018453b:
  cache_view = var_10[0x34];
  var_10[0x3f] = 0.0;
  var_10[0x3b] = var_10[0x34];
  var_10[0x3a] = var_10[0x33];
  var_10[0x3c] = 0.0;
  var_10[0x40]._0_4_ = MagickTrue;
  var_10[0x31] = 7.85902811854983e-318;
  var_10[0x36] = (double)image;
  var_10[0x37] = (double)reconstruct_image;
  var_10[0x38] = (double)var_17;
  var_10[0x39] = (double)exception;
  var_10[0x3d] = var_13;
  var_10[0x3e] = var_12;
  var_9(GetMeanAbsoluteDistortion__omp_fn_3,var_10 + 0x36,dVar8,0);
  MVar3 = var_10[0x40]._0_4_;
  var_12 = var_10[0x3f];
  var_10[0x31] = 7.85911210970963e-318;
  var_11((type_6 *)cache_view);
  var_10[0x31] = 7.85916151627421e-318;
  var_11((type_6 *)var_10[0x33]);
  var_13 = DAT_003f9c68;
  if (0.0 <= var_12) {
    var_13 = var_15;
  }
  if (var_12 * var_13 < var_14) {
    var_12 = var_13 / var_14;
  }
  else {
    var_12 = var_15 / var_12;
  }
  var_16 = var_17;
  do {
    *var_16 = var_12 * *var_16;
    var_16 = var_16 + 1;
  } while (var_16 != var_17 + 0x41);
  var_10[0x31] = 7.8596852258588e-318;
  sVar7 = var_18(image);
  var_17[0x40] = var_17[0x40] / (double)sVar7;
  if (var_19 == *(long *)(var_1 + 0x28)) {
    return MVar3;
  }
                    /* WARNING: Subroutine does not return */
  var_10[0x31] = (double)GetMeanErrorPerPixel;
  var_20();
}


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

undefined4 MASKED(long param_1,long param_2,double *param_3,undefined8 param_4)

{
  bool bVar1;
  undefined4 uVar2;
  int iVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  ulong uVar6;
  double *pdVar7;
  ulong uVar8;
  long lVar9;
  long lVar10;
  long lVar11;
  ulong uVar12;
  long in_FS_OFFSET;
  double dVar13;
  double dVar14;
  long local_98;
  long local_90;
  double *local_88;
  undefined8 local_80;
  undefined8 local_78;
  undefined8 local_70;
  undefined8 local_68;
  ulong local_60;
  ulong local_58;
  double local_50;
  undefined4 local_48;
  long local_40;
  
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  uVar8 = *(ulong *)(param_1 + 0x28);
  if (*(ulong *)(param_1 + 0x28) <= *(ulong *)(param_2 + 0x28)) {
    uVar8 = *(ulong *)(param_2 + 0x28);
  }
  uVar12 = *(ulong *)(param_1 + 0x20);
  if (*(ulong *)(param_1 + 0x20) <= *(ulong *)(param_2 + 0x20)) {
    uVar12 = *(ulong *)(param_2 + 0x20);
  }
  uVar4 = AcquireVirtualCacheView(param_1,param_4);
  uVar5 = AcquireVirtualCacheView(param_2,param_4);
  iVar3 = GetImagePixelCacheType(param_1);
  if (((iVar3 == 4) || (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)) &&
     ((iVar3 = GetImagePixelCacheType(param_1), iVar3 == 4 ||
      (iVar3 = GetImagePixelCacheType(param_1), iVar3 == 3)))) {
    lVar10 = GetMagickResourceLimit(7);
    uVar6 = uVar8 + 0x3f;
    if (-1 < (long)uVar8) {
      uVar6 = uVar8;
    }
    lVar11 = (long)uVar6 >> 6;
    bVar1 = 0x7f < (long)uVar8;
    if (lVar10 < lVar11) {
      lVar10 = GetMagickResourceLimit(7);
      bVar1 = 1 < lVar10;
    }
    lVar10 = 1;
    if ((bVar1) && (lVar9 = GetMagickResourceLimit(7), lVar10 = lVar11, lVar9 < lVar11)) {
      lVar10 = GetMagickResourceLimit(7);
    }
  }
  else {
    uVar6 = GetMagickResourceLimit(7);
    if (uVar6 < 2) {
      uVar6 = GetMagickResourceLimit(7);
      lVar10 = 1;
      if (uVar6 < 2) goto LAB_0018453b;
    }
    uVar6 = GetMagickResourceLimit(7);
    lVar10 = 2;
    if (uVar6 < 2) {
      lVar10 = GetMagickResourceLimit(7);
    }
  }
LAB_0018453b:
  local_50 = 0.0;
  local_68 = 0;
  local_48 = 1;
  local_98 = param_1;
  local_90 = param_2;
  local_88 = param_3;
  local_80 = param_4;
  local_78 = uVar4;
  local_70 = uVar5;
  local_60 = uVar12;
  local_58 = uVar8;
  GOMP_parallel(FUN_00186a2a,&local_98,lVar10,0);
  uVar2 = local_48;
  dVar14 = local_50;
  DestroyCacheView(uVar5);
  DestroyCacheView(uVar4);
  dVar13 = DAT_003f9c68;
  if (0.0 <= dVar14) {
    dVar13 = DAT_003f9608;
  }
  if (dVar14 * dVar13 < DAT_003f9600) {
    dVar14 = dVar13 / DAT_003f9600;
  }
  else {
    dVar14 = DAT_003f9608 / dVar14;
  }
  pdVar7 = param_3;
  do {
    *pdVar7 = dVar14 * *pdVar7;
    pdVar7 = pdVar7 + 1;
  } while (pdVar7 != param_3 + 0x41);
  uVar8 = FUN_001841bc(param_1);
  param_3[0x40] = param_3[0x40] / (double)uVar8;
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return uVar2;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}

