
/* DWARF original prototype: void GetPerceptualHashDistortion._omp_fn.6(anon_struct_32_4_e774f142 *
   param_0) */

void __thiscall GetPerceptualHashDistortion__omp_fn_6(void *this)

{
  long lVar1;
  long lVar2;
  undefined1 auVar3 [16];
  undefined *puVar4;
  int iVar5;
  int iVar6;
  long lVar7;
  long lVar8;
  long lVar9;
  long lVar10;
  long lVar11;
  long lVar12;
  double dVar13;
  double local_78;
  long local_70;
  double *local_60;
  long local_58;
  long local_50;
  
  iVar5 = omp_get_num_threads();
  iVar6 = omp_get_thread_num();
  auVar3._8_8_ = 0;
  auVar3._0_8_ = SUB168(SEXT816(0x40),8);
  auVar3 = auVar3 << 0x40 | ZEXT816(0x40);
  lVar7 = SUB168(auVar3 / SEXT816((long)iVar5),0);
  lVar8 = SUB168(auVar3 % SEXT816((long)iVar5),0);
  if (iVar6 < lVar8) {
    lVar7 = lVar7 + 1;
    lVar8 = 0;
  }
  lVar8 = iVar6 * lVar7 + lVar8;
  if (lVar8 < lVar7 + lVar8) {
    iVar5 = *(int *)((long)this + 0x18);
    lVar1 = *(long *)((long)this + 8);
                    /* WARNING: Load size is inaccurate */
    lVar2 = *this;
    local_60 = (double *)(lVar2 + lVar8 * 8);
    local_58 = lVar1 + lVar8 * 0x2b8;
    local_50 = lVar8 * 0x2b8 + *(long *)((long)this + 0x10);
    do {
      local_70 = local_50;
      local_78 = 0.0;
      lVar12 = local_58;
      do {
        if (0 < *(long *)(lVar1 + 0x90)) {
          lVar9 = 0;
          lVar10 = lVar12;
          lVar11 = local_70;
          do {
            if (iVar5 == 0) {
              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);
              local_78 = dVar13 * dVar13 + local_78;
            }
            else {
              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);
              dVar13 = (dVar13 * dVar13) / (double)*(ulong *)(lVar1 + 0x2b0);
              local_78 = SQRT(dVar13);
              if (dVar13 < 0.0) {
                sqrt(dVar13);
              }
            }
            lVar9 = lVar9 + 1;
            lVar10 = lVar10 + 0x48;
            lVar11 = lVar11 + 0x48;
          } while (lVar9 < *(long *)(lVar1 + 0x90));
        }
        lVar12 = lVar12 + 8;
        local_70 = local_70 + 8;
      } while (lVar12 != local_58 + 0x40);
      *local_60 = local_78 + *local_60;
      puVar4 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;
      GOMP_critical_name_start
                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);
      *(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);
      GOMP_critical_name_end(puVar4);
      local_60 = local_60 + 1;
      local_58 = local_58 + 0x2b8;
      local_50 = local_50 + 0x2b8;
    } while (local_60 != (double *)(lVar2 + (lVar7 + lVar8) * 8));
  }
  return;
}



void FUN_00185b44(long *param_1)

{
  long lVar1;
  long lVar2;
  undefined1 auVar3 [16];
  long lVar4;
  undefined *puVar5;
  int iVar6;
  int iVar7;
  long lVar8;
  long lVar9;
  long lVar10;
  long lVar11;
  long lVar12;
  long lVar13;
  double dVar14;
  double local_78;
  long local_70;
  double *local_60;
  long local_58;
  long local_50;
  
  iVar6 = omp_get_num_threads();
  iVar7 = omp_get_thread_num();
  auVar3._8_8_ = 0;
  auVar3._0_8_ = SUB168(SEXT816(0x40),8);
  auVar3 = auVar3 << 0x40 | ZEXT816(0x40);
  lVar8 = SUB168(auVar3 / SEXT816((long)iVar6),0);
  lVar9 = SUB168(auVar3 % SEXT816((long)iVar6),0);
  if (iVar7 < lVar9) {
    lVar8 = lVar8 + 1;
    lVar9 = 0;
  }
  lVar9 = iVar7 * lVar8 + lVar9;
  if (lVar9 < lVar8 + lVar9) {
    lVar4 = param_1[3];
    lVar1 = param_1[1];
    lVar2 = *param_1;
    local_60 = (double *)(lVar2 + lVar9 * 8);
    local_58 = lVar1 + lVar9 * 0x2b8;
    local_50 = lVar9 * 0x2b8 + param_1[2];
    do {
      local_70 = local_50;
      local_78 = 0.0;
      lVar13 = local_58;
      do {
        if (0 < *(long *)(lVar1 + 0x90)) {
          lVar10 = 0;
          lVar11 = lVar13;
          lVar12 = local_70;
          do {
            if ((int)lVar4 == 0) {
              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);
              local_78 = dVar14 * dVar14 + local_78;
            }
            else {
              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);
              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);
              local_78 = SQRT(dVar14);
              if (dVar14 < 0.0) {
                sqrt(dVar14);
              }
            }
            lVar10 = lVar10 + 1;
            lVar11 = lVar11 + 0x48;
            lVar12 = lVar12 + 0x48;
          } while (lVar10 < *(long *)(lVar1 + 0x90));
        }
        lVar13 = lVar13 + 8;
        local_70 = local_70 + 8;
      } while (lVar13 != local_58 + 0x40);
      *local_60 = local_78 + *local_60;
      puVar5 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;
      GOMP_critical_name_start
                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);
      *(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);
      GOMP_critical_name_end(puVar5);
      local_60 = local_60 + 1;
      local_58 = local_58 + 0x2b8;
      local_50 = local_50 + 0x2b8;
    } while (local_60 != (double *)(lVar2 + (lVar8 + lVar9) * 8));
  }
  return;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x48
MOV RBX,RDI
CALL 0x00149d40
MOVSXD RBP,EAX
CALL 0x0014af50
MOVSXD RCX,EAX
MOV EAX,0x40
CQO
IDIV RBP
MOV RSI,RAX
MOV RDI,RDX
CMP RCX,RDX
JL 0x00185d25
IMUL RCX,RSI
LEA RAX,[RCX + RDI*0x1]
ADD RSI,RAX
CMP RAX,RSI
JGE 0x00185d33
MOV R15D,dword ptr [RBX + 0x18]
MOV R13,qword ptr [RBX + 0x8]
MOV RCX,qword ptr [RBX]
MOV qword ptr [RSP + 0x30],RCX
LEA RDI,[RCX + RAX*0x8]
MOV qword ptr [RSP + 0x18],RDI
IMUL RAX,RAX,0x2b8
LEA RDI,[R13 + RAX*0x1]
MOV qword ptr [RSP + 0x20],RDI
ADD RAX,qword ptr [RBX + 0x10]
MOV qword ptr [RSP + 0x28],RAX
LEA RAX,[RCX + RSI*0x8]
MOV qword ptr [RSP + 0x38],RAX
JMP 0x00185c3e
MOV R14,qword ptr [RSP + 0x18]
MOVSD XMM0,qword ptr [RSP]
ADDSD XMM0,qword ptr [R14]
MOVSD qword ptr [R14],XMM0
MOV RBX,qword ptr [0x006daef0]
MOV RDI,RBX
CALL 0x0014a5b0
MOV RAX,qword ptr [RSP + 0x30]
MOVSD XMM0,qword ptr [RSP]
ADDSD XMM0,qword ptr [RAX + 0x200]
MOVSD qword ptr [RAX + 0x200],XMM0
MOV RDI,RBX
CALL 0x0014b5b0
MOV RAX,R14
ADD RAX,0x8
MOV qword ptr [RSP + 0x18],RAX
ADD qword ptr [RSP + 0x20],0x2b8
ADD qword ptr [RSP + 0x28],0x2b8
CMP RAX,qword ptr [RSP + 0x38]
JZ 0x00185d33
MOV R14,qword ptr [RSP + 0x20]
LEA RAX,[R14 + 0x40]
MOV qword ptr [RSP + 0x10],RAX
MOV RAX,qword ptr [RSP + 0x28]
MOV qword ptr [RSP + 0x8],RAX
PXOR XMM5,XMM5
MOVSD qword ptr [RSP],XMM5
JMP 0x00185c76
ADD R14,0x8
ADD qword ptr [RSP + 0x8],0x8
CMP R14,qword ptr [RSP + 0x10]
JZ 0x00185bd0
CMP qword ptr [R13 + 0x90],0x0
JLE 0x00185c61
MOV R12,qword ptr [RSP + 0x8]
MOV RBP,R14
MOV EBX,0x0
JMP 0x00185cd8
SUBSD XMM0,XMM1
MULSD XMM0,XMM0
MOV RAX,qword ptr [R13 + 0x2b0]
TEST RAX,RAX
JS 0x00185d03
PXOR XMM1,XMM1
CVTSI2SD XMM1,RAX
DIVSD XMM0,XMM1
SQRTSD XMM3,XMM0
MOVSD qword ptr [RSP],XMM3
PXOR XMM4,XMM4
UCOMISD XMM4,XMM0
JA 0x00185d1e
ADD RBX,0x1
ADD RBP,0x48
ADD R12,0x48
CMP qword ptr [R13 + 0x90],RBX
JLE 0x00185c61
MOVSD XMM1,qword ptr [RBP + 0xb8]
MOVSD XMM0,qword ptr [R12 + 0xb8]
TEST R15D,R15D
JNZ 0x00185c8f
SUBSD XMM0,XMM1
MULSD XMM0,XMM0
ADDSD XMM0,qword ptr [RSP]
MOVSD qword ptr [RSP],XMM0
JMP 0x00185cc3
MOV RDX,RAX
SHR RDX,0x1
AND EAX,0x1
OR RDX,RAX
PXOR XMM1,XMM1
CVTSI2SD XMM1,RDX
ADDSD XMM1,XMM1
JMP 0x00185cac
CALL 0x0014d650
JMP 0x00185cc3
LEA RSI,[RAX + 0x1]
MOV EDI,0x0
JMP 0x00185b7e
ADD RSP,0x48
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
(translation_unit "void FUN_00185b44(long *param_1)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined1 auVar3 [16];\n  long lVar4;\n  undefined *puVar5;\n  int iVar6;\n  int iVar7;\n  long lVar8;\n  long lVar9;\n  long lVar10;\n  long lVar11;\n  long lVar12;\n  long lVar13;\n  double dVar14;\n  double local_78;\n  long local_70;\n  double *local_60;\n  long local_58;\n  long local_50;\n  \n  iVar6 = omp_get_num_threads();\n  iVar7 = omp_get_thread_num();\n  auVar3._8_8_ = 0;\n  auVar3._0_8_ = SUB168(SEXT816(0x40),8);\n  auVar3 = auVar3 << 0x40 | ZEXT816(0x40);\n  lVar8 = SUB168(auVar3 / SEXT816((long)iVar6),0);\n  lVar9 = SUB168(auVar3 % SEXT816((long)iVar6),0);\n  if (iVar7 < lVar9) {\n    lVar8 = lVar8 + 1;\n    lVar9 = 0;\n  }\n  lVar9 = iVar7 * lVar8 + lVar9;\n  if (lVar9 < lVar8 + lVar9) {\n    lVar4 = param_1[3];\n    lVar1 = param_1[1];\n    lVar2 = *param_1;\n    local_60 = (double *)(lVar2 + lVar9 * 8);\n    local_58 = lVar1 + lVar9 * 0x2b8;\n    local_50 = lVar9 * 0x2b8 + param_1[2];\n    do {\n      local_70 = local_50;\n      local_78 = 0.0;\n      lVar13 = local_58;\n      do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }\n        lVar13 = lVar13 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar13 != local_58 + 0x40);\n      *local_60 = local_78 + *local_60;\n      puVar5 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;\n      GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);\n      *(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);\n      GOMP_critical_name_end(puVar5);\n      local_60 = local_60 + 1;\n      local_58 = local_58 + 0x2b8;\n      local_50 = local_50 + 0x2b8;\n    } while (local_60 != (double *)(lVar2 + (lVar8 + lVar9) * 8));\n  }\n  return;\n}\n\n" (function_definition "void FUN_00185b44(long *param_1)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined1 auVar3 [16];\n  long lVar4;\n  undefined *puVar5;\n  int iVar6;\n  int iVar7;\n  long lVar8;\n  long lVar9;\n  long lVar10;\n  long lVar11;\n  long lVar12;\n  long lVar13;\n  double dVar14;\n  double local_78;\n  long local_70;\n  double *local_60;\n  long local_58;\n  long local_50;\n  \n  iVar6 = omp_get_num_threads();\n  iVar7 = omp_get_thread_num();\n  auVar3._8_8_ = 0;\n  auVar3._0_8_ = SUB168(SEXT816(0x40),8);\n  auVar3 = auVar3 << 0x40 | ZEXT816(0x40);\n  lVar8 = SUB168(auVar3 / SEXT816((long)iVar6),0);\n  lVar9 = SUB168(auVar3 % SEXT816((long)iVar6),0);\n  if (iVar7 < lVar9) {\n    lVar8 = lVar8 + 1;\n    lVar9 = 0;\n  }\n  lVar9 = iVar7 * lVar8 + lVar9;\n  if (lVar9 < lVar8 + lVar9) {\n    lVar4 = param_1[3];\n    lVar1 = param_1[1];\n    lVar2 = *param_1;\n    local_60 = (double *)(lVar2 + lVar9 * 8);\n    local_58 = lVar1 + lVar9 * 0x2b8;\n    local_50 = lVar9 * 0x2b8 + param_1[2];\n    do {\n      local_70 = local_50;\n      local_78 = 0.0;\n      lVar13 = local_58;\n      do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }\n        lVar13 = lVar13 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar13 != local_58 + 0x40);\n      *local_60 = local_78 + *local_60;\n      puVar5 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;\n      GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);\n      *(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);\n      GOMP_critical_name_end(puVar5);\n      local_60 = local_60 + 1;\n      local_58 = local_58 + 0x2b8;\n      local_50 = local_50 + 0x2b8;\n    } while (local_60 != (double *)(lVar2 + (lVar8 + lVar9) * 8));\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00185b44(long *param_1)" identifier (parameter_list "(long *param_1)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  undefined1 auVar3 [16];\n  long lVar4;\n  undefined *puVar5;\n  int iVar6;\n  int iVar7;\n  long lVar8;\n  long lVar9;\n  long lVar10;\n  long lVar11;\n  long lVar12;\n  long lVar13;\n  double dVar14;\n  double local_78;\n  long local_70;\n  double *local_60;\n  long local_58;\n  long local_50;\n  \n  iVar6 = omp_get_num_threads();\n  iVar7 = omp_get_thread_num();\n  auVar3._8_8_ = 0;\n  auVar3._0_8_ = SUB168(SEXT816(0x40),8);\n  auVar3 = auVar3 << 0x40 | ZEXT816(0x40);\n  lVar8 = SUB168(auVar3 / SEXT816((long)iVar6),0);\n  lVar9 = SUB168(auVar3 % SEXT816((long)iVar6),0);\n  if (iVar7 < lVar9) {\n    lVar8 = lVar8 + 1;\n    lVar9 = 0;\n  }\n  lVar9 = iVar7 * lVar8 + lVar9;\n  if (lVar9 < lVar8 + lVar9) {\n    lVar4 = param_1[3];\n    lVar1 = param_1[1];\n    lVar2 = *param_1;\n    local_60 = (double *)(lVar2 + lVar9 * 8);\n    local_58 = lVar1 + lVar9 * 0x2b8;\n    local_50 = lVar9 * 0x2b8 + param_1[2];\n    do {\n      local_70 = local_50;\n      local_78 = 0.0;\n      lVar13 = local_58;\n      do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }\n        lVar13 = lVar13 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar13 != local_58 + 0x40);\n      *local_60 = local_78 + *local_60;\n      puVar5 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;\n      GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);\n      *(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);\n      GOMP_critical_name_end(puVar5);\n      local_60 = local_60 + 1;\n      local_58 = local_58 + 0x2b8;\n      local_50 = local_50 + 0x2b8;\n    } while (local_60 != (double *)(lVar2 + (lVar8 + lVar9) * 8));\n  }\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 auVar3 [16];" type_identifier (array_declarator "auVar3 [16]" identifier [ number_literal ]) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) 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 "long lVar12;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar13;" (sized_type_specifier "long" long) identifier ;) (declaration "double dVar14;" primitive_type identifier ;) (declaration "double local_78;" primitive_type identifier ;) (declaration "long local_70;" (sized_type_specifier "long" long) identifier ;) (declaration "double *local_60;" primitive_type (pointer_declarator "*local_60" * identifier) ;) (declaration "long local_58;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_50;" (sized_type_specifier "long" long) identifier ;) (expression_statement "iVar6 = omp_get_num_threads();" (assignment_expression "iVar6 = omp_get_num_threads()" identifier = (call_expression "omp_get_num_threads()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar7 = omp_get_thread_num();" (assignment_expression "iVar7 = omp_get_thread_num()" identifier = (call_expression "omp_get_thread_num()" identifier (argument_list "()" ( )))) ;) (expression_statement "auVar3._8_8_ = 0;" (assignment_expression "auVar3._8_8_ = 0" (field_expression "auVar3._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar3._0_8_ = SUB168(SEXT816(0x40),8);" (assignment_expression "auVar3._0_8_ = SUB168(SEXT816(0x40),8)" (field_expression "auVar3._0_8_" identifier . field_identifier) = (call_expression "SUB168(SEXT816(0x40),8)" identifier (argument_list "(SEXT816(0x40),8)" ( (call_expression "SEXT816(0x40)" identifier (argument_list "(0x40)" ( number_literal ))) , number_literal )))) ;) (expression_statement "auVar3 = auVar3 << 0x40 | ZEXT816(0x40);" (assignment_expression "auVar3 = auVar3 << 0x40 | ZEXT816(0x40)" identifier = (binary_expression "auVar3 << 0x40 | ZEXT816(0x40)" (binary_expression "auVar3 << 0x40" identifier << number_literal) | (call_expression "ZEXT816(0x40)" identifier (argument_list "(0x40)" ( number_literal ))))) ;) (expression_statement "lVar8 = SUB168(auVar3 / SEXT816((long)iVar6),0);" (assignment_expression "lVar8 = SUB168(auVar3 / SEXT816((long)iVar6),0)" identifier = (call_expression "SUB168(auVar3 / SEXT816((long)iVar6),0)" identifier (argument_list "(auVar3 / SEXT816((long)iVar6),0)" ( (binary_expression "auVar3 / SEXT816((long)iVar6)" identifier / (call_expression "SEXT816((long)iVar6)" identifier (argument_list "((long)iVar6)" ( (cast_expression "(long)iVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) )))) , number_literal )))) ;) (expression_statement "lVar9 = SUB168(auVar3 % SEXT816((long)iVar6),0);" (assignment_expression "lVar9 = SUB168(auVar3 % SEXT816((long)iVar6),0)" identifier = (call_expression "SUB168(auVar3 % SEXT816((long)iVar6),0)" identifier (argument_list "(auVar3 % SEXT816((long)iVar6),0)" ( (binary_expression "auVar3 % SEXT816((long)iVar6)" identifier % (call_expression "SEXT816((long)iVar6)" identifier (argument_list "((long)iVar6)" ( (cast_expression "(long)iVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) )))) , number_literal )))) ;) (if_statement "if (iVar7 < lVar9) {\n    lVar8 = lVar8 + 1;\n    lVar9 = 0;\n  }" if (parenthesized_expression "(iVar7 < lVar9)" ( (binary_expression "iVar7 < lVar9" identifier < identifier) )) (compound_statement "{\n    lVar8 = lVar8 + 1;\n    lVar9 = 0;\n  }" { (expression_statement "lVar8 = lVar8 + 1;" (assignment_expression "lVar8 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) ;) (expression_statement "lVar9 = 0;" (assignment_expression "lVar9 = 0" identifier = number_literal) ;) })) (expression_statement "lVar9 = iVar7 * lVar8 + lVar9;" (assignment_expression "lVar9 = iVar7 * lVar8 + lVar9" identifier = (binary_expression "iVar7 * lVar8 + lVar9" (binary_expression "iVar7 * lVar8" identifier * identifier) + identifier)) ;) (if_statement "if (lVar9 < lVar8 + lVar9) {\n    lVar4 = param_1[3];\n    lVar1 = param_1[1];\n    lVar2 = *param_1;\n    local_60 = (double *)(lVar2 + lVar9 * 8);\n    local_58 = lVar1 + lVar9 * 0x2b8;\n    local_50 = lVar9 * 0x2b8 + param_1[2];\n    do {\n      local_70 = local_50;\n      local_78 = 0.0;\n      lVar13 = local_58;\n      do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }\n        lVar13 = lVar13 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar13 != local_58 + 0x40);\n      *local_60 = local_78 + *local_60;\n      puVar5 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;\n      GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);\n      *(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);\n      GOMP_critical_name_end(puVar5);\n      local_60 = local_60 + 1;\n      local_58 = local_58 + 0x2b8;\n      local_50 = local_50 + 0x2b8;\n    } while (local_60 != (double *)(lVar2 + (lVar8 + lVar9) * 8));\n  }" if (parenthesized_expression "(lVar9 < lVar8 + lVar9)" ( (binary_expression "lVar9 < lVar8 + lVar9" identifier < (binary_expression "lVar8 + lVar9" identifier + identifier)) )) (compound_statement "{\n    lVar4 = param_1[3];\n    lVar1 = param_1[1];\n    lVar2 = *param_1;\n    local_60 = (double *)(lVar2 + lVar9 * 8);\n    local_58 = lVar1 + lVar9 * 0x2b8;\n    local_50 = lVar9 * 0x2b8 + param_1[2];\n    do {\n      local_70 = local_50;\n      local_78 = 0.0;\n      lVar13 = local_58;\n      do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }\n        lVar13 = lVar13 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar13 != local_58 + 0x40);\n      *local_60 = local_78 + *local_60;\n      puVar5 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;\n      GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);\n      *(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);\n      GOMP_critical_name_end(puVar5);\n      local_60 = local_60 + 1;\n      local_58 = local_58 + 0x2b8;\n      local_50 = local_50 + 0x2b8;\n    } while (local_60 != (double *)(lVar2 + (lVar8 + lVar9) * 8));\n  }" { (expression_statement "lVar4 = param_1[3];" (assignment_expression "lVar4 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "lVar1 = param_1[1];" (assignment_expression "lVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "lVar2 = *param_1;" (assignment_expression "lVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "local_60 = (double *)(lVar2 + lVar9 * 8);" (assignment_expression "local_60 = (double *)(lVar2 + lVar9 * 8)" identifier = (cast_expression "(double *)(lVar2 + lVar9 * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + lVar9 * 8)" ( (binary_expression "lVar2 + lVar9 * 8" identifier + (binary_expression "lVar9 * 8" identifier * number_literal)) )))) ;) (expression_statement "local_58 = lVar1 + lVar9 * 0x2b8;" (assignment_expression "local_58 = lVar1 + lVar9 * 0x2b8" identifier = (binary_expression "lVar1 + lVar9 * 0x2b8" identifier + (binary_expression "lVar9 * 0x2b8" identifier * number_literal))) ;) (expression_statement "local_50 = lVar9 * 0x2b8 + param_1[2];" (assignment_expression "local_50 = lVar9 * 0x2b8 + param_1[2]" identifier = (binary_expression "lVar9 * 0x2b8 + param_1[2]" (binary_expression "lVar9 * 0x2b8" identifier * number_literal) + (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (do_statement "do {\n      local_70 = local_50;\n      local_78 = 0.0;\n      lVar13 = local_58;\n      do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }\n        lVar13 = lVar13 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar13 != local_58 + 0x40);\n      *local_60 = local_78 + *local_60;\n      puVar5 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;\n      GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);\n      *(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);\n      GOMP_critical_name_end(puVar5);\n      local_60 = local_60 + 1;\n      local_58 = local_58 + 0x2b8;\n      local_50 = local_50 + 0x2b8;\n    } while (local_60 != (double *)(lVar2 + (lVar8 + lVar9) * 8));" do (compound_statement "{\n      local_70 = local_50;\n      local_78 = 0.0;\n      lVar13 = local_58;\n      do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }\n        lVar13 = lVar13 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar13 != local_58 + 0x40);\n      *local_60 = local_78 + *local_60;\n      puVar5 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;\n      GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);\n      *(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);\n      GOMP_critical_name_end(puVar5);\n      local_60 = local_60 + 1;\n      local_58 = local_58 + 0x2b8;\n      local_50 = local_50 + 0x2b8;\n    }" { (expression_statement "local_70 = local_50;" (assignment_expression "local_70 = local_50" identifier = identifier) ;) (expression_statement "local_78 = 0.0;" (assignment_expression "local_78 = 0.0" identifier = number_literal) ;) (expression_statement "lVar13 = local_58;" (assignment_expression "lVar13 = local_58" identifier = identifier) ;) (do_statement "do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }\n        lVar13 = lVar13 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar13 != local_58 + 0x40);" do (compound_statement "{\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }\n        lVar13 = lVar13 + 8;\n        local_70 = local_70 + 8;\n      }" { (if_statement "if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }" if (parenthesized_expression "(0 < *(long *)(lVar1 + 0x90))" ( (binary_expression "0 < *(long *)(lVar1 + 0x90)" number_literal < (pointer_expression "*(long *)(lVar1 + 0x90)" * (cast_expression "(long *)(lVar1 + 0x90)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x90)" ( (binary_expression "lVar1 + 0x90" identifier + number_literal) ))))) )) (compound_statement "{\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }" { (expression_statement "lVar10 = 0;" (assignment_expression "lVar10 = 0" identifier = number_literal) ;) (expression_statement "lVar11 = lVar13;" (assignment_expression "lVar11 = lVar13" identifier = identifier) ;) (expression_statement "lVar12 = local_70;" (assignment_expression "lVar12 = local_70" identifier = identifier) ;) (do_statement "do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));" do (compound_statement "{\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          }" { (if_statement "if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }" if (parenthesized_expression "((int)lVar4 == 0)" ( (binary_expression "(int)lVar4 == 0" (cast_expression "(int)lVar4" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal) )) (compound_statement "{\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }" { (expression_statement "dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);" (assignment_expression "dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8)" identifier = (binary_expression "*(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8)" (pointer_expression "*(double *)(lVar12 + 0xb8)" * (cast_expression "(double *)(lVar12 + 0xb8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + 0xb8)" ( (binary_expression "lVar12 + 0xb8" identifier + number_literal) )))) - (pointer_expression "*(double *)(lVar11 + 0xb8)" * (cast_expression "(double *)(lVar11 + 0xb8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0xb8)" ( (binary_expression "lVar11 + 0xb8" identifier + number_literal) )))))) ;) (expression_statement "local_78 = dVar14 * dVar14 + local_78;" (assignment_expression "local_78 = dVar14 * dVar14 + local_78" identifier = (binary_expression "dVar14 * dVar14 + local_78" (binary_expression "dVar14 * dVar14" identifier * identifier) + identifier)) ;) }) (else_clause "else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }" else (compound_statement "{\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }" { (expression_statement "dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);" (assignment_expression "dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8)" identifier = (binary_expression "*(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8)" (pointer_expression "*(double *)(lVar12 + 0xb8)" * (cast_expression "(double *)(lVar12 + 0xb8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + 0xb8)" ( (binary_expression "lVar12 + 0xb8" identifier + number_literal) )))) - (pointer_expression "*(double *)(lVar11 + 0xb8)" * (cast_expression "(double *)(lVar11 + 0xb8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0xb8)" ( (binary_expression "lVar11 + 0xb8" identifier + number_literal) )))))) ;) (expression_statement "dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);" (assignment_expression "dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0)" identifier = (binary_expression "(dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0)" (parenthesized_expression "(dVar14 * dVar14)" ( (binary_expression "dVar14 * dVar14" identifier * identifier) )) / (cast_expression "(double)*(ulong *)(lVar1 + 0x2b0)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(ulong *)(lVar1 + 0x2b0)" * (cast_expression "(ulong *)(lVar1 + 0x2b0)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x2b0)" ( (binary_expression "lVar1 + 0x2b0" identifier + number_literal) ))))))) ;) (expression_statement "local_78 = SQRT(dVar14);" (assignment_expression "local_78 = SQRT(dVar14)" identifier = (call_expression "SQRT(dVar14)" identifier (argument_list "(dVar14)" ( identifier )))) ;) (if_statement "if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }" if (parenthesized_expression "(dVar14 < 0.0)" ( (binary_expression "dVar14 < 0.0" identifier < number_literal) )) (compound_statement "{\n                sqrt(dVar14);\n              }" { (expression_statement "sqrt(dVar14);" (call_expression "sqrt(dVar14)" identifier (argument_list "(dVar14)" ( identifier ))) ;) })) }))) (expression_statement "lVar10 = lVar10 + 1;" (assignment_expression "lVar10 = lVar10 + 1" identifier = (binary_expression "lVar10 + 1" identifier + number_literal)) ;) (expression_statement "lVar11 = lVar11 + 0x48;" (assignment_expression "lVar11 = lVar11 + 0x48" identifier = (binary_expression "lVar11 + 0x48" identifier + number_literal)) ;) (expression_statement "lVar12 = lVar12 + 0x48;" (assignment_expression "lVar12 = lVar12 + 0x48" identifier = (binary_expression "lVar12 + 0x48" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar10 < *(long *)(lVar1 + 0x90))" ( (binary_expression "lVar10 < *(long *)(lVar1 + 0x90)" identifier < (pointer_expression "*(long *)(lVar1 + 0x90)" * (cast_expression "(long *)(lVar1 + 0x90)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x90)" ( (binary_expression "lVar1 + 0x90" identifier + number_literal) ))))) )) ;) })) (expression_statement "lVar13 = lVar13 + 8;" (assignment_expression "lVar13 = lVar13 + 8" identifier = (binary_expression "lVar13 + 8" identifier + number_literal)) ;) (expression_statement "local_70 = local_70 + 8;" (assignment_expression "local_70 = local_70 + 8" identifier = (binary_expression "local_70 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar13 != local_58 + 0x40)" ( (binary_expression "lVar13 != local_58 + 0x40" identifier != (binary_expression "local_58 + 0x40" identifier + number_literal)) )) ;) (expression_statement "*local_60 = local_78 + *local_60;" (assignment_expression "*local_60 = local_78 + *local_60" (pointer_expression "*local_60" * identifier) = (binary_expression "local_78 + *local_60" identifier + (pointer_expression "*local_60" * identifier))) ;) (expression_statement "puVar5 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;" (assignment_expression "puVar5 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0" identifier = identifier) ;) (expression_statement "GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);" (call_expression "GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0)" identifier (argument_list "(PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0)" ( identifier ))) ;) (expression_statement "*(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);" (assignment_expression "*(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200)" (pointer_expression "*(double *)(lVar2 + 0x200)" * (cast_expression "(double *)(lVar2 + 0x200)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x200)" ( (binary_expression "lVar2 + 0x200" identifier + number_literal) )))) = (binary_expression "local_78 + *(double *)(lVar2 + 0x200)" identifier + (pointer_expression "*(double *)(lVar2 + 0x200)" * (cast_expression "(double *)(lVar2 + 0x200)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x200)" ( (binary_expression "lVar2 + 0x200" identifier + number_literal) )))))) ;) (expression_statement "GOMP_critical_name_end(puVar5);" (call_expression "GOMP_critical_name_end(puVar5)" identifier (argument_list "(puVar5)" ( identifier ))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_58 = local_58 + 0x2b8;" (assignment_expression "local_58 = local_58 + 0x2b8" identifier = (binary_expression "local_58 + 0x2b8" identifier + number_literal)) ;) (expression_statement "local_50 = local_50 + 0x2b8;" (assignment_expression "local_50 = local_50 + 0x2b8" identifier = (binary_expression "local_50 + 0x2b8" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_60 != (double *)(lVar2 + (lVar8 + lVar9) * 8))" ( (binary_expression "local_60 != (double *)(lVar2 + (lVar8 + lVar9) * 8)" identifier != (cast_expression "(double *)(lVar2 + (lVar8 + lVar9) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + (lVar8 + lVar9) * 8)" ( (binary_expression "lVar2 + (lVar8 + lVar9) * 8" identifier + (binary_expression "(lVar8 + lVar9) * 8" (parenthesized_expression "(lVar8 + lVar9)" ( (binary_expression "lVar8 + lVar9" identifier + identifier) )) * number_literal)) )))) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original prototype: void GetPerceptualHashDistortion._omp_fn.6(anon_struct_32_4_e774f142 *\n   param_0) */\n\nvoid __thiscall GetPerceptualHashDistortion__omp_fn_6(void *this)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined1 auVar3 [16];\n  undefined *puVar4;\n  int iVar5;\n  int iVar6;\n  long lVar7;\n  long lVar8;\n  long lVar9;\n  long lVar10;\n  long lVar11;\n  long lVar12;\n  double dVar13;\n  double local_78;\n  long local_70;\n  double *local_60;\n  long local_58;\n  long local_50;\n  \n  iVar5 = omp_get_num_threads();\n  iVar6 = omp_get_thread_num();\n  auVar3._8_8_ = 0;\n  auVar3._0_8_ = SUB168(SEXT816(0x40),8);\n  auVar3 = auVar3 << 0x40 | ZEXT816(0x40);\n  lVar7 = SUB168(auVar3 / SEXT816((long)iVar5),0);\n  lVar8 = SUB168(auVar3 % SEXT816((long)iVar5),0);\n  if (iVar6 < lVar8) {\n    lVar7 = lVar7 + 1;\n    lVar8 = 0;\n  }\n  lVar8 = iVar6 * lVar7 + lVar8;\n  if (lVar8 < lVar7 + lVar8) {\n    iVar5 = *(int *)((long)this + 0x18);\n    lVar1 = *(long *)((long)this + 8);\n                    /* WARNING: Load size is inaccurate */\n    lVar2 = *this;\n    local_60 = (double *)(lVar2 + lVar8 * 8);\n    local_58 = lVar1 + lVar8 * 0x2b8;\n    local_50 = lVar8 * 0x2b8 + *(long *)((long)this + 0x10);\n    do {\n      local_70 = local_50;\n      local_78 = 0.0;\n      lVar12 = local_58;\n      do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar9 = 0;\n          lVar10 = lVar12;\n          lVar11 = local_70;\n          do {\n            if (iVar5 == 0) {\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              local_78 = dVar13 * dVar13 + local_78;\n            }\n            else {\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              dVar13 = (dVar13 * dVar13) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar13);\n              if (dVar13 < 0.0) {\n                sqrt(dVar13);\n              }\n            }\n            lVar9 = lVar9 + 1;\n            lVar10 = lVar10 + 0x48;\n            lVar11 = lVar11 + 0x48;\n          } while (lVar9 < *(long *)(lVar1 + 0x90));\n        }\n        lVar12 = lVar12 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar12 != local_58 + 0x40);\n      *local_60 = local_78 + *local_60;\n      puVar4 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;\n      GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);\n      *(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);\n      GOMP_critical_name_end(puVar4);\n      local_60 = local_60 + 1;\n      local_58 = local_58 + 0x2b8;\n      local_50 = local_50 + 0x2b8;\n    } while (local_60 != (double *)(lVar2 + (lVar7 + lVar8) * 8));\n  }\n  return;\n}\n\n" comment (function_definition "void __thiscall GetPerceptualHashDistortion__omp_fn_6(void *this)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined1 auVar3 [16];\n  undefined *puVar4;\n  int iVar5;\n  int iVar6;\n  long lVar7;\n  long lVar8;\n  long lVar9;\n  long lVar10;\n  long lVar11;\n  long lVar12;\n  double dVar13;\n  double local_78;\n  long local_70;\n  double *local_60;\n  long local_58;\n  long local_50;\n  \n  iVar5 = omp_get_num_threads();\n  iVar6 = omp_get_thread_num();\n  auVar3._8_8_ = 0;\n  auVar3._0_8_ = SUB168(SEXT816(0x40),8);\n  auVar3 = auVar3 << 0x40 | ZEXT816(0x40);\n  lVar7 = SUB168(auVar3 / SEXT816((long)iVar5),0);\n  lVar8 = SUB168(auVar3 % SEXT816((long)iVar5),0);\n  if (iVar6 < lVar8) {\n    lVar7 = lVar7 + 1;\n    lVar8 = 0;\n  }\n  lVar8 = iVar6 * lVar7 + lVar8;\n  if (lVar8 < lVar7 + lVar8) {\n    iVar5 = *(int *)((long)this + 0x18);\n    lVar1 = *(long *)((long)this + 8);\n                    /* WARNING: Load size is inaccurate */\n    lVar2 = *this;\n    local_60 = (double *)(lVar2 + lVar8 * 8);\n    local_58 = lVar1 + lVar8 * 0x2b8;\n    local_50 = lVar8 * 0x2b8 + *(long *)((long)this + 0x10);\n    do {\n      local_70 = local_50;\n      local_78 = 0.0;\n      lVar12 = local_58;\n      do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar9 = 0;\n          lVar10 = lVar12;\n          lVar11 = local_70;\n          do {\n            if (iVar5 == 0) {\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              local_78 = dVar13 * dVar13 + local_78;\n            }\n            else {\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              dVar13 = (dVar13 * dVar13) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar13);\n              if (dVar13 < 0.0) {\n                sqrt(dVar13);\n              }\n            }\n            lVar9 = lVar9 + 1;\n            lVar10 = lVar10 + 0x48;\n            lVar11 = lVar11 + 0x48;\n          } while (lVar9 < *(long *)(lVar1 + 0x90));\n        }\n        lVar12 = lVar12 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar12 != local_58 + 0x40);\n      *local_60 = local_78 + *local_60;\n      puVar4 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;\n      GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);\n      *(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);\n      GOMP_critical_name_end(puVar4);\n      local_60 = local_60 + 1;\n      local_58 = local_58 + 0x2b8;\n      local_50 = local_50 + 0x2b8;\n    } while (local_60 != (double *)(lVar2 + (lVar7 + lVar8) * 8));\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (function_declarator "GetPerceptualHashDistortion__omp_fn_6(void *this)" identifier (parameter_list "(void *this)" ( (parameter_declaration "void *this" primitive_type (pointer_declarator "*this" * identifier)) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  undefined1 auVar3 [16];\n  undefined *puVar4;\n  int iVar5;\n  int iVar6;\n  long lVar7;\n  long lVar8;\n  long lVar9;\n  long lVar10;\n  long lVar11;\n  long lVar12;\n  double dVar13;\n  double local_78;\n  long local_70;\n  double *local_60;\n  long local_58;\n  long local_50;\n  \n  iVar5 = omp_get_num_threads();\n  iVar6 = omp_get_thread_num();\n  auVar3._8_8_ = 0;\n  auVar3._0_8_ = SUB168(SEXT816(0x40),8);\n  auVar3 = auVar3 << 0x40 | ZEXT816(0x40);\n  lVar7 = SUB168(auVar3 / SEXT816((long)iVar5),0);\n  lVar8 = SUB168(auVar3 % SEXT816((long)iVar5),0);\n  if (iVar6 < lVar8) {\n    lVar7 = lVar7 + 1;\n    lVar8 = 0;\n  }\n  lVar8 = iVar6 * lVar7 + lVar8;\n  if (lVar8 < lVar7 + lVar8) {\n    iVar5 = *(int *)((long)this + 0x18);\n    lVar1 = *(long *)((long)this + 8);\n                    /* WARNING: Load size is inaccurate */\n    lVar2 = *this;\n    local_60 = (double *)(lVar2 + lVar8 * 8);\n    local_58 = lVar1 + lVar8 * 0x2b8;\n    local_50 = lVar8 * 0x2b8 + *(long *)((long)this + 0x10);\n    do {\n      local_70 = local_50;\n      local_78 = 0.0;\n      lVar12 = local_58;\n      do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar9 = 0;\n          lVar10 = lVar12;\n          lVar11 = local_70;\n          do {\n            if (iVar5 == 0) {\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              local_78 = dVar13 * dVar13 + local_78;\n            }\n            else {\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              dVar13 = (dVar13 * dVar13) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar13);\n              if (dVar13 < 0.0) {\n                sqrt(dVar13);\n              }\n            }\n            lVar9 = lVar9 + 1;\n            lVar10 = lVar10 + 0x48;\n            lVar11 = lVar11 + 0x48;\n          } while (lVar9 < *(long *)(lVar1 + 0x90));\n        }\n        lVar12 = lVar12 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar12 != local_58 + 0x40);\n      *local_60 = local_78 + *local_60;\n      puVar4 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;\n      GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);\n      *(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);\n      GOMP_critical_name_end(puVar4);\n      local_60 = local_60 + 1;\n      local_58 = local_58 + 0x2b8;\n      local_50 = local_50 + 0x2b8;\n    } while (local_60 != (double *)(lVar2 + (lVar7 + lVar8) * 8));\n  }\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 auVar3 [16];" type_identifier (array_declarator "auVar3 [16]" identifier [ number_literal ]) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) 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 "long lVar12;" (sized_type_specifier "long" long) identifier ;) (declaration "double dVar13;" primitive_type identifier ;) (declaration "double local_78;" primitive_type identifier ;) (declaration "long local_70;" (sized_type_specifier "long" long) identifier ;) (declaration "double *local_60;" primitive_type (pointer_declarator "*local_60" * identifier) ;) (declaration "long local_58;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_50;" (sized_type_specifier "long" long) identifier ;) (expression_statement "iVar5 = omp_get_num_threads();" (assignment_expression "iVar5 = omp_get_num_threads()" identifier = (call_expression "omp_get_num_threads()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar6 = omp_get_thread_num();" (assignment_expression "iVar6 = omp_get_thread_num()" identifier = (call_expression "omp_get_thread_num()" identifier (argument_list "()" ( )))) ;) (expression_statement "auVar3._8_8_ = 0;" (assignment_expression "auVar3._8_8_ = 0" (field_expression "auVar3._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar3._0_8_ = SUB168(SEXT816(0x40),8);" (assignment_expression "auVar3._0_8_ = SUB168(SEXT816(0x40),8)" (field_expression "auVar3._0_8_" identifier . field_identifier) = (call_expression "SUB168(SEXT816(0x40),8)" identifier (argument_list "(SEXT816(0x40),8)" ( (call_expression "SEXT816(0x40)" identifier (argument_list "(0x40)" ( number_literal ))) , number_literal )))) ;) (expression_statement "auVar3 = auVar3 << 0x40 | ZEXT816(0x40);" (assignment_expression "auVar3 = auVar3 << 0x40 | ZEXT816(0x40)" identifier = (binary_expression "auVar3 << 0x40 | ZEXT816(0x40)" (binary_expression "auVar3 << 0x40" identifier << number_literal) | (call_expression "ZEXT816(0x40)" identifier (argument_list "(0x40)" ( number_literal ))))) ;) (expression_statement "lVar7 = SUB168(auVar3 / SEXT816((long)iVar5),0);" (assignment_expression "lVar7 = SUB168(auVar3 / SEXT816((long)iVar5),0)" identifier = (call_expression "SUB168(auVar3 / SEXT816((long)iVar5),0)" identifier (argument_list "(auVar3 / SEXT816((long)iVar5),0)" ( (binary_expression "auVar3 / SEXT816((long)iVar5)" identifier / (call_expression "SEXT816((long)iVar5)" identifier (argument_list "((long)iVar5)" ( (cast_expression "(long)iVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) )))) , number_literal )))) ;) (expression_statement "lVar8 = SUB168(auVar3 % SEXT816((long)iVar5),0);" (assignment_expression "lVar8 = SUB168(auVar3 % SEXT816((long)iVar5),0)" identifier = (call_expression "SUB168(auVar3 % SEXT816((long)iVar5),0)" identifier (argument_list "(auVar3 % SEXT816((long)iVar5),0)" ( (binary_expression "auVar3 % SEXT816((long)iVar5)" identifier % (call_expression "SEXT816((long)iVar5)" identifier (argument_list "((long)iVar5)" ( (cast_expression "(long)iVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) )))) , number_literal )))) ;) (if_statement "if (iVar6 < lVar8) {\n    lVar7 = lVar7 + 1;\n    lVar8 = 0;\n  }" if (parenthesized_expression "(iVar6 < lVar8)" ( (binary_expression "iVar6 < lVar8" identifier < identifier) )) (compound_statement "{\n    lVar7 = lVar7 + 1;\n    lVar8 = 0;\n  }" { (expression_statement "lVar7 = lVar7 + 1;" (assignment_expression "lVar7 = lVar7 + 1" identifier = (binary_expression "lVar7 + 1" identifier + number_literal)) ;) (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" identifier = number_literal) ;) })) (expression_statement "lVar8 = iVar6 * lVar7 + lVar8;" (assignment_expression "lVar8 = iVar6 * lVar7 + lVar8" identifier = (binary_expression "iVar6 * lVar7 + lVar8" (binary_expression "iVar6 * lVar7" identifier * identifier) + identifier)) ;) (if_statement "if (lVar8 < lVar7 + lVar8) {\n    iVar5 = *(int *)((long)this + 0x18);\n    lVar1 = *(long *)((long)this + 8);\n                    /* WARNING: Load size is inaccurate */\n    lVar2 = *this;\n    local_60 = (double *)(lVar2 + lVar8 * 8);\n    local_58 = lVar1 + lVar8 * 0x2b8;\n    local_50 = lVar8 * 0x2b8 + *(long *)((long)this + 0x10);\n    do {\n      local_70 = local_50;\n      local_78 = 0.0;\n      lVar12 = local_58;\n      do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar9 = 0;\n          lVar10 = lVar12;\n          lVar11 = local_70;\n          do {\n            if (iVar5 == 0) {\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              local_78 = dVar13 * dVar13 + local_78;\n            }\n            else {\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              dVar13 = (dVar13 * dVar13) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar13);\n              if (dVar13 < 0.0) {\n                sqrt(dVar13);\n              }\n            }\n            lVar9 = lVar9 + 1;\n            lVar10 = lVar10 + 0x48;\n            lVar11 = lVar11 + 0x48;\n          } while (lVar9 < *(long *)(lVar1 + 0x90));\n        }\n        lVar12 = lVar12 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar12 != local_58 + 0x40);\n      *local_60 = local_78 + *local_60;\n      puVar4 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;\n      GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);\n      *(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);\n      GOMP_critical_name_end(puVar4);\n      local_60 = local_60 + 1;\n      local_58 = local_58 + 0x2b8;\n      local_50 = local_50 + 0x2b8;\n    } while (local_60 != (double *)(lVar2 + (lVar7 + lVar8) * 8));\n  }" if (parenthesized_expression "(lVar8 < lVar7 + lVar8)" ( (binary_expression "lVar8 < lVar7 + lVar8" identifier < (binary_expression "lVar7 + lVar8" identifier + identifier)) )) (compound_statement "{\n    iVar5 = *(int *)((long)this + 0x18);\n    lVar1 = *(long *)((long)this + 8);\n                    /* WARNING: Load size is inaccurate */\n    lVar2 = *this;\n    local_60 = (double *)(lVar2 + lVar8 * 8);\n    local_58 = lVar1 + lVar8 * 0x2b8;\n    local_50 = lVar8 * 0x2b8 + *(long *)((long)this + 0x10);\n    do {\n      local_70 = local_50;\n      local_78 = 0.0;\n      lVar12 = local_58;\n      do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar9 = 0;\n          lVar10 = lVar12;\n          lVar11 = local_70;\n          do {\n            if (iVar5 == 0) {\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              local_78 = dVar13 * dVar13 + local_78;\n            }\n            else {\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              dVar13 = (dVar13 * dVar13) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar13);\n              if (dVar13 < 0.0) {\n                sqrt(dVar13);\n              }\n            }\n            lVar9 = lVar9 + 1;\n            lVar10 = lVar10 + 0x48;\n            lVar11 = lVar11 + 0x48;\n          } while (lVar9 < *(long *)(lVar1 + 0x90));\n        }\n        lVar12 = lVar12 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar12 != local_58 + 0x40);\n      *local_60 = local_78 + *local_60;\n      puVar4 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;\n      GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);\n      *(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);\n      GOMP_critical_name_end(puVar4);\n      local_60 = local_60 + 1;\n      local_58 = local_58 + 0x2b8;\n      local_50 = local_50 + 0x2b8;\n    } while (local_60 != (double *)(lVar2 + (lVar7 + lVar8) * 8));\n  }" { (expression_statement "iVar5 = *(int *)((long)this + 0x18);" (assignment_expression "iVar5 = *(int *)((long)this + 0x18)" identifier = (pointer_expression "*(int *)((long)this + 0x18)" * (cast_expression "(int *)((long)this + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)this + 0x18)" ( (binary_expression "(long)this + 0x18" (cast_expression "(long)this" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "lVar1 = *(long *)((long)this + 8);" (assignment_expression "lVar1 = *(long *)((long)this + 8)" identifier = (pointer_expression "*(long *)((long)this + 8)" * (cast_expression "(long *)((long)this + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)this + 8)" ( (binary_expression "(long)this + 8" (cast_expression "(long)this" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) comment (expression_statement "lVar2 = *this;" (assignment_expression "lVar2 = *this" identifier = (pointer_expression "*this" * identifier)) ;) (expression_statement "local_60 = (double *)(lVar2 + lVar8 * 8);" (assignment_expression "local_60 = (double *)(lVar2 + lVar8 * 8)" identifier = (cast_expression "(double *)(lVar2 + lVar8 * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + lVar8 * 8)" ( (binary_expression "lVar2 + lVar8 * 8" identifier + (binary_expression "lVar8 * 8" identifier * number_literal)) )))) ;) (expression_statement "local_58 = lVar1 + lVar8 * 0x2b8;" (assignment_expression "local_58 = lVar1 + lVar8 * 0x2b8" identifier = (binary_expression "lVar1 + lVar8 * 0x2b8" identifier + (binary_expression "lVar8 * 0x2b8" identifier * number_literal))) ;) (expression_statement "local_50 = lVar8 * 0x2b8 + *(long *)((long)this + 0x10);" (assignment_expression "local_50 = lVar8 * 0x2b8 + *(long *)((long)this + 0x10)" identifier = (binary_expression "lVar8 * 0x2b8 + *(long *)((long)this + 0x10)" (binary_expression "lVar8 * 0x2b8" identifier * number_literal) + (pointer_expression "*(long *)((long)this + 0x10)" * (cast_expression "(long *)((long)this + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)this + 0x10)" ( (binary_expression "(long)this + 0x10" (cast_expression "(long)this" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))))) ;) (do_statement "do {\n      local_70 = local_50;\n      local_78 = 0.0;\n      lVar12 = local_58;\n      do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar9 = 0;\n          lVar10 = lVar12;\n          lVar11 = local_70;\n          do {\n            if (iVar5 == 0) {\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              local_78 = dVar13 * dVar13 + local_78;\n            }\n            else {\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              dVar13 = (dVar13 * dVar13) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar13);\n              if (dVar13 < 0.0) {\n                sqrt(dVar13);\n              }\n            }\n            lVar9 = lVar9 + 1;\n            lVar10 = lVar10 + 0x48;\n            lVar11 = lVar11 + 0x48;\n          } while (lVar9 < *(long *)(lVar1 + 0x90));\n        }\n        lVar12 = lVar12 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar12 != local_58 + 0x40);\n      *local_60 = local_78 + *local_60;\n      puVar4 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;\n      GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);\n      *(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);\n      GOMP_critical_name_end(puVar4);\n      local_60 = local_60 + 1;\n      local_58 = local_58 + 0x2b8;\n      local_50 = local_50 + 0x2b8;\n    } while (local_60 != (double *)(lVar2 + (lVar7 + lVar8) * 8));" do (compound_statement "{\n      local_70 = local_50;\n      local_78 = 0.0;\n      lVar12 = local_58;\n      do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar9 = 0;\n          lVar10 = lVar12;\n          lVar11 = local_70;\n          do {\n            if (iVar5 == 0) {\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              local_78 = dVar13 * dVar13 + local_78;\n            }\n            else {\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              dVar13 = (dVar13 * dVar13) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar13);\n              if (dVar13 < 0.0) {\n                sqrt(dVar13);\n              }\n            }\n            lVar9 = lVar9 + 1;\n            lVar10 = lVar10 + 0x48;\n            lVar11 = lVar11 + 0x48;\n          } while (lVar9 < *(long *)(lVar1 + 0x90));\n        }\n        lVar12 = lVar12 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar12 != local_58 + 0x40);\n      *local_60 = local_78 + *local_60;\n      puVar4 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;\n      GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);\n      *(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);\n      GOMP_critical_name_end(puVar4);\n      local_60 = local_60 + 1;\n      local_58 = local_58 + 0x2b8;\n      local_50 = local_50 + 0x2b8;\n    }" { (expression_statement "local_70 = local_50;" (assignment_expression "local_70 = local_50" identifier = identifier) ;) (expression_statement "local_78 = 0.0;" (assignment_expression "local_78 = 0.0" identifier = number_literal) ;) (expression_statement "lVar12 = local_58;" (assignment_expression "lVar12 = local_58" identifier = identifier) ;) (do_statement "do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar9 = 0;\n          lVar10 = lVar12;\n          lVar11 = local_70;\n          do {\n            if (iVar5 == 0) {\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              local_78 = dVar13 * dVar13 + local_78;\n            }\n            else {\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              dVar13 = (dVar13 * dVar13) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar13);\n              if (dVar13 < 0.0) {\n                sqrt(dVar13);\n              }\n            }\n            lVar9 = lVar9 + 1;\n            lVar10 = lVar10 + 0x48;\n            lVar11 = lVar11 + 0x48;\n          } while (lVar9 < *(long *)(lVar1 + 0x90));\n        }\n        lVar12 = lVar12 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar12 != local_58 + 0x40);" do (compound_statement "{\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar9 = 0;\n          lVar10 = lVar12;\n          lVar11 = local_70;\n          do {\n            if (iVar5 == 0) {\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              local_78 = dVar13 * dVar13 + local_78;\n            }\n            else {\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              dVar13 = (dVar13 * dVar13) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar13);\n              if (dVar13 < 0.0) {\n                sqrt(dVar13);\n              }\n            }\n            lVar9 = lVar9 + 1;\n            lVar10 = lVar10 + 0x48;\n            lVar11 = lVar11 + 0x48;\n          } while (lVar9 < *(long *)(lVar1 + 0x90));\n        }\n        lVar12 = lVar12 + 8;\n        local_70 = local_70 + 8;\n      }" { (if_statement "if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar9 = 0;\n          lVar10 = lVar12;\n          lVar11 = local_70;\n          do {\n            if (iVar5 == 0) {\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              local_78 = dVar13 * dVar13 + local_78;\n            }\n            else {\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              dVar13 = (dVar13 * dVar13) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar13);\n              if (dVar13 < 0.0) {\n                sqrt(dVar13);\n              }\n            }\n            lVar9 = lVar9 + 1;\n            lVar10 = lVar10 + 0x48;\n            lVar11 = lVar11 + 0x48;\n          } while (lVar9 < *(long *)(lVar1 + 0x90));\n        }" if (parenthesized_expression "(0 < *(long *)(lVar1 + 0x90))" ( (binary_expression "0 < *(long *)(lVar1 + 0x90)" number_literal < (pointer_expression "*(long *)(lVar1 + 0x90)" * (cast_expression "(long *)(lVar1 + 0x90)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x90)" ( (binary_expression "lVar1 + 0x90" identifier + number_literal) ))))) )) (compound_statement "{\n          lVar9 = 0;\n          lVar10 = lVar12;\n          lVar11 = local_70;\n          do {\n            if (iVar5 == 0) {\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              local_78 = dVar13 * dVar13 + local_78;\n            }\n            else {\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              dVar13 = (dVar13 * dVar13) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar13);\n              if (dVar13 < 0.0) {\n                sqrt(dVar13);\n              }\n            }\n            lVar9 = lVar9 + 1;\n            lVar10 = lVar10 + 0x48;\n            lVar11 = lVar11 + 0x48;\n          } while (lVar9 < *(long *)(lVar1 + 0x90));\n        }" { (expression_statement "lVar9 = 0;" (assignment_expression "lVar9 = 0" identifier = number_literal) ;) (expression_statement "lVar10 = lVar12;" (assignment_expression "lVar10 = lVar12" identifier = identifier) ;) (expression_statement "lVar11 = local_70;" (assignment_expression "lVar11 = local_70" identifier = identifier) ;) (do_statement "do {\n            if (iVar5 == 0) {\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              local_78 = dVar13 * dVar13 + local_78;\n            }\n            else {\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              dVar13 = (dVar13 * dVar13) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar13);\n              if (dVar13 < 0.0) {\n                sqrt(dVar13);\n              }\n            }\n            lVar9 = lVar9 + 1;\n            lVar10 = lVar10 + 0x48;\n            lVar11 = lVar11 + 0x48;\n          } while (lVar9 < *(long *)(lVar1 + 0x90));" do (compound_statement "{\n            if (iVar5 == 0) {\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              local_78 = dVar13 * dVar13 + local_78;\n            }\n            else {\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              dVar13 = (dVar13 * dVar13) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar13);\n              if (dVar13 < 0.0) {\n                sqrt(dVar13);\n              }\n            }\n            lVar9 = lVar9 + 1;\n            lVar10 = lVar10 + 0x48;\n            lVar11 = lVar11 + 0x48;\n          }" { (if_statement "if (iVar5 == 0) {\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              local_78 = dVar13 * dVar13 + local_78;\n            }\n            else {\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              dVar13 = (dVar13 * dVar13) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar13);\n              if (dVar13 < 0.0) {\n                sqrt(dVar13);\n              }\n            }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              local_78 = dVar13 * dVar13 + local_78;\n            }" { (expression_statement "dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);" (assignment_expression "dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8)" identifier = (binary_expression "*(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8)" (pointer_expression "*(double *)(lVar11 + 0xb8)" * (cast_expression "(double *)(lVar11 + 0xb8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0xb8)" ( (binary_expression "lVar11 + 0xb8" identifier + number_literal) )))) - (pointer_expression "*(double *)(lVar10 + 0xb8)" * (cast_expression "(double *)(lVar10 + 0xb8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0xb8)" ( (binary_expression "lVar10 + 0xb8" identifier + number_literal) )))))) ;) (expression_statement "local_78 = dVar13 * dVar13 + local_78;" (assignment_expression "local_78 = dVar13 * dVar13 + local_78" identifier = (binary_expression "dVar13 * dVar13 + local_78" (binary_expression "dVar13 * dVar13" identifier * identifier) + identifier)) ;) }) (else_clause "else {\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              dVar13 = (dVar13 * dVar13) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar13);\n              if (dVar13 < 0.0) {\n                sqrt(dVar13);\n              }\n            }" else (compound_statement "{\n              dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);\n              dVar13 = (dVar13 * dVar13) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar13);\n              if (dVar13 < 0.0) {\n                sqrt(dVar13);\n              }\n            }" { (expression_statement "dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8);" (assignment_expression "dVar13 = *(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8)" identifier = (binary_expression "*(double *)(lVar11 + 0xb8) - *(double *)(lVar10 + 0xb8)" (pointer_expression "*(double *)(lVar11 + 0xb8)" * (cast_expression "(double *)(lVar11 + 0xb8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0xb8)" ( (binary_expression "lVar11 + 0xb8" identifier + number_literal) )))) - (pointer_expression "*(double *)(lVar10 + 0xb8)" * (cast_expression "(double *)(lVar10 + 0xb8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0xb8)" ( (binary_expression "lVar10 + 0xb8" identifier + number_literal) )))))) ;) (expression_statement "dVar13 = (dVar13 * dVar13) / (double)*(ulong *)(lVar1 + 0x2b0);" (assignment_expression "dVar13 = (dVar13 * dVar13) / (double)*(ulong *)(lVar1 + 0x2b0)" identifier = (binary_expression "(dVar13 * dVar13) / (double)*(ulong *)(lVar1 + 0x2b0)" (parenthesized_expression "(dVar13 * dVar13)" ( (binary_expression "dVar13 * dVar13" identifier * identifier) )) / (cast_expression "(double)*(ulong *)(lVar1 + 0x2b0)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(ulong *)(lVar1 + 0x2b0)" * (cast_expression "(ulong *)(lVar1 + 0x2b0)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x2b0)" ( (binary_expression "lVar1 + 0x2b0" identifier + number_literal) ))))))) ;) (expression_statement "local_78 = SQRT(dVar13);" (assignment_expression "local_78 = SQRT(dVar13)" identifier = (call_expression "SQRT(dVar13)" identifier (argument_list "(dVar13)" ( identifier )))) ;) (if_statement "if (dVar13 < 0.0) {\n                sqrt(dVar13);\n              }" if (parenthesized_expression "(dVar13 < 0.0)" ( (binary_expression "dVar13 < 0.0" identifier < number_literal) )) (compound_statement "{\n                sqrt(dVar13);\n              }" { (expression_statement "sqrt(dVar13);" (call_expression "sqrt(dVar13)" identifier (argument_list "(dVar13)" ( identifier ))) ;) })) }))) (expression_statement "lVar9 = lVar9 + 1;" (assignment_expression "lVar9 = lVar9 + 1" identifier = (binary_expression "lVar9 + 1" identifier + number_literal)) ;) (expression_statement "lVar10 = lVar10 + 0x48;" (assignment_expression "lVar10 = lVar10 + 0x48" identifier = (binary_expression "lVar10 + 0x48" identifier + number_literal)) ;) (expression_statement "lVar11 = lVar11 + 0x48;" (assignment_expression "lVar11 = lVar11 + 0x48" identifier = (binary_expression "lVar11 + 0x48" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar9 < *(long *)(lVar1 + 0x90))" ( (binary_expression "lVar9 < *(long *)(lVar1 + 0x90)" identifier < (pointer_expression "*(long *)(lVar1 + 0x90)" * (cast_expression "(long *)(lVar1 + 0x90)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x90)" ( (binary_expression "lVar1 + 0x90" identifier + number_literal) ))))) )) ;) })) (expression_statement "lVar12 = lVar12 + 8;" (assignment_expression "lVar12 = lVar12 + 8" identifier = (binary_expression "lVar12 + 8" identifier + number_literal)) ;) (expression_statement "local_70 = local_70 + 8;" (assignment_expression "local_70 = local_70 + 8" identifier = (binary_expression "local_70 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar12 != local_58 + 0x40)" ( (binary_expression "lVar12 != local_58 + 0x40" identifier != (binary_expression "local_58 + 0x40" identifier + number_literal)) )) ;) (expression_statement "*local_60 = local_78 + *local_60;" (assignment_expression "*local_60 = local_78 + *local_60" (pointer_expression "*local_60" * identifier) = (binary_expression "local_78 + *local_60" identifier + (pointer_expression "*local_60" * identifier))) ;) (expression_statement "puVar4 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;" (assignment_expression "puVar4 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0" identifier = identifier) ;) (expression_statement "GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);" (call_expression "GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0)" identifier (argument_list "(PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0)" ( identifier ))) ;) (expression_statement "*(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);" (assignment_expression "*(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200)" (pointer_expression "*(double *)(lVar2 + 0x200)" * (cast_expression "(double *)(lVar2 + 0x200)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x200)" ( (binary_expression "lVar2 + 0x200" identifier + number_literal) )))) = (binary_expression "local_78 + *(double *)(lVar2 + 0x200)" identifier + (pointer_expression "*(double *)(lVar2 + 0x200)" * (cast_expression "(double *)(lVar2 + 0x200)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x200)" ( (binary_expression "lVar2 + 0x200" identifier + number_literal) )))))) ;) (expression_statement "GOMP_critical_name_end(puVar4);" (call_expression "GOMP_critical_name_end(puVar4)" identifier (argument_list "(puVar4)" ( identifier ))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_58 = local_58 + 0x2b8;" (assignment_expression "local_58 = local_58 + 0x2b8" identifier = (binary_expression "local_58 + 0x2b8" identifier + number_literal)) ;) (expression_statement "local_50 = local_50 + 0x2b8;" (assignment_expression "local_50 = local_50 + 0x2b8" identifier = (binary_expression "local_50 + 0x2b8" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_60 != (double *)(lVar2 + (lVar7 + lVar8) * 8))" ( (binary_expression "local_60 != (double *)(lVar2 + (lVar7 + lVar8) * 8)" identifier != (cast_expression "(double *)(lVar2 + (lVar7 + lVar8) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + (lVar7 + lVar8) * 8)" ( (binary_expression "lVar2 + (lVar7 + lVar8) * 8" identifier + (binary_expression "(lVar7 + lVar8) * 8" (parenthesized_expression "(lVar7 + lVar8)" ( (binary_expression "lVar7 + lVar8" identifier + identifier) )) * number_literal)) )))) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00185b44(long *param_1)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined1 auVar3 [16];\n  long lVar4;\n  undefined *puVar5;\n  int iVar6;\n  int iVar7;\n  long lVar8;\n  long lVar9;\n  long lVar10;\n  long lVar11;\n  long lVar12;\n  long lVar13;\n  double dVar14;\n  double local_78;\n  long local_70;\n  double *local_60;\n  long local_58;\n  long local_50;\n  \n  iVar6 = omp_get_num_threads();\n  iVar7 = omp_get_thread_num();\n  auVar3._8_8_ = 0;\n  auVar3._0_8_ = SUB168(SEXT816(0x40),8);\n  auVar3 = auVar3 << 0x40 | ZEXT816(0x40);\n  lVar8 = SUB168(auVar3 / SEXT816((long)iVar6),0);\n  lVar9 = SUB168(auVar3 % SEXT816((long)iVar6),0);\n  if (iVar7 < lVar9) {\n    lVar8 = lVar8 + 1;\n    lVar9 = 0;\n  }\n  lVar9 = iVar7 * lVar8 + lVar9;\n  if (lVar9 < lVar8 + lVar9) {\n    lVar4 = param_1[3];\n    lVar1 = param_1[1];\n    lVar2 = *param_1;\n    local_60 = (double *)(lVar2 + lVar9 * 8);\n    local_58 = lVar1 + lVar9 * 0x2b8;\n    local_50 = lVar9 * 0x2b8 + param_1[2];\n    do {\n      local_70 = local_50;\n      local_78 = 0.0;\n      lVar13 = local_58;\n      do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }\n        lVar13 = lVar13 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar13 != local_58 + 0x40);\n      *local_60 = local_78 + *local_60;\n      puVar5 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;\n      GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);\n      *(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);\n      GOMP_critical_name_end(puVar5);\n      local_60 = local_60 + 1;\n      local_58 = local_58 + 0x2b8;\n      local_50 = local_50 + 0x2b8;\n    } while (local_60 != (double *)(lVar2 + (lVar8 + lVar9) * 8));\n  }\n  return;\n}\n\n" (function_definition "void FUN_00185b44(long *param_1)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined1 auVar3 [16];\n  long lVar4;\n  undefined *puVar5;\n  int iVar6;\n  int iVar7;\n  long lVar8;\n  long lVar9;\n  long lVar10;\n  long lVar11;\n  long lVar12;\n  long lVar13;\n  double dVar14;\n  double local_78;\n  long local_70;\n  double *local_60;\n  long local_58;\n  long local_50;\n  \n  iVar6 = omp_get_num_threads();\n  iVar7 = omp_get_thread_num();\n  auVar3._8_8_ = 0;\n  auVar3._0_8_ = SUB168(SEXT816(0x40),8);\n  auVar3 = auVar3 << 0x40 | ZEXT816(0x40);\n  lVar8 = SUB168(auVar3 / SEXT816((long)iVar6),0);\n  lVar9 = SUB168(auVar3 % SEXT816((long)iVar6),0);\n  if (iVar7 < lVar9) {\n    lVar8 = lVar8 + 1;\n    lVar9 = 0;\n  }\n  lVar9 = iVar7 * lVar8 + lVar9;\n  if (lVar9 < lVar8 + lVar9) {\n    lVar4 = param_1[3];\n    lVar1 = param_1[1];\n    lVar2 = *param_1;\n    local_60 = (double *)(lVar2 + lVar9 * 8);\n    local_58 = lVar1 + lVar9 * 0x2b8;\n    local_50 = lVar9 * 0x2b8 + param_1[2];\n    do {\n      local_70 = local_50;\n      local_78 = 0.0;\n      lVar13 = local_58;\n      do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }\n        lVar13 = lVar13 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar13 != local_58 + 0x40);\n      *local_60 = local_78 + *local_60;\n      puVar5 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;\n      GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);\n      *(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);\n      GOMP_critical_name_end(puVar5);\n      local_60 = local_60 + 1;\n      local_58 = local_58 + 0x2b8;\n      local_50 = local_50 + 0x2b8;\n    } while (local_60 != (double *)(lVar2 + (lVar8 + lVar9) * 8));\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00185b44(long *param_1)" identifier (parameter_list "(long *param_1)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  undefined1 auVar3 [16];\n  long lVar4;\n  undefined *puVar5;\n  int iVar6;\n  int iVar7;\n  long lVar8;\n  long lVar9;\n  long lVar10;\n  long lVar11;\n  long lVar12;\n  long lVar13;\n  double dVar14;\n  double local_78;\n  long local_70;\n  double *local_60;\n  long local_58;\n  long local_50;\n  \n  iVar6 = omp_get_num_threads();\n  iVar7 = omp_get_thread_num();\n  auVar3._8_8_ = 0;\n  auVar3._0_8_ = SUB168(SEXT816(0x40),8);\n  auVar3 = auVar3 << 0x40 | ZEXT816(0x40);\n  lVar8 = SUB168(auVar3 / SEXT816((long)iVar6),0);\n  lVar9 = SUB168(auVar3 % SEXT816((long)iVar6),0);\n  if (iVar7 < lVar9) {\n    lVar8 = lVar8 + 1;\n    lVar9 = 0;\n  }\n  lVar9 = iVar7 * lVar8 + lVar9;\n  if (lVar9 < lVar8 + lVar9) {\n    lVar4 = param_1[3];\n    lVar1 = param_1[1];\n    lVar2 = *param_1;\n    local_60 = (double *)(lVar2 + lVar9 * 8);\n    local_58 = lVar1 + lVar9 * 0x2b8;\n    local_50 = lVar9 * 0x2b8 + param_1[2];\n    do {\n      local_70 = local_50;\n      local_78 = 0.0;\n      lVar13 = local_58;\n      do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }\n        lVar13 = lVar13 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar13 != local_58 + 0x40);\n      *local_60 = local_78 + *local_60;\n      puVar5 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;\n      GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);\n      *(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);\n      GOMP_critical_name_end(puVar5);\n      local_60 = local_60 + 1;\n      local_58 = local_58 + 0x2b8;\n      local_50 = local_50 + 0x2b8;\n    } while (local_60 != (double *)(lVar2 + (lVar8 + lVar9) * 8));\n  }\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 auVar3 [16];" type_identifier (array_declarator "auVar3 [16]" identifier [ number_literal ]) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) 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 "long lVar12;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar13;" (sized_type_specifier "long" long) identifier ;) (declaration "double dVar14;" primitive_type identifier ;) (declaration "double local_78;" primitive_type identifier ;) (declaration "long local_70;" (sized_type_specifier "long" long) identifier ;) (declaration "double *local_60;" primitive_type (pointer_declarator "*local_60" * identifier) ;) (declaration "long local_58;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_50;" (sized_type_specifier "long" long) identifier ;) (expression_statement "iVar6 = omp_get_num_threads();" (assignment_expression "iVar6 = omp_get_num_threads()" identifier = (call_expression "omp_get_num_threads()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar7 = omp_get_thread_num();" (assignment_expression "iVar7 = omp_get_thread_num()" identifier = (call_expression "omp_get_thread_num()" identifier (argument_list "()" ( )))) ;) (expression_statement "auVar3._8_8_ = 0;" (assignment_expression "auVar3._8_8_ = 0" (field_expression "auVar3._8_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar3._0_8_ = SUB168(SEXT816(0x40),8);" (assignment_expression "auVar3._0_8_ = SUB168(SEXT816(0x40),8)" (field_expression "auVar3._0_8_" identifier . field_identifier) = (call_expression "SUB168(SEXT816(0x40),8)" identifier (argument_list "(SEXT816(0x40),8)" ( (call_expression "SEXT816(0x40)" identifier (argument_list "(0x40)" ( number_literal ))) , number_literal )))) ;) (expression_statement "auVar3 = auVar3 << 0x40 | ZEXT816(0x40);" (assignment_expression "auVar3 = auVar3 << 0x40 | ZEXT816(0x40)" identifier = (binary_expression "auVar3 << 0x40 | ZEXT816(0x40)" (binary_expression "auVar3 << 0x40" identifier << number_literal) | (call_expression "ZEXT816(0x40)" identifier (argument_list "(0x40)" ( number_literal ))))) ;) (expression_statement "lVar8 = SUB168(auVar3 / SEXT816((long)iVar6),0);" (assignment_expression "lVar8 = SUB168(auVar3 / SEXT816((long)iVar6),0)" identifier = (call_expression "SUB168(auVar3 / SEXT816((long)iVar6),0)" identifier (argument_list "(auVar3 / SEXT816((long)iVar6),0)" ( (binary_expression "auVar3 / SEXT816((long)iVar6)" identifier / (call_expression "SEXT816((long)iVar6)" identifier (argument_list "((long)iVar6)" ( (cast_expression "(long)iVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) )))) , number_literal )))) ;) (expression_statement "lVar9 = SUB168(auVar3 % SEXT816((long)iVar6),0);" (assignment_expression "lVar9 = SUB168(auVar3 % SEXT816((long)iVar6),0)" identifier = (call_expression "SUB168(auVar3 % SEXT816((long)iVar6),0)" identifier (argument_list "(auVar3 % SEXT816((long)iVar6),0)" ( (binary_expression "auVar3 % SEXT816((long)iVar6)" identifier % (call_expression "SEXT816((long)iVar6)" identifier (argument_list "((long)iVar6)" ( (cast_expression "(long)iVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) )))) , number_literal )))) ;) (if_statement "if (iVar7 < lVar9) {\n    lVar8 = lVar8 + 1;\n    lVar9 = 0;\n  }" if (parenthesized_expression "(iVar7 < lVar9)" ( (binary_expression "iVar7 < lVar9" identifier < identifier) )) (compound_statement "{\n    lVar8 = lVar8 + 1;\n    lVar9 = 0;\n  }" { (expression_statement "lVar8 = lVar8 + 1;" (assignment_expression "lVar8 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) ;) (expression_statement "lVar9 = 0;" (assignment_expression "lVar9 = 0" identifier = number_literal) ;) })) (expression_statement "lVar9 = iVar7 * lVar8 + lVar9;" (assignment_expression "lVar9 = iVar7 * lVar8 + lVar9" identifier = (binary_expression "iVar7 * lVar8 + lVar9" (binary_expression "iVar7 * lVar8" identifier * identifier) + identifier)) ;) (if_statement "if (lVar9 < lVar8 + lVar9) {\n    lVar4 = param_1[3];\n    lVar1 = param_1[1];\n    lVar2 = *param_1;\n    local_60 = (double *)(lVar2 + lVar9 * 8);\n    local_58 = lVar1 + lVar9 * 0x2b8;\n    local_50 = lVar9 * 0x2b8 + param_1[2];\n    do {\n      local_70 = local_50;\n      local_78 = 0.0;\n      lVar13 = local_58;\n      do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }\n        lVar13 = lVar13 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar13 != local_58 + 0x40);\n      *local_60 = local_78 + *local_60;\n      puVar5 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;\n      GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);\n      *(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);\n      GOMP_critical_name_end(puVar5);\n      local_60 = local_60 + 1;\n      local_58 = local_58 + 0x2b8;\n      local_50 = local_50 + 0x2b8;\n    } while (local_60 != (double *)(lVar2 + (lVar8 + lVar9) * 8));\n  }" if (parenthesized_expression "(lVar9 < lVar8 + lVar9)" ( (binary_expression "lVar9 < lVar8 + lVar9" identifier < (binary_expression "lVar8 + lVar9" identifier + identifier)) )) (compound_statement "{\n    lVar4 = param_1[3];\n    lVar1 = param_1[1];\n    lVar2 = *param_1;\n    local_60 = (double *)(lVar2 + lVar9 * 8);\n    local_58 = lVar1 + lVar9 * 0x2b8;\n    local_50 = lVar9 * 0x2b8 + param_1[2];\n    do {\n      local_70 = local_50;\n      local_78 = 0.0;\n      lVar13 = local_58;\n      do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }\n        lVar13 = lVar13 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar13 != local_58 + 0x40);\n      *local_60 = local_78 + *local_60;\n      puVar5 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;\n      GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);\n      *(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);\n      GOMP_critical_name_end(puVar5);\n      local_60 = local_60 + 1;\n      local_58 = local_58 + 0x2b8;\n      local_50 = local_50 + 0x2b8;\n    } while (local_60 != (double *)(lVar2 + (lVar8 + lVar9) * 8));\n  }" { (expression_statement "lVar4 = param_1[3];" (assignment_expression "lVar4 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "lVar1 = param_1[1];" (assignment_expression "lVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "lVar2 = *param_1;" (assignment_expression "lVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "local_60 = (double *)(lVar2 + lVar9 * 8);" (assignment_expression "local_60 = (double *)(lVar2 + lVar9 * 8)" identifier = (cast_expression "(double *)(lVar2 + lVar9 * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + lVar9 * 8)" ( (binary_expression "lVar2 + lVar9 * 8" identifier + (binary_expression "lVar9 * 8" identifier * number_literal)) )))) ;) (expression_statement "local_58 = lVar1 + lVar9 * 0x2b8;" (assignment_expression "local_58 = lVar1 + lVar9 * 0x2b8" identifier = (binary_expression "lVar1 + lVar9 * 0x2b8" identifier + (binary_expression "lVar9 * 0x2b8" identifier * number_literal))) ;) (expression_statement "local_50 = lVar9 * 0x2b8 + param_1[2];" (assignment_expression "local_50 = lVar9 * 0x2b8 + param_1[2]" identifier = (binary_expression "lVar9 * 0x2b8 + param_1[2]" (binary_expression "lVar9 * 0x2b8" identifier * number_literal) + (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (do_statement "do {\n      local_70 = local_50;\n      local_78 = 0.0;\n      lVar13 = local_58;\n      do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }\n        lVar13 = lVar13 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar13 != local_58 + 0x40);\n      *local_60 = local_78 + *local_60;\n      puVar5 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;\n      GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);\n      *(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);\n      GOMP_critical_name_end(puVar5);\n      local_60 = local_60 + 1;\n      local_58 = local_58 + 0x2b8;\n      local_50 = local_50 + 0x2b8;\n    } while (local_60 != (double *)(lVar2 + (lVar8 + lVar9) * 8));" do (compound_statement "{\n      local_70 = local_50;\n      local_78 = 0.0;\n      lVar13 = local_58;\n      do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }\n        lVar13 = lVar13 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar13 != local_58 + 0x40);\n      *local_60 = local_78 + *local_60;\n      puVar5 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;\n      GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);\n      *(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);\n      GOMP_critical_name_end(puVar5);\n      local_60 = local_60 + 1;\n      local_58 = local_58 + 0x2b8;\n      local_50 = local_50 + 0x2b8;\n    }" { (expression_statement "local_70 = local_50;" (assignment_expression "local_70 = local_50" identifier = identifier) ;) (expression_statement "local_78 = 0.0;" (assignment_expression "local_78 = 0.0" identifier = number_literal) ;) (expression_statement "lVar13 = local_58;" (assignment_expression "lVar13 = local_58" identifier = identifier) ;) (do_statement "do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }\n        lVar13 = lVar13 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar13 != local_58 + 0x40);" do (compound_statement "{\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }\n        lVar13 = lVar13 + 8;\n        local_70 = local_70 + 8;\n      }" { (if_statement "if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }" if (parenthesized_expression "(0 < *(long *)(lVar1 + 0x90))" ( (binary_expression "0 < *(long *)(lVar1 + 0x90)" number_literal < (pointer_expression "*(long *)(lVar1 + 0x90)" * (cast_expression "(long *)(lVar1 + 0x90)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x90)" ( (binary_expression "lVar1 + 0x90" identifier + number_literal) ))))) )) (compound_statement "{\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }" { (expression_statement "lVar10 = 0;" (assignment_expression "lVar10 = 0" identifier = number_literal) ;) (expression_statement "lVar11 = lVar13;" (assignment_expression "lVar11 = lVar13" identifier = identifier) ;) (expression_statement "lVar12 = local_70;" (assignment_expression "lVar12 = local_70" identifier = identifier) ;) (do_statement "do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));" do (compound_statement "{\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          }" { (if_statement "if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }" if (parenthesized_expression "((int)lVar4 == 0)" ( (binary_expression "(int)lVar4 == 0" (cast_expression "(int)lVar4" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal) )) (compound_statement "{\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }" { (expression_statement "dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);" (assignment_expression "dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8)" identifier = (binary_expression "*(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8)" (pointer_expression "*(double *)(lVar12 + 0xb8)" * (cast_expression "(double *)(lVar12 + 0xb8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + 0xb8)" ( (binary_expression "lVar12 + 0xb8" identifier + number_literal) )))) - (pointer_expression "*(double *)(lVar11 + 0xb8)" * (cast_expression "(double *)(lVar11 + 0xb8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0xb8)" ( (binary_expression "lVar11 + 0xb8" identifier + number_literal) )))))) ;) (expression_statement "local_78 = dVar14 * dVar14 + local_78;" (assignment_expression "local_78 = dVar14 * dVar14 + local_78" identifier = (binary_expression "dVar14 * dVar14 + local_78" (binary_expression "dVar14 * dVar14" identifier * identifier) + identifier)) ;) }) (else_clause "else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }" else (compound_statement "{\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }" { (expression_statement "dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);" (assignment_expression "dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8)" identifier = (binary_expression "*(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8)" (pointer_expression "*(double *)(lVar12 + 0xb8)" * (cast_expression "(double *)(lVar12 + 0xb8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + 0xb8)" ( (binary_expression "lVar12 + 0xb8" identifier + number_literal) )))) - (pointer_expression "*(double *)(lVar11 + 0xb8)" * (cast_expression "(double *)(lVar11 + 0xb8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0xb8)" ( (binary_expression "lVar11 + 0xb8" identifier + number_literal) )))))) ;) (expression_statement "dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);" (assignment_expression "dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0)" identifier = (binary_expression "(dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0)" (parenthesized_expression "(dVar14 * dVar14)" ( (binary_expression "dVar14 * dVar14" identifier * identifier) )) / (cast_expression "(double)*(ulong *)(lVar1 + 0x2b0)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(ulong *)(lVar1 + 0x2b0)" * (cast_expression "(ulong *)(lVar1 + 0x2b0)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x2b0)" ( (binary_expression "lVar1 + 0x2b0" identifier + number_literal) ))))))) ;) (expression_statement "local_78 = SQRT(dVar14);" (assignment_expression "local_78 = SQRT(dVar14)" identifier = (call_expression "SQRT(dVar14)" identifier (argument_list "(dVar14)" ( identifier )))) ;) (if_statement "if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }" if (parenthesized_expression "(dVar14 < 0.0)" ( (binary_expression "dVar14 < 0.0" identifier < number_literal) )) (compound_statement "{\n                sqrt(dVar14);\n              }" { (expression_statement "sqrt(dVar14);" (call_expression "sqrt(dVar14)" identifier (argument_list "(dVar14)" ( identifier ))) ;) })) }))) (expression_statement "lVar10 = lVar10 + 1;" (assignment_expression "lVar10 = lVar10 + 1" identifier = (binary_expression "lVar10 + 1" identifier + number_literal)) ;) (expression_statement "lVar11 = lVar11 + 0x48;" (assignment_expression "lVar11 = lVar11 + 0x48" identifier = (binary_expression "lVar11 + 0x48" identifier + number_literal)) ;) (expression_statement "lVar12 = lVar12 + 0x48;" (assignment_expression "lVar12 = lVar12 + 0x48" identifier = (binary_expression "lVar12 + 0x48" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar10 < *(long *)(lVar1 + 0x90))" ( (binary_expression "lVar10 < *(long *)(lVar1 + 0x90)" identifier < (pointer_expression "*(long *)(lVar1 + 0x90)" * (cast_expression "(long *)(lVar1 + 0x90)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x90)" ( (binary_expression "lVar1 + 0x90" identifier + number_literal) ))))) )) ;) })) (expression_statement "lVar13 = lVar13 + 8;" (assignment_expression "lVar13 = lVar13 + 8" identifier = (binary_expression "lVar13 + 8" identifier + number_literal)) ;) (expression_statement "local_70 = local_70 + 8;" (assignment_expression "local_70 = local_70 + 8" identifier = (binary_expression "local_70 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar13 != local_58 + 0x40)" ( (binary_expression "lVar13 != local_58 + 0x40" identifier != (binary_expression "local_58 + 0x40" identifier + number_literal)) )) ;) (expression_statement "*local_60 = local_78 + *local_60;" (assignment_expression "*local_60 = local_78 + *local_60" (pointer_expression "*local_60" * identifier) = (binary_expression "local_78 + *local_60" identifier + (pointer_expression "*local_60" * identifier))) ;) (expression_statement "puVar5 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;" (assignment_expression "puVar5 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0" identifier = identifier) ;) (expression_statement "GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);" (call_expression "GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0)" identifier (argument_list "(PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0)" ( identifier ))) ;) (expression_statement "*(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);" (assignment_expression "*(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200)" (pointer_expression "*(double *)(lVar2 + 0x200)" * (cast_expression "(double *)(lVar2 + 0x200)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x200)" ( (binary_expression "lVar2 + 0x200" identifier + number_literal) )))) = (binary_expression "local_78 + *(double *)(lVar2 + 0x200)" identifier + (pointer_expression "*(double *)(lVar2 + 0x200)" * (cast_expression "(double *)(lVar2 + 0x200)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x200)" ( (binary_expression "lVar2 + 0x200" identifier + number_literal) )))))) ;) (expression_statement "GOMP_critical_name_end(puVar5);" (call_expression "GOMP_critical_name_end(puVar5)" identifier (argument_list "(puVar5)" ( identifier ))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "local_58 = local_58 + 0x2b8;" (assignment_expression "local_58 = local_58 + 0x2b8" identifier = (binary_expression "local_58 + 0x2b8" identifier + number_literal)) ;) (expression_statement "local_50 = local_50 + 0x2b8;" (assignment_expression "local_50 = local_50 + 0x2b8" identifier = (binary_expression "local_50 + 0x2b8" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_60 != (double *)(lVar2 + (lVar8 + lVar9) * 8))" ( (binary_expression "local_60 != (double *)(lVar2 + (lVar8 + lVar9) * 8)" identifier != (cast_expression "(double *)(lVar2 + (lVar8 + lVar9) * 8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + (lVar8 + lVar9) * 8)" ( (binary_expression "lVar2 + (lVar8 + lVar9) * 8" identifier + (binary_expression "(lVar8 + lVar9) * 8" (parenthesized_expression "(lVar8 + lVar9)" ( (binary_expression "lVar8 + lVar9" identifier + identifier) )) * number_literal)) )))) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (call_expression IDENT (argument_list ( (call_expression IDENT (argument_list ( LIT ))) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT / (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) )))) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT % (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) )))) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * IDENT) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression IDENT + IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + (subscript_expression IDENT [ LIT ]))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * IDENT) + IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (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) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT * IDENT) )) / (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_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 = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + LIT)) )) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) * LIT)) )))) )) ;) })) (return_statement return ;) })))
(function_definition "void FUN_00185b44(long *param_1)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined1 auVar3 [16];\n  long lVar4;\n  undefined *puVar5;\n  int iVar6;\n  int iVar7;\n  long lVar8;\n  long lVar9;\n  long lVar10;\n  long lVar11;\n  long lVar12;\n  long lVar13;\n  double dVar14;\n  double local_78;\n  long local_70;\n  double *local_60;\n  long local_58;\n  long local_50;\n  \n  iVar6 = omp_get_num_threads();\n  iVar7 = omp_get_thread_num();\n  auVar3._8_8_ = 0;\n  auVar3._0_8_ = SUB168(SEXT816(0x40),8);\n  auVar3 = auVar3 << 0x40 | ZEXT816(0x40);\n  lVar8 = SUB168(auVar3 / SEXT816((long)iVar6),0);\n  lVar9 = SUB168(auVar3 % SEXT816((long)iVar6),0);\n  if (iVar7 < lVar9) {\n    lVar8 = lVar8 + 1;\n    lVar9 = 0;\n  }\n  lVar9 = iVar7 * lVar8 + lVar9;\n  if (lVar9 < lVar8 + lVar9) {\n    lVar4 = param_1[3];\n    lVar1 = param_1[1];\n    lVar2 = *param_1;\n    local_60 = (double *)(lVar2 + lVar9 * 8);\n    local_58 = lVar1 + lVar9 * 0x2b8;\n    local_50 = lVar9 * 0x2b8 + param_1[2];\n    do {\n      local_70 = local_50;\n      local_78 = 0.0;\n      lVar13 = local_58;\n      do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }\n        lVar13 = lVar13 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar13 != local_58 + 0x40);\n      *local_60 = local_78 + *local_60;\n      puVar5 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;\n      GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);\n      *(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);\n      GOMP_critical_name_end(puVar5);\n      local_60 = local_60 + 1;\n      local_58 = local_58 + 0x2b8;\n      local_50 = local_50 + 0x2b8;\n    } while (local_60 != (double *)(lVar2 + (lVar8 + lVar9) * 8));\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00185b44(long *param_1)" (identifier "FUN_00185b44") (parameter_list "(long *param_1)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  undefined1 auVar3 [16];\n  long lVar4;\n  undefined *puVar5;\n  int iVar6;\n  int iVar7;\n  long lVar8;\n  long lVar9;\n  long lVar10;\n  long lVar11;\n  long lVar12;\n  long lVar13;\n  double dVar14;\n  double local_78;\n  long local_70;\n  double *local_60;\n  long local_58;\n  long local_50;\n  \n  iVar6 = omp_get_num_threads();\n  iVar7 = omp_get_thread_num();\n  auVar3._8_8_ = 0;\n  auVar3._0_8_ = SUB168(SEXT816(0x40),8);\n  auVar3 = auVar3 << 0x40 | ZEXT816(0x40);\n  lVar8 = SUB168(auVar3 / SEXT816((long)iVar6),0);\n  lVar9 = SUB168(auVar3 % SEXT816((long)iVar6),0);\n  if (iVar7 < lVar9) {\n    lVar8 = lVar8 + 1;\n    lVar9 = 0;\n  }\n  lVar9 = iVar7 * lVar8 + lVar9;\n  if (lVar9 < lVar8 + lVar9) {\n    lVar4 = param_1[3];\n    lVar1 = param_1[1];\n    lVar2 = *param_1;\n    local_60 = (double *)(lVar2 + lVar9 * 8);\n    local_58 = lVar1 + lVar9 * 0x2b8;\n    local_50 = lVar9 * 0x2b8 + param_1[2];\n    do {\n      local_70 = local_50;\n      local_78 = 0.0;\n      lVar13 = local_58;\n      do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }\n        lVar13 = lVar13 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar13 != local_58 + 0x40);\n      *local_60 = local_78 + *local_60;\n      puVar5 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;\n      GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);\n      *(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);\n      GOMP_critical_name_end(puVar5);\n      local_60 = local_60 + 1;\n      local_58 = local_58 + 0x2b8;\n      local_50 = local_50 + 0x2b8;\n    } while (local_60 != (double *)(lVar2 + (lVar8 + lVar9) * 8));\n  }\n  return;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "undefined1 auVar3 [16];" (type_identifier "undefined1") (array_declarator "auVar3 [16]" (identifier "auVar3") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "undefined *puVar5;" (type_identifier "undefined") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "long lVar8;" (sized_type_specifier "long" (long "long")) (identifier "lVar8") (; ";")) (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 "long lVar12;" (sized_type_specifier "long" (long "long")) (identifier "lVar12") (; ";")) (declaration "long lVar13;" (sized_type_specifier "long" (long "long")) (identifier "lVar13") (; ";")) (declaration "double dVar14;" (primitive_type "double") (identifier "dVar14") (; ";")) (declaration "double local_78;" (primitive_type "double") (identifier "local_78") (; ";")) (declaration "long local_70;" (sized_type_specifier "long" (long "long")) (identifier "local_70") (; ";")) (declaration "double *local_60;" (primitive_type "double") (pointer_declarator "*local_60" (* "*") (identifier "local_60")) (; ";")) (declaration "long local_58;" (sized_type_specifier "long" (long "long")) (identifier "local_58") (; ";")) (declaration "long local_50;" (sized_type_specifier "long" (long "long")) (identifier "local_50") (; ";")) (expression_statement "iVar6 = omp_get_num_threads();" (assignment_expression "iVar6 = omp_get_num_threads()" (identifier "iVar6") (= "=") (call_expression "omp_get_num_threads()" (identifier "omp_get_num_threads") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar7 = omp_get_thread_num();" (assignment_expression "iVar7 = omp_get_thread_num()" (identifier "iVar7") (= "=") (call_expression "omp_get_thread_num()" (identifier "omp_get_thread_num") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "auVar3._8_8_ = 0;" (assignment_expression "auVar3._8_8_ = 0" (field_expression "auVar3._8_8_" (identifier "auVar3") (. ".") (field_identifier "_8_8_")) (= "=") (number_literal "0")) (; ";")) (expression_statement "auVar3._0_8_ = SUB168(SEXT816(0x40),8);" (assignment_expression "auVar3._0_8_ = SUB168(SEXT816(0x40),8)" (field_expression "auVar3._0_8_" (identifier "auVar3") (. ".") (field_identifier "_0_8_")) (= "=") (call_expression "SUB168(SEXT816(0x40),8)" (identifier "SUB168") (argument_list "(SEXT816(0x40),8)" (( "(") (call_expression "SEXT816(0x40)" (identifier "SEXT816") (argument_list "(0x40)" (( "(") (number_literal "0x40") () ")"))) (, ",") (number_literal "8") () ")")))) (; ";")) (expression_statement "auVar3 = auVar3 << 0x40 | ZEXT816(0x40);" (assignment_expression "auVar3 = auVar3 << 0x40 | ZEXT816(0x40)" (identifier "auVar3") (= "=") (binary_expression "auVar3 << 0x40 | ZEXT816(0x40)" (binary_expression "auVar3 << 0x40" (identifier "auVar3") (<< "<<") (number_literal "0x40")) (| "|") (call_expression "ZEXT816(0x40)" (identifier "ZEXT816") (argument_list "(0x40)" (( "(") (number_literal "0x40") () ")"))))) (; ";")) (expression_statement "lVar8 = SUB168(auVar3 / SEXT816((long)iVar6),0);" (assignment_expression "lVar8 = SUB168(auVar3 / SEXT816((long)iVar6),0)" (identifier "lVar8") (= "=") (call_expression "SUB168(auVar3 / SEXT816((long)iVar6),0)" (identifier "SUB168") (argument_list "(auVar3 / SEXT816((long)iVar6),0)" (( "(") (binary_expression "auVar3 / SEXT816((long)iVar6)" (identifier "auVar3") (/ "/") (call_expression "SEXT816((long)iVar6)" (identifier "SEXT816") (argument_list "((long)iVar6)" (( "(") (cast_expression "(long)iVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar6")) () ")")))) (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "lVar9 = SUB168(auVar3 % SEXT816((long)iVar6),0);" (assignment_expression "lVar9 = SUB168(auVar3 % SEXT816((long)iVar6),0)" (identifier "lVar9") (= "=") (call_expression "SUB168(auVar3 % SEXT816((long)iVar6),0)" (identifier "SUB168") (argument_list "(auVar3 % SEXT816((long)iVar6),0)" (( "(") (binary_expression "auVar3 % SEXT816((long)iVar6)" (identifier "auVar3") (% "%") (call_expression "SEXT816((long)iVar6)" (identifier "SEXT816") (argument_list "((long)iVar6)" (( "(") (cast_expression "(long)iVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar6")) () ")")))) (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar7 < lVar9) {\n    lVar8 = lVar8 + 1;\n    lVar9 = 0;\n  }" (if "if") (parenthesized_expression "(iVar7 < lVar9)" (( "(") (binary_expression "iVar7 < lVar9" (identifier "iVar7") (< "<") (identifier "lVar9")) () ")")) (compound_statement "{\n    lVar8 = lVar8 + 1;\n    lVar9 = 0;\n  }" ({ "{") (expression_statement "lVar8 = lVar8 + 1;" (assignment_expression "lVar8 = lVar8 + 1" (identifier "lVar8") (= "=") (binary_expression "lVar8 + 1" (identifier "lVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar9 = 0;" (assignment_expression "lVar9 = 0" (identifier "lVar9") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "lVar9 = iVar7 * lVar8 + lVar9;" (assignment_expression "lVar9 = iVar7 * lVar8 + lVar9" (identifier "lVar9") (= "=") (binary_expression "iVar7 * lVar8 + lVar9" (binary_expression "iVar7 * lVar8" (identifier "iVar7") (* "*") (identifier "lVar8")) (+ "+") (identifier "lVar9"))) (; ";")) (if_statement "if (lVar9 < lVar8 + lVar9) {\n    lVar4 = param_1[3];\n    lVar1 = param_1[1];\n    lVar2 = *param_1;\n    local_60 = (double *)(lVar2 + lVar9 * 8);\n    local_58 = lVar1 + lVar9 * 0x2b8;\n    local_50 = lVar9 * 0x2b8 + param_1[2];\n    do {\n      local_70 = local_50;\n      local_78 = 0.0;\n      lVar13 = local_58;\n      do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }\n        lVar13 = lVar13 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar13 != local_58 + 0x40);\n      *local_60 = local_78 + *local_60;\n      puVar5 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;\n      GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);\n      *(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);\n      GOMP_critical_name_end(puVar5);\n      local_60 = local_60 + 1;\n      local_58 = local_58 + 0x2b8;\n      local_50 = local_50 + 0x2b8;\n    } while (local_60 != (double *)(lVar2 + (lVar8 + lVar9) * 8));\n  }" (if "if") (parenthesized_expression "(lVar9 < lVar8 + lVar9)" (( "(") (binary_expression "lVar9 < lVar8 + lVar9" (identifier "lVar9") (< "<") (binary_expression "lVar8 + lVar9" (identifier "lVar8") (+ "+") (identifier "lVar9"))) () ")")) (compound_statement "{\n    lVar4 = param_1[3];\n    lVar1 = param_1[1];\n    lVar2 = *param_1;\n    local_60 = (double *)(lVar2 + lVar9 * 8);\n    local_58 = lVar1 + lVar9 * 0x2b8;\n    local_50 = lVar9 * 0x2b8 + param_1[2];\n    do {\n      local_70 = local_50;\n      local_78 = 0.0;\n      lVar13 = local_58;\n      do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }\n        lVar13 = lVar13 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar13 != local_58 + 0x40);\n      *local_60 = local_78 + *local_60;\n      puVar5 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;\n      GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);\n      *(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);\n      GOMP_critical_name_end(puVar5);\n      local_60 = local_60 + 1;\n      local_58 = local_58 + 0x2b8;\n      local_50 = local_50 + 0x2b8;\n    } while (local_60 != (double *)(lVar2 + (lVar8 + lVar9) * 8));\n  }" ({ "{") (expression_statement "lVar4 = param_1[3];" (assignment_expression "lVar4 = param_1[3]" (identifier "lVar4") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "lVar1 = param_1[1];" (assignment_expression "lVar1 = param_1[1]" (identifier "lVar1") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "lVar2 = *param_1;" (assignment_expression "lVar2 = *param_1" (identifier "lVar2") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "local_60 = (double *)(lVar2 + lVar9 * 8);" (assignment_expression "local_60 = (double *)(lVar2 + lVar9 * 8)" (identifier "local_60") (= "=") (cast_expression "(double *)(lVar2 + lVar9 * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + lVar9 * 8)" (( "(") (binary_expression "lVar2 + lVar9 * 8" (identifier "lVar2") (+ "+") (binary_expression "lVar9 * 8" (identifier "lVar9") (* "*") (number_literal "8"))) () ")")))) (; ";")) (expression_statement "local_58 = lVar1 + lVar9 * 0x2b8;" (assignment_expression "local_58 = lVar1 + lVar9 * 0x2b8" (identifier "local_58") (= "=") (binary_expression "lVar1 + lVar9 * 0x2b8" (identifier "lVar1") (+ "+") (binary_expression "lVar9 * 0x2b8" (identifier "lVar9") (* "*") (number_literal "0x2b8")))) (; ";")) (expression_statement "local_50 = lVar9 * 0x2b8 + param_1[2];" (assignment_expression "local_50 = lVar9 * 0x2b8 + param_1[2]" (identifier "local_50") (= "=") (binary_expression "lVar9 * 0x2b8 + param_1[2]" (binary_expression "lVar9 * 0x2b8" (identifier "lVar9") (* "*") (number_literal "0x2b8")) (+ "+") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (do_statement "do {\n      local_70 = local_50;\n      local_78 = 0.0;\n      lVar13 = local_58;\n      do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }\n        lVar13 = lVar13 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar13 != local_58 + 0x40);\n      *local_60 = local_78 + *local_60;\n      puVar5 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;\n      GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);\n      *(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);\n      GOMP_critical_name_end(puVar5);\n      local_60 = local_60 + 1;\n      local_58 = local_58 + 0x2b8;\n      local_50 = local_50 + 0x2b8;\n    } while (local_60 != (double *)(lVar2 + (lVar8 + lVar9) * 8));" (do "do") (compound_statement "{\n      local_70 = local_50;\n      local_78 = 0.0;\n      lVar13 = local_58;\n      do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }\n        lVar13 = lVar13 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar13 != local_58 + 0x40);\n      *local_60 = local_78 + *local_60;\n      puVar5 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;\n      GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);\n      *(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);\n      GOMP_critical_name_end(puVar5);\n      local_60 = local_60 + 1;\n      local_58 = local_58 + 0x2b8;\n      local_50 = local_50 + 0x2b8;\n    }" ({ "{") (expression_statement "local_70 = local_50;" (assignment_expression "local_70 = local_50" (identifier "local_70") (= "=") (identifier "local_50")) (; ";")) (expression_statement "local_78 = 0.0;" (assignment_expression "local_78 = 0.0" (identifier "local_78") (= "=") (number_literal "0.0")) (; ";")) (expression_statement "lVar13 = local_58;" (assignment_expression "lVar13 = local_58" (identifier "lVar13") (= "=") (identifier "local_58")) (; ";")) (do_statement "do {\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }\n        lVar13 = lVar13 + 8;\n        local_70 = local_70 + 8;\n      } while (lVar13 != local_58 + 0x40);" (do "do") (compound_statement "{\n        if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }\n        lVar13 = lVar13 + 8;\n        local_70 = local_70 + 8;\n      }" ({ "{") (if_statement "if (0 < *(long *)(lVar1 + 0x90)) {\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }" (if "if") (parenthesized_expression "(0 < *(long *)(lVar1 + 0x90))" (( "(") (binary_expression "0 < *(long *)(lVar1 + 0x90)" (number_literal "0") (< "<") (pointer_expression "*(long *)(lVar1 + 0x90)" (* "*") (cast_expression "(long *)(lVar1 + 0x90)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0x90)" (( "(") (binary_expression "lVar1 + 0x90" (identifier "lVar1") (+ "+") (number_literal "0x90")) () ")"))))) () ")")) (compound_statement "{\n          lVar10 = 0;\n          lVar11 = lVar13;\n          lVar12 = local_70;\n          do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));\n        }" ({ "{") (expression_statement "lVar10 = 0;" (assignment_expression "lVar10 = 0" (identifier "lVar10") (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar11 = lVar13;" (assignment_expression "lVar11 = lVar13" (identifier "lVar11") (= "=") (identifier "lVar13")) (; ";")) (expression_statement "lVar12 = local_70;" (assignment_expression "lVar12 = local_70" (identifier "lVar12") (= "=") (identifier "local_70")) (; ";")) (do_statement "do {\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          } while (lVar10 < *(long *)(lVar1 + 0x90));" (do "do") (compound_statement "{\n            if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }\n            lVar10 = lVar10 + 1;\n            lVar11 = lVar11 + 0x48;\n            lVar12 = lVar12 + 0x48;\n          }" ({ "{") (if_statement "if ((int)lVar4 == 0) {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }\n            else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }" (if "if") (parenthesized_expression "((int)lVar4 == 0)" (( "(") (binary_expression "(int)lVar4 == 0" (cast_expression "(int)lVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar4")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              local_78 = dVar14 * dVar14 + local_78;\n            }" ({ "{") (expression_statement "dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);" (assignment_expression "dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8)" (identifier "dVar14") (= "=") (binary_expression "*(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8)" (pointer_expression "*(double *)(lVar12 + 0xb8)" (* "*") (cast_expression "(double *)(lVar12 + 0xb8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar12 + 0xb8)" (( "(") (binary_expression "lVar12 + 0xb8" (identifier "lVar12") (+ "+") (number_literal "0xb8")) () ")")))) (- "-") (pointer_expression "*(double *)(lVar11 + 0xb8)" (* "*") (cast_expression "(double *)(lVar11 + 0xb8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar11 + 0xb8)" (( "(") (binary_expression "lVar11 + 0xb8" (identifier "lVar11") (+ "+") (number_literal "0xb8")) () ")")))))) (; ";")) (expression_statement "local_78 = dVar14 * dVar14 + local_78;" (assignment_expression "local_78 = dVar14 * dVar14 + local_78" (identifier "local_78") (= "=") (binary_expression "dVar14 * dVar14 + local_78" (binary_expression "dVar14 * dVar14" (identifier "dVar14") (* "*") (identifier "dVar14")) (+ "+") (identifier "local_78"))) (; ";")) (} "}")) (else_clause "else {\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }" (else "else") (compound_statement "{\n              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);\n              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);\n              local_78 = SQRT(dVar14);\n              if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }\n            }" ({ "{") (expression_statement "dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);" (assignment_expression "dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8)" (identifier "dVar14") (= "=") (binary_expression "*(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8)" (pointer_expression "*(double *)(lVar12 + 0xb8)" (* "*") (cast_expression "(double *)(lVar12 + 0xb8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar12 + 0xb8)" (( "(") (binary_expression "lVar12 + 0xb8" (identifier "lVar12") (+ "+") (number_literal "0xb8")) () ")")))) (- "-") (pointer_expression "*(double *)(lVar11 + 0xb8)" (* "*") (cast_expression "(double *)(lVar11 + 0xb8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar11 + 0xb8)" (( "(") (binary_expression "lVar11 + 0xb8" (identifier "lVar11") (+ "+") (number_literal "0xb8")) () ")")))))) (; ";")) (expression_statement "dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);" (assignment_expression "dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0)" (identifier "dVar14") (= "=") (binary_expression "(dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0)" (parenthesized_expression "(dVar14 * dVar14)" (( "(") (binary_expression "dVar14 * dVar14" (identifier "dVar14") (* "*") (identifier "dVar14")) () ")")) (/ "/") (cast_expression "(double)*(ulong *)(lVar1 + 0x2b0)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(ulong *)(lVar1 + 0x2b0)" (* "*") (cast_expression "(ulong *)(lVar1 + 0x2b0)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0x2b0)" (( "(") (binary_expression "lVar1 + 0x2b0" (identifier "lVar1") (+ "+") (number_literal "0x2b0")) () ")"))))))) (; ";")) (expression_statement "local_78 = SQRT(dVar14);" (assignment_expression "local_78 = SQRT(dVar14)" (identifier "local_78") (= "=") (call_expression "SQRT(dVar14)" (identifier "SQRT") (argument_list "(dVar14)" (( "(") (identifier "dVar14") () ")")))) (; ";")) (if_statement "if (dVar14 < 0.0) {\n                sqrt(dVar14);\n              }" (if "if") (parenthesized_expression "(dVar14 < 0.0)" (( "(") (binary_expression "dVar14 < 0.0" (identifier "dVar14") (< "<") (number_literal "0.0")) () ")")) (compound_statement "{\n                sqrt(dVar14);\n              }" ({ "{") (expression_statement "sqrt(dVar14);" (call_expression "sqrt(dVar14)" (identifier "sqrt") (argument_list "(dVar14)" (( "(") (identifier "dVar14") () ")"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "lVar10 = lVar10 + 1;" (assignment_expression "lVar10 = lVar10 + 1" (identifier "lVar10") (= "=") (binary_expression "lVar10 + 1" (identifier "lVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar11 = lVar11 + 0x48;" (assignment_expression "lVar11 = lVar11 + 0x48" (identifier "lVar11") (= "=") (binary_expression "lVar11 + 0x48" (identifier "lVar11") (+ "+") (number_literal "0x48"))) (; ";")) (expression_statement "lVar12 = lVar12 + 0x48;" (assignment_expression "lVar12 = lVar12 + 0x48" (identifier "lVar12") (= "=") (binary_expression "lVar12 + 0x48" (identifier "lVar12") (+ "+") (number_literal "0x48"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar10 < *(long *)(lVar1 + 0x90))" (( "(") (binary_expression "lVar10 < *(long *)(lVar1 + 0x90)" (identifier "lVar10") (< "<") (pointer_expression "*(long *)(lVar1 + 0x90)" (* "*") (cast_expression "(long *)(lVar1 + 0x90)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0x90)" (( "(") (binary_expression "lVar1 + 0x90" (identifier "lVar1") (+ "+") (number_literal "0x90")) () ")"))))) () ")")) (; ";")) (} "}"))) (expression_statement "lVar13 = lVar13 + 8;" (assignment_expression "lVar13 = lVar13 + 8" (identifier "lVar13") (= "=") (binary_expression "lVar13 + 8" (identifier "lVar13") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "local_70 = local_70 + 8;" (assignment_expression "local_70 = local_70 + 8" (identifier "local_70") (= "=") (binary_expression "local_70 + 8" (identifier "local_70") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar13 != local_58 + 0x40)" (( "(") (binary_expression "lVar13 != local_58 + 0x40" (identifier "lVar13") (!= "!=") (binary_expression "local_58 + 0x40" (identifier "local_58") (+ "+") (number_literal "0x40"))) () ")")) (; ";")) (expression_statement "*local_60 = local_78 + *local_60;" (assignment_expression "*local_60 = local_78 + *local_60" (pointer_expression "*local_60" (* "*") (identifier "local_60")) (= "=") (binary_expression "local_78 + *local_60" (identifier "local_78") (+ "+") (pointer_expression "*local_60" (* "*") (identifier "local_60")))) (; ";")) (expression_statement "puVar5 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;" (assignment_expression "puVar5 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0" (identifier "puVar5") (= "=") (identifier "PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0")) (; ";")) (expression_statement "GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);" (call_expression "GOMP_critical_name_start\n                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0)" (identifier "GOMP_critical_name_start") (argument_list "(PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0)" (( "(") (identifier "PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0") () ")"))) (; ";")) (expression_statement "*(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);" (assignment_expression "*(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200)" (pointer_expression "*(double *)(lVar2 + 0x200)" (* "*") (cast_expression "(double *)(lVar2 + 0x200)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x200)" (( "(") (binary_expression "lVar2 + 0x200" (identifier "lVar2") (+ "+") (number_literal "0x200")) () ")")))) (= "=") (binary_expression "local_78 + *(double *)(lVar2 + 0x200)" (identifier "local_78") (+ "+") (pointer_expression "*(double *)(lVar2 + 0x200)" (* "*") (cast_expression "(double *)(lVar2 + 0x200)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x200)" (( "(") (binary_expression "lVar2 + 0x200" (identifier "lVar2") (+ "+") (number_literal "0x200")) () ")")))))) (; ";")) (expression_statement "GOMP_critical_name_end(puVar5);" (call_expression "GOMP_critical_name_end(puVar5)" (identifier "GOMP_critical_name_end") (argument_list "(puVar5)" (( "(") (identifier "puVar5") () ")"))) (; ";")) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" (identifier "local_60") (= "=") (binary_expression "local_60 + 1" (identifier "local_60") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_58 = local_58 + 0x2b8;" (assignment_expression "local_58 = local_58 + 0x2b8" (identifier "local_58") (= "=") (binary_expression "local_58 + 0x2b8" (identifier "local_58") (+ "+") (number_literal "0x2b8"))) (; ";")) (expression_statement "local_50 = local_50 + 0x2b8;" (assignment_expression "local_50 = local_50 + 0x2b8" (identifier "local_50") (= "=") (binary_expression "local_50 + 0x2b8" (identifier "local_50") (+ "+") (number_literal "0x2b8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_60 != (double *)(lVar2 + (lVar8 + lVar9) * 8))" (( "(") (binary_expression "local_60 != (double *)(lVar2 + (lVar8 + lVar9) * 8)" (identifier "local_60") (!= "!=") (cast_expression "(double *)(lVar2 + (lVar8 + lVar9) * 8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + (lVar8 + lVar9) * 8)" (( "(") (binary_expression "lVar2 + (lVar8 + lVar9) * 8" (identifier "lVar2") (+ "+") (binary_expression "(lVar8 + lVar9) * 8" (parenthesized_expression "(lVar8 + lVar9)" (( "(") (binary_expression "lVar8 + lVar9" (identifier "lVar8") (+ "+") (identifier "lVar9")) () ")")) (* "*") (number_literal "8"))) () ")")))) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original prototype: void GetPerceptualHashDistortion._omp_fn.6(anon_struct_32_4_e774f142 *
   param_0) */

void __thiscall function_1(void *this)

{
  long var_11;
  long var_10;
  type_1 var_5 [16];
  type_2 *puVar4;
  int var_12;
  int var_7;
  long var_9;
  long var_8;
  long var_19;
  long var_14;
  long var_13;
  long var_20;
  double var_15;
  double var_16;
  long var_21;
  double *var_25;
  long var_22;
  long var_26;
  
  var_12 = var_1();
  var_7 = var_2();
  var_5._8_8_ = 0;
  var_5._0_8_ = var_3(var_4(0x40),8);
  var_5 = var_5 << 0x40 | var_6(0x40);
  var_9 = var_3(var_5 / var_4((long)var_12),0);
  var_8 = var_3(var_5 % var_4((long)var_12),0);
  if (var_7 < var_8) {
    var_9 = var_9 + 1;
    var_8 = 0;
  }
  var_8 = var_7 * var_9 + var_8;
  if (var_8 < var_9 + var_8) {
    var_12 = *(int *)((long)this + 0x18);
    var_11 = *(long *)((long)this + 8);
                    /* WARNING: Load size is inaccurate */
    var_10 = *this;
    var_25 = (double *)(var_10 + var_8 * 8);
    var_22 = var_11 + var_8 * 0x2b8;
    var_26 = var_8 * 0x2b8 + *(long *)((long)this + 0x10);
    do {
      var_21 = var_26;
      var_16 = 0.0;
      var_20 = var_22;
      do {
        if (0 < *(long *)(var_11 + 0x90)) {
          var_19 = 0;
          var_14 = var_20;
          var_13 = var_21;
          do {
            if (var_12 == 0) {
              var_15 = *(double *)(var_13 + 0xb8) - *(double *)(var_14 + 0xb8);
              var_16 = var_15 * var_15 + var_16;
            }
            else {
              var_15 = *(double *)(var_13 + 0xb8) - *(double *)(var_14 + 0xb8);
              var_15 = (var_15 * var_15) / (double)*(type_3 *)(var_11 + 0x2b0);
              var_16 = var_17(var_15);
              if (var_15 < 0.0) {
                var_18(var_15);
              }
            }
            var_19 = var_19 + 1;
            var_14 = var_14 + 0x48;
            var_13 = var_13 + 0x48;
          } while (var_19 < *(long *)(var_11 + 0x90));
        }
        var_20 = var_20 + 8;
        var_21 = var_21 + 8;
      } while (var_20 != var_22 + 0x40);
      *var_25 = var_16 + *var_25;
      puVar4 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;
      var_23
                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);
      *(double *)(var_10 + 0x200) = var_16 + *(double *)(var_10 + 0x200);
      var_24(puVar4);
      var_25 = var_25 + 1;
      var_22 = var_22 + 0x2b8;
      var_26 = var_26 + 0x2b8;
    } while (var_25 != (double *)(var_10 + (var_9 + var_8) * 8));
  }
  return;
}


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

void MASKED(long *param_1)

{
  long lVar1;
  long lVar2;
  undefined1 auVar3 [16];
  long lVar4;
  undefined *puVar5;
  int iVar6;
  int iVar7;
  long lVar8;
  long lVar9;
  long lVar10;
  long lVar11;
  long lVar12;
  long lVar13;
  double dVar14;
  double local_78;
  long local_70;
  double *local_60;
  long local_58;
  long local_50;
  
  iVar6 = omp_get_num_threads();
  iVar7 = omp_get_thread_num();
  auVar3._8_8_ = 0;
  auVar3._0_8_ = SUB168(SEXT816(0x40),8);
  auVar3 = auVar3 << 0x40 | ZEXT816(0x40);
  lVar8 = SUB168(auVar3 / SEXT816((long)iVar6),0);
  lVar9 = SUB168(auVar3 % SEXT816((long)iVar6),0);
  if (iVar7 < lVar9) {
    lVar8 = lVar8 + 1;
    lVar9 = 0;
  }
  lVar9 = iVar7 * lVar8 + lVar9;
  if (lVar9 < lVar8 + lVar9) {
    lVar4 = param_1[3];
    lVar1 = param_1[1];
    lVar2 = *param_1;
    local_60 = (double *)(lVar2 + lVar9 * 8);
    local_58 = lVar1 + lVar9 * 0x2b8;
    local_50 = lVar9 * 0x2b8 + param_1[2];
    do {
      local_70 = local_50;
      local_78 = 0.0;
      lVar13 = local_58;
      do {
        if (0 < *(long *)(lVar1 + 0x90)) {
          lVar10 = 0;
          lVar11 = lVar13;
          lVar12 = local_70;
          do {
            if ((int)lVar4 == 0) {
              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);
              local_78 = dVar14 * dVar14 + local_78;
            }
            else {
              dVar14 = *(double *)(lVar12 + 0xb8) - *(double *)(lVar11 + 0xb8);
              dVar14 = (dVar14 * dVar14) / (double)*(ulong *)(lVar1 + 0x2b0);
              local_78 = SQRT(dVar14);
              if (dVar14 < 0.0) {
                sqrt(dVar14);
              }
            }
            lVar10 = lVar10 + 1;
            lVar11 = lVar11 + 0x48;
            lVar12 = lVar12 + 0x48;
          } while (lVar10 < *(long *)(lVar1 + 0x90));
        }
        lVar13 = lVar13 + 8;
        local_70 = local_70 + 8;
      } while (lVar13 != local_58 + 0x40);
      *local_60 = local_78 + *local_60;
      puVar5 = PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0;
      GOMP_critical_name_start
                (PTR__gomp_critical_user_MagickCore_GetPerceptualHashDistortion_006daef0);
      *(double *)(lVar2 + 0x200) = local_78 + *(double *)(lVar2 + 0x200);
      GOMP_critical_name_end(puVar5);
      local_60 = local_60 + 1;
      local_58 = local_58 + 0x2b8;
      local_50 = local_50 + 0x2b8;
    } while (local_60 != (double *)(lVar2 + (lVar8 + lVar9) * 8));
  }
  return;
}

