
/* WARNING: Enum "ExceptionType": Some values do not have unique names */
/* WARNING: Enum "GravityType": Some values do not have unique names */
/* WARNING: Enum "DisposeType": Some values do not have unique names */
/* WARNING: Enum "ChannelType": Some values do not have unique names */
/* WARNING: Enum "PixelChannel": Some values do not have unique names */
/* DWARF original prototype: void MatrixToImage._omp_fn.0(anon_struct_56_7_92ffbb28 * param_0) */

void __thiscall MatrixToImage__omp_fn_0(void *this)

{
  double dVar1;
  long lVar2;
  CacheView *cache_view;
  ExceptionInfo *exception;
  MatrixInfo *matrix_info;
  int iVar3;
  int iVar4;
  MagickBooleanType MVar5;
  long lVar6;
  Quantum *pQVar7;
  long lVar8;
  long x;
  long in_FS_OFFSET;
  double local_48;
  long local_40;
  
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  lVar2 = *(long *)((long)this + 0x28);
  lVar8 = *(long *)(lVar2 + 0x28);
  iVar3 = omp_get_num_threads();
  iVar4 = omp_get_thread_num();
  lVar6 = lVar8 / (long)iVar3;
  lVar8 = lVar8 % (long)iVar3;
  if (iVar4 < lVar8) {
    lVar6 = lVar6 + 1;
    lVar8 = 0;
  }
  lVar8 = iVar4 * lVar6 + lVar8;
  lVar6 = lVar6 + lVar8;
  if (lVar8 < lVar6) {
    dVar1 = *(double *)((long)this + 0x20);
    cache_view = *(CacheView **)((long)this + 0x10);
    exception = *(ExceptionInfo **)((long)this + 8);
                    /* WARNING: Load size is inaccurate */
    matrix_info = *this;
    do {
      if (*(int *)((long)this + 0x30) != 0) {
        pQVar7 = QueueCacheViewAuthenticPixels
                           (cache_view,0,lVar8,*(size_t *)(lVar2 + 0x20),1,exception);
        if (pQVar7 == (Quantum *)0x0) {
          *(undefined4 *)((long)this + 0x30) = 0;
        }
        else {
          x = 0;
          if (0 < *(long *)(lVar2 + 0x20)) {
            do {
              MVar5 = GetMatrixElement(matrix_info,x,lVar8,&local_48);
              if (MVar5 != MagickFalse) {
                local_48 = (local_48 - **(double **)((long)this + 0x18)) * dVar1;
                *pQVar7 = (float)local_48;
                pQVar7 = pQVar7 + *(long *)(lVar2 + 0x340);
              }
              x = x + 1;
            } while (x < *(long *)(lVar2 + 0x20));
          }
          MVar5 = SyncCacheViewAuthenticPixels(cache_view,exception);
          if (MVar5 == MagickFalse) {
            *(undefined4 *)((long)this + 0x30) = 0;
          }
        }
      }
      lVar8 = lVar8 + 1;
    } while (lVar6 != lVar8);
  }
  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return;
}



void FUN_00231fad(undefined8 *param_1)

{
  double dVar1;
  long lVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  int iVar6;
  int iVar7;
  long lVar8;
  float *pfVar9;
  long lVar10;
  long lVar11;
  long in_FS_OFFSET;
  double local_48;
  long local_40;
  
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  lVar2 = param_1[5];
  lVar10 = *(long *)(lVar2 + 0x28);
  iVar6 = omp_get_num_threads();
  iVar7 = omp_get_thread_num();
  lVar8 = lVar10 / (long)iVar6;
  lVar10 = lVar10 % (long)iVar6;
  if (iVar7 < lVar10) {
    lVar8 = lVar8 + 1;
    lVar10 = 0;
  }
  lVar10 = iVar7 * lVar8 + lVar10;
  lVar8 = lVar8 + lVar10;
  if (lVar10 < lVar8) {
    dVar1 = (double)param_1[4];
    uVar3 = param_1[2];
    uVar4 = param_1[1];
    uVar5 = *param_1;
    do {
      if (*(int *)(param_1 + 6) != 0) {
        pfVar9 = (float *)QueueCacheViewAuthenticPixels
                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);
        if (pfVar9 == (float *)0x0) {
          *(undefined4 *)(param_1 + 6) = 0;
        }
        else {
          lVar11 = 0;
          if (0 < *(long *)(lVar2 + 0x20)) {
            do {
              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);
              if (iVar6 != 0) {
                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;
                *pfVar9 = (float)local_48;
                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);
              }
              lVar11 = lVar11 + 1;
            } while (lVar11 < *(long *)(lVar2 + 0x20));
          }
          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);
          if (iVar6 == 0) {
            *(undefined4 *)(param_1 + 6) = 0;
          }
        }
      }
      lVar10 = lVar10 + 1;
    } while (lVar8 != lVar10);
  }
  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x48
MOV R14,RDI
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x38],RAX
XOR EAX,EAX
MOV R13,qword ptr [RDI + 0x28]
MOV RBX,qword ptr [R13 + 0x28]
CALL 0x00149d40
MOVSXD R12,EAX
CALL 0x0014af50
MOVSXD RBP,EAX
MOV RAX,RBX
CQO
IDIV R12
MOV RSI,RAX
MOV RCX,RDX
CMP RBP,RDX
JL 0x0023210e
IMUL RBP,RSI
ADD RBP,RCX
LEA RAX,[RSI + RBP*0x1]
MOV qword ptr [RSP + 0x18],RAX
CMP RBP,RAX
JGE 0x0023211c
MOVSD XMM3,qword ptr [R14 + 0x20]
MOVSD qword ptr [RSP + 0x10],XMM3
MOV RAX,qword ptr [R14 + 0x10]
MOV qword ptr [RSP + 0x20],RAX
MOV RAX,qword ptr [R14 + 0x8]
MOV qword ptr [RSP + 0x28],RAX
MOV R15,qword ptr [R14]
LEA RAX,[RSP + 0x30]
MOV qword ptr [RSP + 0x8],RAX
JMP 0x0023206d
MOV RSI,qword ptr [RSP + 0x28]
MOV RDI,qword ptr [RSP + 0x20]
CALL 0x0014af90
TEST EAX,EAX
JNZ 0x0023205e
MOV dword ptr [R14 + 0x30],0x0
ADD RBP,0x1
CMP qword ptr [RSP + 0x18],RBP
JZ 0x0023211c
CMP dword ptr [R14 + 0x30],0x0
JZ 0x0023205e
MOV RCX,qword ptr [R13 + 0x20]
MOV R9,qword ptr [RSP + 0x28]
MOV R8D,0x1
MOV RDX,RBP
MOV ESI,0x0
MOV RDI,qword ptr [RSP + 0x20]
CALL 0x0014d950
MOV R12,RAX
TEST RAX,RAX
JZ 0x00232101
MOV EBX,0x0
CMP qword ptr [R13 + 0x20],0x0
JG 0x002320b5
JMP 0x00232043
ADD RBX,0x1
CMP qword ptr [R13 + 0x20],RBX
JLE 0x00232043
MOV RCX,qword ptr [RSP + 0x8]
MOV RDX,RBP
MOV RSI,RBX
MOV RDI,R15
CALL 0x0014bb90
TEST EAX,EAX
JZ 0x002320ab
MOV RAX,qword ptr [R14 + 0x18]
MOVSD XMM0,qword ptr [RSP + 0x30]
SUBSD XMM0,qword ptr [RAX]
MULSD XMM0,qword ptr [RSP + 0x10]
MOVSD qword ptr [RSP + 0x30],XMM0
PXOR XMM2,XMM2
CVTSD2SS XMM2,XMM0
MOVSS dword ptr [R12],XMM2
MOV RAX,qword ptr [R13 + 0x340]
LEA R12,[R12 + RAX*0x4]
JMP 0x002320ab
MOV dword ptr [R14 + 0x30],0x0
JMP 0x0023205e
LEA RSI,[RAX + 0x1]
MOV ECX,0x0
JMP 0x00231ffd
MOV RAX,qword ptr [RSP + 0x38]
XOR RAX,qword ptr FS:[0x28]
JNZ 0x0023213b
ADD RSP,0x48
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
CALL 0x0014c5c0
(translation_unit "void FUN_00231fad(undefined8 *param_1)\n\n{\n  double dVar1;\n  long lVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  int iVar6;\n  int iVar7;\n  long lVar8;\n  float *pfVar9;\n  long lVar10;\n  long lVar11;\n  long in_FS_OFFSET;\n  double local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  lVar2 = param_1[5];\n  lVar10 = *(long *)(lVar2 + 0x28);\n  iVar6 = omp_get_num_threads();\n  iVar7 = omp_get_thread_num();\n  lVar8 = lVar10 / (long)iVar6;\n  lVar10 = lVar10 % (long)iVar6;\n  if (iVar7 < lVar10) {\n    lVar8 = lVar8 + 1;\n    lVar10 = 0;\n  }\n  lVar10 = iVar7 * lVar8 + lVar10;\n  lVar8 = lVar8 + lVar10;\n  if (lVar10 < lVar8) {\n    dVar1 = (double)param_1[4];\n    uVar3 = param_1[2];\n    uVar4 = param_1[1];\n    uVar5 = *param_1;\n    do {\n      if (*(int *)(param_1 + 6) != 0) {\n        pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);\n        if (pfVar9 == (float *)0x0) {\n          *(undefined4 *)(param_1 + 6) = 0;\n        }\n        else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }\n      }\n      lVar10 = lVar10 + 1;\n    } while (lVar8 != lVar10);\n  }\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return;\n}\n\n" (function_definition "void FUN_00231fad(undefined8 *param_1)\n\n{\n  double dVar1;\n  long lVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  int iVar6;\n  int iVar7;\n  long lVar8;\n  float *pfVar9;\n  long lVar10;\n  long lVar11;\n  long in_FS_OFFSET;\n  double local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  lVar2 = param_1[5];\n  lVar10 = *(long *)(lVar2 + 0x28);\n  iVar6 = omp_get_num_threads();\n  iVar7 = omp_get_thread_num();\n  lVar8 = lVar10 / (long)iVar6;\n  lVar10 = lVar10 % (long)iVar6;\n  if (iVar7 < lVar10) {\n    lVar8 = lVar8 + 1;\n    lVar10 = 0;\n  }\n  lVar10 = iVar7 * lVar8 + lVar10;\n  lVar8 = lVar8 + lVar10;\n  if (lVar10 < lVar8) {\n    dVar1 = (double)param_1[4];\n    uVar3 = param_1[2];\n    uVar4 = param_1[1];\n    uVar5 = *param_1;\n    do {\n      if (*(int *)(param_1 + 6) != 0) {\n        pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);\n        if (pfVar9 == (float *)0x0) {\n          *(undefined4 *)(param_1 + 6) = 0;\n        }\n        else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }\n      }\n      lVar10 = lVar10 + 1;\n    } while (lVar8 != lVar10);\n  }\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00231fad(undefined8 *param_1)" identifier (parameter_list "(undefined8 *param_1)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  double dVar1;\n  long lVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  int iVar6;\n  int iVar7;\n  long lVar8;\n  float *pfVar9;\n  long lVar10;\n  long lVar11;\n  long in_FS_OFFSET;\n  double local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  lVar2 = param_1[5];\n  lVar10 = *(long *)(lVar2 + 0x28);\n  iVar6 = omp_get_num_threads();\n  iVar7 = omp_get_thread_num();\n  lVar8 = lVar10 / (long)iVar6;\n  lVar10 = lVar10 % (long)iVar6;\n  if (iVar7 < lVar10) {\n    lVar8 = lVar8 + 1;\n    lVar10 = 0;\n  }\n  lVar10 = iVar7 * lVar8 + lVar10;\n  lVar8 = lVar8 + lVar10;\n  if (lVar10 < lVar8) {\n    dVar1 = (double)param_1[4];\n    uVar3 = param_1[2];\n    uVar4 = param_1[1];\n    uVar5 = *param_1;\n    do {\n      if (*(int *)(param_1 + 6) != 0) {\n        pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);\n        if (pfVar9 == (float *)0x0) {\n          *(undefined4 *)(param_1 + 6) = 0;\n        }\n        else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }\n      }\n      lVar10 = lVar10 + 1;\n    } while (lVar8 != lVar10);\n  }\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return;\n}" { (declaration "double dVar1;" primitive_type identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "float *pfVar9;" primitive_type (pointer_declarator "*pfVar9" * identifier) ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "double local_48;" primitive_type identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "lVar2 = param_1[5];" (assignment_expression "lVar2 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "lVar10 = *(long *)(lVar2 + 0x28);" (assignment_expression "lVar10 = *(long *)(lVar2 + 0x28)" identifier = (pointer_expression "*(long *)(lVar2 + 0x28)" * (cast_expression "(long *)(lVar2 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x28)" ( (binary_expression "lVar2 + 0x28" identifier + number_literal) ))))) ;) (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 "lVar8 = lVar10 / (long)iVar6;" (assignment_expression "lVar8 = lVar10 / (long)iVar6" identifier = (binary_expression "lVar10 / (long)iVar6" identifier / (cast_expression "(long)iVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "lVar10 = lVar10 % (long)iVar6;" (assignment_expression "lVar10 = lVar10 % (long)iVar6" identifier = (binary_expression "lVar10 % (long)iVar6" identifier % (cast_expression "(long)iVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if (iVar7 < lVar10) {\n    lVar8 = lVar8 + 1;\n    lVar10 = 0;\n  }" if (parenthesized_expression "(iVar7 < lVar10)" ( (binary_expression "iVar7 < lVar10" identifier < identifier) )) (compound_statement "{\n    lVar8 = lVar8 + 1;\n    lVar10 = 0;\n  }" { (expression_statement "lVar8 = lVar8 + 1;" (assignment_expression "lVar8 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) ;) (expression_statement "lVar10 = 0;" (assignment_expression "lVar10 = 0" identifier = number_literal) ;) })) (expression_statement "lVar10 = iVar7 * lVar8 + lVar10;" (assignment_expression "lVar10 = iVar7 * lVar8 + lVar10" identifier = (binary_expression "iVar7 * lVar8 + lVar10" (binary_expression "iVar7 * lVar8" identifier * identifier) + identifier)) ;) (expression_statement "lVar8 = lVar8 + lVar10;" (assignment_expression "lVar8 = lVar8 + lVar10" identifier = (binary_expression "lVar8 + lVar10" identifier + identifier)) ;) (if_statement "if (lVar10 < lVar8) {\n    dVar1 = (double)param_1[4];\n    uVar3 = param_1[2];\n    uVar4 = param_1[1];\n    uVar5 = *param_1;\n    do {\n      if (*(int *)(param_1 + 6) != 0) {\n        pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);\n        if (pfVar9 == (float *)0x0) {\n          *(undefined4 *)(param_1 + 6) = 0;\n        }\n        else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }\n      }\n      lVar10 = lVar10 + 1;\n    } while (lVar8 != lVar10);\n  }" if (parenthesized_expression "(lVar10 < lVar8)" ( (binary_expression "lVar10 < lVar8" identifier < identifier) )) (compound_statement "{\n    dVar1 = (double)param_1[4];\n    uVar3 = param_1[2];\n    uVar4 = param_1[1];\n    uVar5 = *param_1;\n    do {\n      if (*(int *)(param_1 + 6) != 0) {\n        pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);\n        if (pfVar9 == (float *)0x0) {\n          *(undefined4 *)(param_1 + 6) = 0;\n        }\n        else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }\n      }\n      lVar10 = lVar10 + 1;\n    } while (lVar8 != lVar10);\n  }" { (expression_statement "dVar1 = (double)param_1[4];" (assignment_expression "dVar1 = (double)param_1[4]" identifier = (cast_expression "(double)param_1[4]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "param_1[4]" identifier [ number_literal ]))) ;) (expression_statement "uVar3 = param_1[2];" (assignment_expression "uVar3 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = param_1[1];" (assignment_expression "uVar4 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = *param_1;" (assignment_expression "uVar5 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (do_statement "do {\n      if (*(int *)(param_1 + 6) != 0) {\n        pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);\n        if (pfVar9 == (float *)0x0) {\n          *(undefined4 *)(param_1 + 6) = 0;\n        }\n        else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }\n      }\n      lVar10 = lVar10 + 1;\n    } while (lVar8 != lVar10);" do (compound_statement "{\n      if (*(int *)(param_1 + 6) != 0) {\n        pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);\n        if (pfVar9 == (float *)0x0) {\n          *(undefined4 *)(param_1 + 6) = 0;\n        }\n        else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }\n      }\n      lVar10 = lVar10 + 1;\n    }" { (if_statement "if (*(int *)(param_1 + 6) != 0) {\n        pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);\n        if (pfVar9 == (float *)0x0) {\n          *(undefined4 *)(param_1 + 6) = 0;\n        }\n        else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }\n      }" if (parenthesized_expression "(*(int *)(param_1 + 6) != 0)" ( (binary_expression "*(int *)(param_1 + 6) != 0" (pointer_expression "*(int *)(param_1 + 6)" * (cast_expression "(int *)(param_1 + 6)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 6)" ( (binary_expression "param_1 + 6" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);\n        if (pfVar9 == (float *)0x0) {\n          *(undefined4 *)(param_1 + 6) = 0;\n        }\n        else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }\n      }" { (expression_statement "pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);" (assignment_expression "pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4)" identifier = (cast_expression "(float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4)" identifier (argument_list "(uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4)" ( identifier , number_literal , identifier , (pointer_expression "*(undefined8 *)(lVar2 + 0x20)" * (cast_expression "(undefined8 *)(lVar2 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x20)" ( (binary_expression "lVar2 + 0x20" identifier + number_literal) )))) , number_literal , identifier ))))) ;) (if_statement "if (pfVar9 == (float *)0x0) {\n          *(undefined4 *)(param_1 + 6) = 0;\n        }\n        else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }" if (parenthesized_expression "(pfVar9 == (float *)0x0)" ( (binary_expression "pfVar9 == (float *)0x0" identifier == (cast_expression "(float *)0x0" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *(undefined4 *)(param_1 + 6) = 0;\n        }" { (expression_statement "*(undefined4 *)(param_1 + 6) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 6) = 0" (pointer_expression "*(undefined4 *)(param_1 + 6)" * (cast_expression "(undefined4 *)(param_1 + 6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 6)" ( (binary_expression "param_1 + 6" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }" else (compound_statement "{\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }" { (expression_statement "lVar11 = 0;" (assignment_expression "lVar11 = 0" identifier = number_literal) ;) (if_statement "if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }" if (parenthesized_expression "(0 < *(long *)(lVar2 + 0x20))" ( (binary_expression "0 < *(long *)(lVar2 + 0x20)" number_literal < (pointer_expression "*(long *)(lVar2 + 0x20)" * (cast_expression "(long *)(lVar2 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x20)" ( (binary_expression "lVar2 + 0x20" identifier + number_literal) ))))) )) (compound_statement "{\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }" { (do_statement "do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));" do (compound_statement "{\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            }" { (expression_statement "iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);" (assignment_expression "iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48)" identifier = (call_expression "GetMatrixElement(uVar5,lVar11,lVar10,&local_48)" identifier (argument_list "(uVar5,lVar11,lVar10,&local_48)" ( identifier , identifier , identifier , (pointer_expression "&local_48" & identifier) )))) ;) (if_statement "if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }" { (expression_statement "local_48 = (local_48 - *(double *)param_1[3]) * dVar1;" (assignment_expression "local_48 = (local_48 - *(double *)param_1[3]) * dVar1" identifier = (binary_expression "(local_48 - *(double *)param_1[3]) * dVar1" (parenthesized_expression "(local_48 - *(double *)param_1[3])" ( (binary_expression "local_48 - *(double *)param_1[3]" identifier - (pointer_expression "*(double *)param_1[3]" * (cast_expression "(double *)param_1[3]" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[3]" identifier [ number_literal ])))) )) * identifier)) ;) (expression_statement "*pfVar9 = (float)local_48;" (assignment_expression "*pfVar9 = (float)local_48" (pointer_expression "*pfVar9" * identifier) = (cast_expression "(float)local_48" ( (type_descriptor "float" primitive_type) ) identifier)) ;) (expression_statement "pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);" (assignment_expression "pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340)" identifier = (binary_expression "pfVar9 + *(long *)(lVar2 + 0x340)" identifier + (pointer_expression "*(long *)(lVar2 + 0x340)" * (cast_expression "(long *)(lVar2 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x340)" ( (binary_expression "lVar2 + 0x340" identifier + number_literal) )))))) ;) })) (expression_statement "lVar11 = lVar11 + 1;" (assignment_expression "lVar11 = lVar11 + 1" identifier = (binary_expression "lVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar11 < *(long *)(lVar2 + 0x20))" ( (binary_expression "lVar11 < *(long *)(lVar2 + 0x20)" identifier < (pointer_expression "*(long *)(lVar2 + 0x20)" * (cast_expression "(long *)(lVar2 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x20)" ( (binary_expression "lVar2 + 0x20" identifier + number_literal) ))))) )) ;) })) (expression_statement "iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);" (assignment_expression "iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4)" identifier = (call_expression "SyncCacheViewAuthenticPixels(uVar3,uVar4)" identifier (argument_list "(uVar3,uVar4)" ( identifier , identifier )))) ;) (if_statement "if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n            *(undefined4 *)(param_1 + 6) = 0;\n          }" { (expression_statement "*(undefined4 *)(param_1 + 6) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 6) = 0" (pointer_expression "*(undefined4 *)(param_1 + 6)" * (cast_expression "(undefined4 *)(param_1 + 6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 6)" ( (binary_expression "param_1 + 6" identifier + number_literal) )))) = number_literal) ;) })) }))) })) (expression_statement "lVar10 = lVar10 + 1;" (assignment_expression "lVar10 = lVar10 + 1" identifier = (binary_expression "lVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar8 != lVar10)" ( (binary_expression "lVar8 != lVar10" identifier != identifier) )) ;) })) (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" { comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "ExceptionType": Some values do not have unique names */\n/* WARNING: Enum "GravityType": Some values do not have unique names */\n/* WARNING: Enum "DisposeType": Some values do not have unique names */\n/* WARNING: Enum "ChannelType": Some values do not have unique names */\n/* WARNING: Enum "PixelChannel": Some values do not have unique names */\n/* DWARF original prototype: void MatrixToImage._omp_fn.0(anon_struct_56_7_92ffbb28 * param_0) */\n\nvoid __thiscall MatrixToImage__omp_fn_0(void *this)\n\n{\n  double dVar1;\n  long lVar2;\n  CacheView *cache_view;\n  ExceptionInfo *exception;\n  MatrixInfo *matrix_info;\n  int iVar3;\n  int iVar4;\n  MagickBooleanType MVar5;\n  long lVar6;\n  Quantum *pQVar7;\n  long lVar8;\n  long x;\n  long in_FS_OFFSET;\n  double local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  lVar2 = *(long *)((long)this + 0x28);\n  lVar8 = *(long *)(lVar2 + 0x28);\n  iVar3 = omp_get_num_threads();\n  iVar4 = omp_get_thread_num();\n  lVar6 = lVar8 / (long)iVar3;\n  lVar8 = lVar8 % (long)iVar3;\n  if (iVar4 < lVar8) {\n    lVar6 = lVar6 + 1;\n    lVar8 = 0;\n  }\n  lVar8 = iVar4 * lVar6 + lVar8;\n  lVar6 = lVar6 + lVar8;\n  if (lVar8 < lVar6) {\n    dVar1 = *(double *)((long)this + 0x20);\n    cache_view = *(CacheView **)((long)this + 0x10);\n    exception = *(ExceptionInfo **)((long)this + 8);\n                    /* WARNING: Load size is inaccurate */\n    matrix_info = *this;\n    do {\n      if (*(int *)((long)this + 0x30) != 0) {\n        pQVar7 = QueueCacheViewAuthenticPixels\n                           (cache_view,0,lVar8,*(size_t *)(lVar2 + 0x20),1,exception);\n        if (pQVar7 == (Quantum *)0x0) {\n          *(undefined4 *)((long)this + 0x30) = 0;\n        }\n        else {\n          x = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              MVar5 = GetMatrixElement(matrix_info,x,lVar8,&local_48);\n              if (MVar5 != MagickFalse) {\n                local_48 = (local_48 - **(double **)((long)this + 0x18)) * dVar1;\n                *pQVar7 = (float)local_48;\n                pQVar7 = pQVar7 + *(long *)(lVar2 + 0x340);\n              }\n              x = x + 1;\n            } while (x < *(long *)(lVar2 + 0x20));\n          }\n          MVar5 = SyncCacheViewAuthenticPixels(cache_view,exception);\n          if (MVar5 == MagickFalse) {\n            *(undefined4 *)((long)this + 0x30) = 0;\n          }\n        }\n      }\n      lVar8 = lVar8 + 1;\n    } while (lVar6 != lVar8);\n  }\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return;\n}\n\n" comment comment comment comment comment comment (function_definition "void __thiscall MatrixToImage__omp_fn_0(void *this)\n\n{\n  double dVar1;\n  long lVar2;\n  CacheView *cache_view;\n  ExceptionInfo *exception;\n  MatrixInfo *matrix_info;\n  int iVar3;\n  int iVar4;\n  MagickBooleanType MVar5;\n  long lVar6;\n  Quantum *pQVar7;\n  long lVar8;\n  long x;\n  long in_FS_OFFSET;\n  double local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  lVar2 = *(long *)((long)this + 0x28);\n  lVar8 = *(long *)(lVar2 + 0x28);\n  iVar3 = omp_get_num_threads();\n  iVar4 = omp_get_thread_num();\n  lVar6 = lVar8 / (long)iVar3;\n  lVar8 = lVar8 % (long)iVar3;\n  if (iVar4 < lVar8) {\n    lVar6 = lVar6 + 1;\n    lVar8 = 0;\n  }\n  lVar8 = iVar4 * lVar6 + lVar8;\n  lVar6 = lVar6 + lVar8;\n  if (lVar8 < lVar6) {\n    dVar1 = *(double *)((long)this + 0x20);\n    cache_view = *(CacheView **)((long)this + 0x10);\n    exception = *(ExceptionInfo **)((long)this + 8);\n                    /* WARNING: Load size is inaccurate */\n    matrix_info = *this;\n    do {\n      if (*(int *)((long)this + 0x30) != 0) {\n        pQVar7 = QueueCacheViewAuthenticPixels\n                           (cache_view,0,lVar8,*(size_t *)(lVar2 + 0x20),1,exception);\n        if (pQVar7 == (Quantum *)0x0) {\n          *(undefined4 *)((long)this + 0x30) = 0;\n        }\n        else {\n          x = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              MVar5 = GetMatrixElement(matrix_info,x,lVar8,&local_48);\n              if (MVar5 != MagickFalse) {\n                local_48 = (local_48 - **(double **)((long)this + 0x18)) * dVar1;\n                *pQVar7 = (float)local_48;\n                pQVar7 = pQVar7 + *(long *)(lVar2 + 0x340);\n              }\n              x = x + 1;\n            } while (x < *(long *)(lVar2 + 0x20));\n          }\n          MVar5 = SyncCacheViewAuthenticPixels(cache_view,exception);\n          if (MVar5 == MagickFalse) {\n            *(undefined4 *)((long)this + 0x30) = 0;\n          }\n        }\n      }\n      lVar8 = lVar8 + 1;\n    } while (lVar6 != lVar8);\n  }\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (function_declarator "MatrixToImage__omp_fn_0(void *this)" identifier (parameter_list "(void *this)" ( (parameter_declaration "void *this" primitive_type (pointer_declarator "*this" * identifier)) ))) (compound_statement "{\n  double dVar1;\n  long lVar2;\n  CacheView *cache_view;\n  ExceptionInfo *exception;\n  MatrixInfo *matrix_info;\n  int iVar3;\n  int iVar4;\n  MagickBooleanType MVar5;\n  long lVar6;\n  Quantum *pQVar7;\n  long lVar8;\n  long x;\n  long in_FS_OFFSET;\n  double local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  lVar2 = *(long *)((long)this + 0x28);\n  lVar8 = *(long *)(lVar2 + 0x28);\n  iVar3 = omp_get_num_threads();\n  iVar4 = omp_get_thread_num();\n  lVar6 = lVar8 / (long)iVar3;\n  lVar8 = lVar8 % (long)iVar3;\n  if (iVar4 < lVar8) {\n    lVar6 = lVar6 + 1;\n    lVar8 = 0;\n  }\n  lVar8 = iVar4 * lVar6 + lVar8;\n  lVar6 = lVar6 + lVar8;\n  if (lVar8 < lVar6) {\n    dVar1 = *(double *)((long)this + 0x20);\n    cache_view = *(CacheView **)((long)this + 0x10);\n    exception = *(ExceptionInfo **)((long)this + 8);\n                    /* WARNING: Load size is inaccurate */\n    matrix_info = *this;\n    do {\n      if (*(int *)((long)this + 0x30) != 0) {\n        pQVar7 = QueueCacheViewAuthenticPixels\n                           (cache_view,0,lVar8,*(size_t *)(lVar2 + 0x20),1,exception);\n        if (pQVar7 == (Quantum *)0x0) {\n          *(undefined4 *)((long)this + 0x30) = 0;\n        }\n        else {\n          x = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              MVar5 = GetMatrixElement(matrix_info,x,lVar8,&local_48);\n              if (MVar5 != MagickFalse) {\n                local_48 = (local_48 - **(double **)((long)this + 0x18)) * dVar1;\n                *pQVar7 = (float)local_48;\n                pQVar7 = pQVar7 + *(long *)(lVar2 + 0x340);\n              }\n              x = x + 1;\n            } while (x < *(long *)(lVar2 + 0x20));\n          }\n          MVar5 = SyncCacheViewAuthenticPixels(cache_view,exception);\n          if (MVar5 == MagickFalse) {\n            *(undefined4 *)((long)this + 0x30) = 0;\n          }\n        }\n      }\n      lVar8 = lVar8 + 1;\n    } while (lVar6 != lVar8);\n  }\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return;\n}" { (declaration "double dVar1;" primitive_type identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "CacheView *cache_view;" type_identifier (pointer_declarator "*cache_view" * identifier) ;) (declaration "ExceptionInfo *exception;" type_identifier (pointer_declarator "*exception" * identifier) ;) (declaration "MatrixInfo *matrix_info;" type_identifier (pointer_declarator "*matrix_info" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "MagickBooleanType MVar5;" type_identifier identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "Quantum *pQVar7;" type_identifier (pointer_declarator "*pQVar7" * identifier) ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "long x;" (sized_type_specifier "long" long) identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "double local_48;" primitive_type identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "lVar2 = *(long *)((long)this + 0x28);" (assignment_expression "lVar2 = *(long *)((long)this + 0x28)" identifier = (pointer_expression "*(long *)((long)this + 0x28)" * (cast_expression "(long *)((long)this + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)this + 0x28)" ( (binary_expression "(long)this + 0x28" (cast_expression "(long)this" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "lVar8 = *(long *)(lVar2 + 0x28);" (assignment_expression "lVar8 = *(long *)(lVar2 + 0x28)" identifier = (pointer_expression "*(long *)(lVar2 + 0x28)" * (cast_expression "(long *)(lVar2 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x28)" ( (binary_expression "lVar2 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = omp_get_num_threads();" (assignment_expression "iVar3 = omp_get_num_threads()" identifier = (call_expression "omp_get_num_threads()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar4 = omp_get_thread_num();" (assignment_expression "iVar4 = omp_get_thread_num()" identifier = (call_expression "omp_get_thread_num()" identifier (argument_list "()" ( )))) ;) (expression_statement "lVar6 = lVar8 / (long)iVar3;" (assignment_expression "lVar6 = lVar8 / (long)iVar3" identifier = (binary_expression "lVar8 / (long)iVar3" identifier / (cast_expression "(long)iVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "lVar8 = lVar8 % (long)iVar3;" (assignment_expression "lVar8 = lVar8 % (long)iVar3" identifier = (binary_expression "lVar8 % (long)iVar3" identifier % (cast_expression "(long)iVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if (iVar4 < lVar8) {\n    lVar6 = lVar6 + 1;\n    lVar8 = 0;\n  }" if (parenthesized_expression "(iVar4 < lVar8)" ( (binary_expression "iVar4 < lVar8" identifier < identifier) )) (compound_statement "{\n    lVar6 = lVar6 + 1;\n    lVar8 = 0;\n  }" { (expression_statement "lVar6 = lVar6 + 1;" (assignment_expression "lVar6 = lVar6 + 1" identifier = (binary_expression "lVar6 + 1" identifier + number_literal)) ;) (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" identifier = number_literal) ;) })) (expression_statement "lVar8 = iVar4 * lVar6 + lVar8;" (assignment_expression "lVar8 = iVar4 * lVar6 + lVar8" identifier = (binary_expression "iVar4 * lVar6 + lVar8" (binary_expression "iVar4 * lVar6" identifier * identifier) + identifier)) ;) (expression_statement "lVar6 = lVar6 + lVar8;" (assignment_expression "lVar6 = lVar6 + lVar8" identifier = (binary_expression "lVar6 + lVar8" identifier + identifier)) ;) (if_statement "if (lVar8 < lVar6) {\n    dVar1 = *(double *)((long)this + 0x20);\n    cache_view = *(CacheView **)((long)this + 0x10);\n    exception = *(ExceptionInfo **)((long)this + 8);\n                    /* WARNING: Load size is inaccurate */\n    matrix_info = *this;\n    do {\n      if (*(int *)((long)this + 0x30) != 0) {\n        pQVar7 = QueueCacheViewAuthenticPixels\n                           (cache_view,0,lVar8,*(size_t *)(lVar2 + 0x20),1,exception);\n        if (pQVar7 == (Quantum *)0x0) {\n          *(undefined4 *)((long)this + 0x30) = 0;\n        }\n        else {\n          x = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              MVar5 = GetMatrixElement(matrix_info,x,lVar8,&local_48);\n              if (MVar5 != MagickFalse) {\n                local_48 = (local_48 - **(double **)((long)this + 0x18)) * dVar1;\n                *pQVar7 = (float)local_48;\n                pQVar7 = pQVar7 + *(long *)(lVar2 + 0x340);\n              }\n              x = x + 1;\n            } while (x < *(long *)(lVar2 + 0x20));\n          }\n          MVar5 = SyncCacheViewAuthenticPixels(cache_view,exception);\n          if (MVar5 == MagickFalse) {\n            *(undefined4 *)((long)this + 0x30) = 0;\n          }\n        }\n      }\n      lVar8 = lVar8 + 1;\n    } while (lVar6 != lVar8);\n  }" if (parenthesized_expression "(lVar8 < lVar6)" ( (binary_expression "lVar8 < lVar6" identifier < identifier) )) (compound_statement "{\n    dVar1 = *(double *)((long)this + 0x20);\n    cache_view = *(CacheView **)((long)this + 0x10);\n    exception = *(ExceptionInfo **)((long)this + 8);\n                    /* WARNING: Load size is inaccurate */\n    matrix_info = *this;\n    do {\n      if (*(int *)((long)this + 0x30) != 0) {\n        pQVar7 = QueueCacheViewAuthenticPixels\n                           (cache_view,0,lVar8,*(size_t *)(lVar2 + 0x20),1,exception);\n        if (pQVar7 == (Quantum *)0x0) {\n          *(undefined4 *)((long)this + 0x30) = 0;\n        }\n        else {\n          x = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              MVar5 = GetMatrixElement(matrix_info,x,lVar8,&local_48);\n              if (MVar5 != MagickFalse) {\n                local_48 = (local_48 - **(double **)((long)this + 0x18)) * dVar1;\n                *pQVar7 = (float)local_48;\n                pQVar7 = pQVar7 + *(long *)(lVar2 + 0x340);\n              }\n              x = x + 1;\n            } while (x < *(long *)(lVar2 + 0x20));\n          }\n          MVar5 = SyncCacheViewAuthenticPixels(cache_view,exception);\n          if (MVar5 == MagickFalse) {\n            *(undefined4 *)((long)this + 0x30) = 0;\n          }\n        }\n      }\n      lVar8 = lVar8 + 1;\n    } while (lVar6 != lVar8);\n  }" { (expression_statement "dVar1 = *(double *)((long)this + 0x20);" (assignment_expression "dVar1 = *(double *)((long)this + 0x20)" identifier = (pointer_expression "*(double *)((long)this + 0x20)" * (cast_expression "(double *)((long)this + 0x20)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)this + 0x20)" ( (binary_expression "(long)this + 0x20" (cast_expression "(long)this" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "cache_view = *(CacheView **)((long)this + 0x10);" (assignment_expression "cache_view = *(CacheView **)((long)this + 0x10)" identifier = (pointer_expression "*(CacheView **)((long)this + 0x10)" * (cast_expression "(CacheView **)((long)this + 0x10)" ( (type_descriptor "CacheView **" type_identifier (abstract_pointer_declarator "**" * (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) ))))) ;) (expression_statement "exception = *(ExceptionInfo **)((long)this + 8);" (assignment_expression "exception = *(ExceptionInfo **)((long)this + 8)" identifier = (pointer_expression "*(ExceptionInfo **)((long)this + 8)" * (cast_expression "(ExceptionInfo **)((long)this + 8)" ( (type_descriptor "ExceptionInfo **" type_identifier (abstract_pointer_declarator "**" * (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 "matrix_info = *this;" (assignment_expression "matrix_info = *this" identifier = (pointer_expression "*this" * identifier)) ;) (do_statement "do {\n      if (*(int *)((long)this + 0x30) != 0) {\n        pQVar7 = QueueCacheViewAuthenticPixels\n                           (cache_view,0,lVar8,*(size_t *)(lVar2 + 0x20),1,exception);\n        if (pQVar7 == (Quantum *)0x0) {\n          *(undefined4 *)((long)this + 0x30) = 0;\n        }\n        else {\n          x = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              MVar5 = GetMatrixElement(matrix_info,x,lVar8,&local_48);\n              if (MVar5 != MagickFalse) {\n                local_48 = (local_48 - **(double **)((long)this + 0x18)) * dVar1;\n                *pQVar7 = (float)local_48;\n                pQVar7 = pQVar7 + *(long *)(lVar2 + 0x340);\n              }\n              x = x + 1;\n            } while (x < *(long *)(lVar2 + 0x20));\n          }\n          MVar5 = SyncCacheViewAuthenticPixels(cache_view,exception);\n          if (MVar5 == MagickFalse) {\n            *(undefined4 *)((long)this + 0x30) = 0;\n          }\n        }\n      }\n      lVar8 = lVar8 + 1;\n    } while (lVar6 != lVar8);" do (compound_statement "{\n      if (*(int *)((long)this + 0x30) != 0) {\n        pQVar7 = QueueCacheViewAuthenticPixels\n                           (cache_view,0,lVar8,*(size_t *)(lVar2 + 0x20),1,exception);\n        if (pQVar7 == (Quantum *)0x0) {\n          *(undefined4 *)((long)this + 0x30) = 0;\n        }\n        else {\n          x = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              MVar5 = GetMatrixElement(matrix_info,x,lVar8,&local_48);\n              if (MVar5 != MagickFalse) {\n                local_48 = (local_48 - **(double **)((long)this + 0x18)) * dVar1;\n                *pQVar7 = (float)local_48;\n                pQVar7 = pQVar7 + *(long *)(lVar2 + 0x340);\n              }\n              x = x + 1;\n            } while (x < *(long *)(lVar2 + 0x20));\n          }\n          MVar5 = SyncCacheViewAuthenticPixels(cache_view,exception);\n          if (MVar5 == MagickFalse) {\n            *(undefined4 *)((long)this + 0x30) = 0;\n          }\n        }\n      }\n      lVar8 = lVar8 + 1;\n    }" { (if_statement "if (*(int *)((long)this + 0x30) != 0) {\n        pQVar7 = QueueCacheViewAuthenticPixels\n                           (cache_view,0,lVar8,*(size_t *)(lVar2 + 0x20),1,exception);\n        if (pQVar7 == (Quantum *)0x0) {\n          *(undefined4 *)((long)this + 0x30) = 0;\n        }\n        else {\n          x = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              MVar5 = GetMatrixElement(matrix_info,x,lVar8,&local_48);\n              if (MVar5 != MagickFalse) {\n                local_48 = (local_48 - **(double **)((long)this + 0x18)) * dVar1;\n                *pQVar7 = (float)local_48;\n                pQVar7 = pQVar7 + *(long *)(lVar2 + 0x340);\n              }\n              x = x + 1;\n            } while (x < *(long *)(lVar2 + 0x20));\n          }\n          MVar5 = SyncCacheViewAuthenticPixels(cache_view,exception);\n          if (MVar5 == MagickFalse) {\n            *(undefined4 *)((long)this + 0x30) = 0;\n          }\n        }\n      }" if (parenthesized_expression "(*(int *)((long)this + 0x30) != 0)" ( (binary_expression "*(int *)((long)this + 0x30) != 0" (pointer_expression "*(int *)((long)this + 0x30)" * (cast_expression "(int *)((long)this + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)this + 0x30)" ( (binary_expression "(long)this + 0x30" (cast_expression "(long)this" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n        pQVar7 = QueueCacheViewAuthenticPixels\n                           (cache_view,0,lVar8,*(size_t *)(lVar2 + 0x20),1,exception);\n        if (pQVar7 == (Quantum *)0x0) {\n          *(undefined4 *)((long)this + 0x30) = 0;\n        }\n        else {\n          x = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              MVar5 = GetMatrixElement(matrix_info,x,lVar8,&local_48);\n              if (MVar5 != MagickFalse) {\n                local_48 = (local_48 - **(double **)((long)this + 0x18)) * dVar1;\n                *pQVar7 = (float)local_48;\n                pQVar7 = pQVar7 + *(long *)(lVar2 + 0x340);\n              }\n              x = x + 1;\n            } while (x < *(long *)(lVar2 + 0x20));\n          }\n          MVar5 = SyncCacheViewAuthenticPixels(cache_view,exception);\n          if (MVar5 == MagickFalse) {\n            *(undefined4 *)((long)this + 0x30) = 0;\n          }\n        }\n      }" { (expression_statement "pQVar7 = QueueCacheViewAuthenticPixels\n                           (cache_view,0,lVar8,*(size_t *)(lVar2 + 0x20),1,exception);" (assignment_expression "pQVar7 = QueueCacheViewAuthenticPixels\n                           (cache_view,0,lVar8,*(size_t *)(lVar2 + 0x20),1,exception)" identifier = (call_expression "QueueCacheViewAuthenticPixels\n                           (cache_view,0,lVar8,*(size_t *)(lVar2 + 0x20),1,exception)" identifier (argument_list "(cache_view,0,lVar8,*(size_t *)(lVar2 + 0x20),1,exception)" ( identifier , number_literal , identifier , (pointer_expression "*(size_t *)(lVar2 + 0x20)" * (cast_expression "(size_t *)(lVar2 + 0x20)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x20)" ( (binary_expression "lVar2 + 0x20" identifier + number_literal) )))) , number_literal , identifier )))) ;) (if_statement "if (pQVar7 == (Quantum *)0x0) {\n          *(undefined4 *)((long)this + 0x30) = 0;\n        }\n        else {\n          x = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              MVar5 = GetMatrixElement(matrix_info,x,lVar8,&local_48);\n              if (MVar5 != MagickFalse) {\n                local_48 = (local_48 - **(double **)((long)this + 0x18)) * dVar1;\n                *pQVar7 = (float)local_48;\n                pQVar7 = pQVar7 + *(long *)(lVar2 + 0x340);\n              }\n              x = x + 1;\n            } while (x < *(long *)(lVar2 + 0x20));\n          }\n          MVar5 = SyncCacheViewAuthenticPixels(cache_view,exception);\n          if (MVar5 == MagickFalse) {\n            *(undefined4 *)((long)this + 0x30) = 0;\n          }\n        }" if (parenthesized_expression "(pQVar7 == (Quantum *)0x0)" ( (binary_expression "pQVar7 == (Quantum *)0x0" identifier == (cast_expression "(Quantum *)0x0" ( (type_descriptor "Quantum *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *(undefined4 *)((long)this + 0x30) = 0;\n        }" { (expression_statement "*(undefined4 *)((long)this + 0x30) = 0;" (assignment_expression "*(undefined4 *)((long)this + 0x30) = 0" (pointer_expression "*(undefined4 *)((long)this + 0x30)" * (cast_expression "(undefined4 *)((long)this + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)this + 0x30)" ( (binary_expression "(long)this + 0x30" (cast_expression "(long)this" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n          x = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              MVar5 = GetMatrixElement(matrix_info,x,lVar8,&local_48);\n              if (MVar5 != MagickFalse) {\n                local_48 = (local_48 - **(double **)((long)this + 0x18)) * dVar1;\n                *pQVar7 = (float)local_48;\n                pQVar7 = pQVar7 + *(long *)(lVar2 + 0x340);\n              }\n              x = x + 1;\n            } while (x < *(long *)(lVar2 + 0x20));\n          }\n          MVar5 = SyncCacheViewAuthenticPixels(cache_view,exception);\n          if (MVar5 == MagickFalse) {\n            *(undefined4 *)((long)this + 0x30) = 0;\n          }\n        }" else (compound_statement "{\n          x = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              MVar5 = GetMatrixElement(matrix_info,x,lVar8,&local_48);\n              if (MVar5 != MagickFalse) {\n                local_48 = (local_48 - **(double **)((long)this + 0x18)) * dVar1;\n                *pQVar7 = (float)local_48;\n                pQVar7 = pQVar7 + *(long *)(lVar2 + 0x340);\n              }\n              x = x + 1;\n            } while (x < *(long *)(lVar2 + 0x20));\n          }\n          MVar5 = SyncCacheViewAuthenticPixels(cache_view,exception);\n          if (MVar5 == MagickFalse) {\n            *(undefined4 *)((long)this + 0x30) = 0;\n          }\n        }" { (expression_statement "x = 0;" (assignment_expression "x = 0" identifier = number_literal) ;) (if_statement "if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              MVar5 = GetMatrixElement(matrix_info,x,lVar8,&local_48);\n              if (MVar5 != MagickFalse) {\n                local_48 = (local_48 - **(double **)((long)this + 0x18)) * dVar1;\n                *pQVar7 = (float)local_48;\n                pQVar7 = pQVar7 + *(long *)(lVar2 + 0x340);\n              }\n              x = x + 1;\n            } while (x < *(long *)(lVar2 + 0x20));\n          }" if (parenthesized_expression "(0 < *(long *)(lVar2 + 0x20))" ( (binary_expression "0 < *(long *)(lVar2 + 0x20)" number_literal < (pointer_expression "*(long *)(lVar2 + 0x20)" * (cast_expression "(long *)(lVar2 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x20)" ( (binary_expression "lVar2 + 0x20" identifier + number_literal) ))))) )) (compound_statement "{\n            do {\n              MVar5 = GetMatrixElement(matrix_info,x,lVar8,&local_48);\n              if (MVar5 != MagickFalse) {\n                local_48 = (local_48 - **(double **)((long)this + 0x18)) * dVar1;\n                *pQVar7 = (float)local_48;\n                pQVar7 = pQVar7 + *(long *)(lVar2 + 0x340);\n              }\n              x = x + 1;\n            } while (x < *(long *)(lVar2 + 0x20));\n          }" { (do_statement "do {\n              MVar5 = GetMatrixElement(matrix_info,x,lVar8,&local_48);\n              if (MVar5 != MagickFalse) {\n                local_48 = (local_48 - **(double **)((long)this + 0x18)) * dVar1;\n                *pQVar7 = (float)local_48;\n                pQVar7 = pQVar7 + *(long *)(lVar2 + 0x340);\n              }\n              x = x + 1;\n            } while (x < *(long *)(lVar2 + 0x20));" do (compound_statement "{\n              MVar5 = GetMatrixElement(matrix_info,x,lVar8,&local_48);\n              if (MVar5 != MagickFalse) {\n                local_48 = (local_48 - **(double **)((long)this + 0x18)) * dVar1;\n                *pQVar7 = (float)local_48;\n                pQVar7 = pQVar7 + *(long *)(lVar2 + 0x340);\n              }\n              x = x + 1;\n            }" { (expression_statement "MVar5 = GetMatrixElement(matrix_info,x,lVar8,&local_48);" (assignment_expression "MVar5 = GetMatrixElement(matrix_info,x,lVar8,&local_48)" identifier = (call_expression "GetMatrixElement(matrix_info,x,lVar8,&local_48)" identifier (argument_list "(matrix_info,x,lVar8,&local_48)" ( identifier , identifier , identifier , (pointer_expression "&local_48" & identifier) )))) ;) (if_statement "if (MVar5 != MagickFalse) {\n                local_48 = (local_48 - **(double **)((long)this + 0x18)) * dVar1;\n                *pQVar7 = (float)local_48;\n                pQVar7 = pQVar7 + *(long *)(lVar2 + 0x340);\n              }" if (parenthesized_expression "(MVar5 != MagickFalse)" ( (binary_expression "MVar5 != MagickFalse" identifier != identifier) )) (compound_statement "{\n                local_48 = (local_48 - **(double **)((long)this + 0x18)) * dVar1;\n                *pQVar7 = (float)local_48;\n                pQVar7 = pQVar7 + *(long *)(lVar2 + 0x340);\n              }" { (expression_statement "local_48 = (local_48 - **(double **)((long)this + 0x18)) * dVar1;" (assignment_expression "local_48 = (local_48 - **(double **)((long)this + 0x18)) * dVar1" identifier = (binary_expression "(local_48 - **(double **)((long)this + 0x18)) * dVar1" (parenthesized_expression "(local_48 - **(double **)((long)this + 0x18))" ( (binary_expression "local_48 - **(double **)((long)this + 0x18)" identifier - (pointer_expression "**(double **)((long)this + 0x18)" * (pointer_expression "*(double **)((long)this + 0x18)" * (cast_expression "(double **)((long)this + 0x18)" ( (type_descriptor "double **" primitive_type (abstract_pointer_declarator "**" * (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) )))))) )) * identifier)) ;) (expression_statement "*pQVar7 = (float)local_48;" (assignment_expression "*pQVar7 = (float)local_48" (pointer_expression "*pQVar7" * identifier) = (cast_expression "(float)local_48" ( (type_descriptor "float" primitive_type) ) identifier)) ;) (expression_statement "pQVar7 = pQVar7 + *(long *)(lVar2 + 0x340);" (assignment_expression "pQVar7 = pQVar7 + *(long *)(lVar2 + 0x340)" identifier = (binary_expression "pQVar7 + *(long *)(lVar2 + 0x340)" identifier + (pointer_expression "*(long *)(lVar2 + 0x340)" * (cast_expression "(long *)(lVar2 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x340)" ( (binary_expression "lVar2 + 0x340" identifier + number_literal) )))))) ;) })) (expression_statement "x = x + 1;" (assignment_expression "x = x + 1" identifier = (binary_expression "x + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(x < *(long *)(lVar2 + 0x20))" ( (binary_expression "x < *(long *)(lVar2 + 0x20)" identifier < (pointer_expression "*(long *)(lVar2 + 0x20)" * (cast_expression "(long *)(lVar2 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x20)" ( (binary_expression "lVar2 + 0x20" identifier + number_literal) ))))) )) ;) })) (expression_statement "MVar5 = SyncCacheViewAuthenticPixels(cache_view,exception);" (assignment_expression "MVar5 = SyncCacheViewAuthenticPixels(cache_view,exception)" identifier = (call_expression "SyncCacheViewAuthenticPixels(cache_view,exception)" identifier (argument_list "(cache_view,exception)" ( identifier , identifier )))) ;) (if_statement "if (MVar5 == MagickFalse) {\n            *(undefined4 *)((long)this + 0x30) = 0;\n          }" if (parenthesized_expression "(MVar5 == MagickFalse)" ( (binary_expression "MVar5 == MagickFalse" identifier == identifier) )) (compound_statement "{\n            *(undefined4 *)((long)this + 0x30) = 0;\n          }" { (expression_statement "*(undefined4 *)((long)this + 0x30) = 0;" (assignment_expression "*(undefined4 *)((long)this + 0x30) = 0" (pointer_expression "*(undefined4 *)((long)this + 0x30)" * (cast_expression "(undefined4 *)((long)this + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)this + 0x30)" ( (binary_expression "(long)this + 0x30" (cast_expression "(long)this" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) })) }))) })) (expression_statement "lVar8 = lVar8 + 1;" (assignment_expression "lVar8 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar6 != lVar8)" ( (binary_expression "lVar6 != lVar8" identifier != identifier) )) ;) })) (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" { comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00231fad(undefined8 *param_1)\n\n{\n  double dVar1;\n  long lVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  int iVar6;\n  int iVar7;\n  long lVar8;\n  float *pfVar9;\n  long lVar10;\n  long lVar11;\n  long in_FS_OFFSET;\n  double local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  lVar2 = param_1[5];\n  lVar10 = *(long *)(lVar2 + 0x28);\n  iVar6 = omp_get_num_threads();\n  iVar7 = omp_get_thread_num();\n  lVar8 = lVar10 / (long)iVar6;\n  lVar10 = lVar10 % (long)iVar6;\n  if (iVar7 < lVar10) {\n    lVar8 = lVar8 + 1;\n    lVar10 = 0;\n  }\n  lVar10 = iVar7 * lVar8 + lVar10;\n  lVar8 = lVar8 + lVar10;\n  if (lVar10 < lVar8) {\n    dVar1 = (double)param_1[4];\n    uVar3 = param_1[2];\n    uVar4 = param_1[1];\n    uVar5 = *param_1;\n    do {\n      if (*(int *)(param_1 + 6) != 0) {\n        pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);\n        if (pfVar9 == (float *)0x0) {\n          *(undefined4 *)(param_1 + 6) = 0;\n        }\n        else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }\n      }\n      lVar10 = lVar10 + 1;\n    } while (lVar8 != lVar10);\n  }\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return;\n}\n\n" (function_definition "void FUN_00231fad(undefined8 *param_1)\n\n{\n  double dVar1;\n  long lVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  int iVar6;\n  int iVar7;\n  long lVar8;\n  float *pfVar9;\n  long lVar10;\n  long lVar11;\n  long in_FS_OFFSET;\n  double local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  lVar2 = param_1[5];\n  lVar10 = *(long *)(lVar2 + 0x28);\n  iVar6 = omp_get_num_threads();\n  iVar7 = omp_get_thread_num();\n  lVar8 = lVar10 / (long)iVar6;\n  lVar10 = lVar10 % (long)iVar6;\n  if (iVar7 < lVar10) {\n    lVar8 = lVar8 + 1;\n    lVar10 = 0;\n  }\n  lVar10 = iVar7 * lVar8 + lVar10;\n  lVar8 = lVar8 + lVar10;\n  if (lVar10 < lVar8) {\n    dVar1 = (double)param_1[4];\n    uVar3 = param_1[2];\n    uVar4 = param_1[1];\n    uVar5 = *param_1;\n    do {\n      if (*(int *)(param_1 + 6) != 0) {\n        pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);\n        if (pfVar9 == (float *)0x0) {\n          *(undefined4 *)(param_1 + 6) = 0;\n        }\n        else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }\n      }\n      lVar10 = lVar10 + 1;\n    } while (lVar8 != lVar10);\n  }\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00231fad(undefined8 *param_1)" identifier (parameter_list "(undefined8 *param_1)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  double dVar1;\n  long lVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  int iVar6;\n  int iVar7;\n  long lVar8;\n  float *pfVar9;\n  long lVar10;\n  long lVar11;\n  long in_FS_OFFSET;\n  double local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  lVar2 = param_1[5];\n  lVar10 = *(long *)(lVar2 + 0x28);\n  iVar6 = omp_get_num_threads();\n  iVar7 = omp_get_thread_num();\n  lVar8 = lVar10 / (long)iVar6;\n  lVar10 = lVar10 % (long)iVar6;\n  if (iVar7 < lVar10) {\n    lVar8 = lVar8 + 1;\n    lVar10 = 0;\n  }\n  lVar10 = iVar7 * lVar8 + lVar10;\n  lVar8 = lVar8 + lVar10;\n  if (lVar10 < lVar8) {\n    dVar1 = (double)param_1[4];\n    uVar3 = param_1[2];\n    uVar4 = param_1[1];\n    uVar5 = *param_1;\n    do {\n      if (*(int *)(param_1 + 6) != 0) {\n        pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);\n        if (pfVar9 == (float *)0x0) {\n          *(undefined4 *)(param_1 + 6) = 0;\n        }\n        else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }\n      }\n      lVar10 = lVar10 + 1;\n    } while (lVar8 != lVar10);\n  }\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return;\n}" { (declaration "double dVar1;" primitive_type identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "float *pfVar9;" primitive_type (pointer_declarator "*pfVar9" * identifier) ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "double local_48;" primitive_type identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "lVar2 = param_1[5];" (assignment_expression "lVar2 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "lVar10 = *(long *)(lVar2 + 0x28);" (assignment_expression "lVar10 = *(long *)(lVar2 + 0x28)" identifier = (pointer_expression "*(long *)(lVar2 + 0x28)" * (cast_expression "(long *)(lVar2 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x28)" ( (binary_expression "lVar2 + 0x28" identifier + number_literal) ))))) ;) (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 "lVar8 = lVar10 / (long)iVar6;" (assignment_expression "lVar8 = lVar10 / (long)iVar6" identifier = (binary_expression "lVar10 / (long)iVar6" identifier / (cast_expression "(long)iVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "lVar10 = lVar10 % (long)iVar6;" (assignment_expression "lVar10 = lVar10 % (long)iVar6" identifier = (binary_expression "lVar10 % (long)iVar6" identifier % (cast_expression "(long)iVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if (iVar7 < lVar10) {\n    lVar8 = lVar8 + 1;\n    lVar10 = 0;\n  }" if (parenthesized_expression "(iVar7 < lVar10)" ( (binary_expression "iVar7 < lVar10" identifier < identifier) )) (compound_statement "{\n    lVar8 = lVar8 + 1;\n    lVar10 = 0;\n  }" { (expression_statement "lVar8 = lVar8 + 1;" (assignment_expression "lVar8 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) ;) (expression_statement "lVar10 = 0;" (assignment_expression "lVar10 = 0" identifier = number_literal) ;) })) (expression_statement "lVar10 = iVar7 * lVar8 + lVar10;" (assignment_expression "lVar10 = iVar7 * lVar8 + lVar10" identifier = (binary_expression "iVar7 * lVar8 + lVar10" (binary_expression "iVar7 * lVar8" identifier * identifier) + identifier)) ;) (expression_statement "lVar8 = lVar8 + lVar10;" (assignment_expression "lVar8 = lVar8 + lVar10" identifier = (binary_expression "lVar8 + lVar10" identifier + identifier)) ;) (if_statement "if (lVar10 < lVar8) {\n    dVar1 = (double)param_1[4];\n    uVar3 = param_1[2];\n    uVar4 = param_1[1];\n    uVar5 = *param_1;\n    do {\n      if (*(int *)(param_1 + 6) != 0) {\n        pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);\n        if (pfVar9 == (float *)0x0) {\n          *(undefined4 *)(param_1 + 6) = 0;\n        }\n        else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }\n      }\n      lVar10 = lVar10 + 1;\n    } while (lVar8 != lVar10);\n  }" if (parenthesized_expression "(lVar10 < lVar8)" ( (binary_expression "lVar10 < lVar8" identifier < identifier) )) (compound_statement "{\n    dVar1 = (double)param_1[4];\n    uVar3 = param_1[2];\n    uVar4 = param_1[1];\n    uVar5 = *param_1;\n    do {\n      if (*(int *)(param_1 + 6) != 0) {\n        pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);\n        if (pfVar9 == (float *)0x0) {\n          *(undefined4 *)(param_1 + 6) = 0;\n        }\n        else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }\n      }\n      lVar10 = lVar10 + 1;\n    } while (lVar8 != lVar10);\n  }" { (expression_statement "dVar1 = (double)param_1[4];" (assignment_expression "dVar1 = (double)param_1[4]" identifier = (cast_expression "(double)param_1[4]" ( (type_descriptor "double" primitive_type) ) (subscript_expression "param_1[4]" identifier [ number_literal ]))) ;) (expression_statement "uVar3 = param_1[2];" (assignment_expression "uVar3 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = param_1[1];" (assignment_expression "uVar4 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = *param_1;" (assignment_expression "uVar5 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (do_statement "do {\n      if (*(int *)(param_1 + 6) != 0) {\n        pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);\n        if (pfVar9 == (float *)0x0) {\n          *(undefined4 *)(param_1 + 6) = 0;\n        }\n        else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }\n      }\n      lVar10 = lVar10 + 1;\n    } while (lVar8 != lVar10);" do (compound_statement "{\n      if (*(int *)(param_1 + 6) != 0) {\n        pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);\n        if (pfVar9 == (float *)0x0) {\n          *(undefined4 *)(param_1 + 6) = 0;\n        }\n        else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }\n      }\n      lVar10 = lVar10 + 1;\n    }" { (if_statement "if (*(int *)(param_1 + 6) != 0) {\n        pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);\n        if (pfVar9 == (float *)0x0) {\n          *(undefined4 *)(param_1 + 6) = 0;\n        }\n        else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }\n      }" if (parenthesized_expression "(*(int *)(param_1 + 6) != 0)" ( (binary_expression "*(int *)(param_1 + 6) != 0" (pointer_expression "*(int *)(param_1 + 6)" * (cast_expression "(int *)(param_1 + 6)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 6)" ( (binary_expression "param_1 + 6" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);\n        if (pfVar9 == (float *)0x0) {\n          *(undefined4 *)(param_1 + 6) = 0;\n        }\n        else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }\n      }" { (expression_statement "pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);" (assignment_expression "pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4)" identifier = (cast_expression "(float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4)" identifier (argument_list "(uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4)" ( identifier , number_literal , identifier , (pointer_expression "*(undefined8 *)(lVar2 + 0x20)" * (cast_expression "(undefined8 *)(lVar2 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x20)" ( (binary_expression "lVar2 + 0x20" identifier + number_literal) )))) , number_literal , identifier ))))) ;) (if_statement "if (pfVar9 == (float *)0x0) {\n          *(undefined4 *)(param_1 + 6) = 0;\n        }\n        else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }" if (parenthesized_expression "(pfVar9 == (float *)0x0)" ( (binary_expression "pfVar9 == (float *)0x0" identifier == (cast_expression "(float *)0x0" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *(undefined4 *)(param_1 + 6) = 0;\n        }" { (expression_statement "*(undefined4 *)(param_1 + 6) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 6) = 0" (pointer_expression "*(undefined4 *)(param_1 + 6)" * (cast_expression "(undefined4 *)(param_1 + 6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 6)" ( (binary_expression "param_1 + 6" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }" else (compound_statement "{\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }" { (expression_statement "lVar11 = 0;" (assignment_expression "lVar11 = 0" identifier = number_literal) ;) (if_statement "if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }" if (parenthesized_expression "(0 < *(long *)(lVar2 + 0x20))" ( (binary_expression "0 < *(long *)(lVar2 + 0x20)" number_literal < (pointer_expression "*(long *)(lVar2 + 0x20)" * (cast_expression "(long *)(lVar2 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x20)" ( (binary_expression "lVar2 + 0x20" identifier + number_literal) ))))) )) (compound_statement "{\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }" { (do_statement "do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));" do (compound_statement "{\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            }" { (expression_statement "iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);" (assignment_expression "iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48)" identifier = (call_expression "GetMatrixElement(uVar5,lVar11,lVar10,&local_48)" identifier (argument_list "(uVar5,lVar11,lVar10,&local_48)" ( identifier , identifier , identifier , (pointer_expression "&local_48" & identifier) )))) ;) (if_statement "if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }" { (expression_statement "local_48 = (local_48 - *(double *)param_1[3]) * dVar1;" (assignment_expression "local_48 = (local_48 - *(double *)param_1[3]) * dVar1" identifier = (binary_expression "(local_48 - *(double *)param_1[3]) * dVar1" (parenthesized_expression "(local_48 - *(double *)param_1[3])" ( (binary_expression "local_48 - *(double *)param_1[3]" identifier - (pointer_expression "*(double *)param_1[3]" * (cast_expression "(double *)param_1[3]" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[3]" identifier [ number_literal ])))) )) * identifier)) ;) (expression_statement "*pfVar9 = (float)local_48;" (assignment_expression "*pfVar9 = (float)local_48" (pointer_expression "*pfVar9" * identifier) = (cast_expression "(float)local_48" ( (type_descriptor "float" primitive_type) ) identifier)) ;) (expression_statement "pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);" (assignment_expression "pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340)" identifier = (binary_expression "pfVar9 + *(long *)(lVar2 + 0x340)" identifier + (pointer_expression "*(long *)(lVar2 + 0x340)" * (cast_expression "(long *)(lVar2 + 0x340)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x340)" ( (binary_expression "lVar2 + 0x340" identifier + number_literal) )))))) ;) })) (expression_statement "lVar11 = lVar11 + 1;" (assignment_expression "lVar11 = lVar11 + 1" identifier = (binary_expression "lVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar11 < *(long *)(lVar2 + 0x20))" ( (binary_expression "lVar11 < *(long *)(lVar2 + 0x20)" identifier < (pointer_expression "*(long *)(lVar2 + 0x20)" * (cast_expression "(long *)(lVar2 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x20)" ( (binary_expression "lVar2 + 0x20" identifier + number_literal) ))))) )) ;) })) (expression_statement "iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);" (assignment_expression "iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4)" identifier = (call_expression "SyncCacheViewAuthenticPixels(uVar3,uVar4)" identifier (argument_list "(uVar3,uVar4)" ( identifier , identifier )))) ;) (if_statement "if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n            *(undefined4 *)(param_1 + 6) = 0;\n          }" { (expression_statement "*(undefined4 *)(param_1 + 6) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 6) = 0" (pointer_expression "*(undefined4 *)(param_1 + 6)" * (cast_expression "(undefined4 *)(param_1 + 6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 6)" ( (binary_expression "param_1 + 6" identifier + number_literal) )))) = number_literal) ;) })) }))) })) (expression_statement "lVar10 = lVar10 + 1;" (assignment_expression "lVar10 = lVar10 + 1" identifier = (binary_expression "lVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar8 != lVar10)" ( (binary_expression "lVar8 != lVar10" identifier != identifier) )) ;) })) (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" if (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    __stack_chk_fail();\n  }" { (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT / (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT % (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (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)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (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 { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])))) )) * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (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)) ;) }) 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 = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) }))) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (return_statement return ;) })))
(function_definition "void FUN_00231fad(undefined8 *param_1)\n\n{\n  double dVar1;\n  long lVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  int iVar6;\n  int iVar7;\n  long lVar8;\n  float *pfVar9;\n  long lVar10;\n  long lVar11;\n  long in_FS_OFFSET;\n  double local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  lVar2 = param_1[5];\n  lVar10 = *(long *)(lVar2 + 0x28);\n  iVar6 = omp_get_num_threads();\n  iVar7 = omp_get_thread_num();\n  lVar8 = lVar10 / (long)iVar6;\n  lVar10 = lVar10 % (long)iVar6;\n  if (iVar7 < lVar10) {\n    lVar8 = lVar8 + 1;\n    lVar10 = 0;\n  }\n  lVar10 = iVar7 * lVar8 + lVar10;\n  lVar8 = lVar8 + lVar10;\n  if (lVar10 < lVar8) {\n    dVar1 = (double)param_1[4];\n    uVar3 = param_1[2];\n    uVar4 = param_1[1];\n    uVar5 = *param_1;\n    do {\n      if (*(int *)(param_1 + 6) != 0) {\n        pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);\n        if (pfVar9 == (float *)0x0) {\n          *(undefined4 *)(param_1 + 6) = 0;\n        }\n        else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }\n      }\n      lVar10 = lVar10 + 1;\n    } while (lVar8 != lVar10);\n  }\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00231fad(undefined8 *param_1)" (identifier "FUN_00231fad") (parameter_list "(undefined8 *param_1)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  double dVar1;\n  long lVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  int iVar6;\n  int iVar7;\n  long lVar8;\n  float *pfVar9;\n  long lVar10;\n  long lVar11;\n  long in_FS_OFFSET;\n  double local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  lVar2 = param_1[5];\n  lVar10 = *(long *)(lVar2 + 0x28);\n  iVar6 = omp_get_num_threads();\n  iVar7 = omp_get_thread_num();\n  lVar8 = lVar10 / (long)iVar6;\n  lVar10 = lVar10 % (long)iVar6;\n  if (iVar7 < lVar10) {\n    lVar8 = lVar8 + 1;\n    lVar10 = 0;\n  }\n  lVar10 = iVar7 * lVar8 + lVar10;\n  lVar8 = lVar8 + lVar10;\n  if (lVar10 < lVar8) {\n    dVar1 = (double)param_1[4];\n    uVar3 = param_1[2];\n    uVar4 = param_1[1];\n    uVar5 = *param_1;\n    do {\n      if (*(int *)(param_1 + 6) != 0) {\n        pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);\n        if (pfVar9 == (float *)0x0) {\n          *(undefined4 *)(param_1 + 6) = 0;\n        }\n        else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }\n      }\n      lVar10 = lVar10 + 1;\n    } while (lVar8 != lVar10);\n  }\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return;\n}" ({ "{") (declaration "double dVar1;" (primitive_type "double") (identifier "dVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "undefined8 uVar3;" (type_identifier "undefined8") (identifier "uVar3") (; ";")) (declaration "undefined8 uVar4;" (type_identifier "undefined8") (identifier "uVar4") (; ";")) (declaration "undefined8 uVar5;" (type_identifier "undefined8") (identifier "uVar5") (; ";")) (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 "float *pfVar9;" (primitive_type "float") (pointer_declarator "*pfVar9" (* "*") (identifier "pfVar9")) (; ";")) (declaration "long lVar10;" (sized_type_specifier "long" (long "long")) (identifier "lVar10") (; ";")) (declaration "long lVar11;" (sized_type_specifier "long" (long "long")) (identifier "lVar11") (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "double local_48;" (primitive_type "double") (identifier "local_48") (; ";")) (declaration "long local_40;" (sized_type_specifier "long" (long "long")) (identifier "local_40") (; ";")) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (= "=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "lVar2 = param_1[5];" (assignment_expression "lVar2 = param_1[5]" (identifier "lVar2") (= "=") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "lVar10 = *(long *)(lVar2 + 0x28);" (assignment_expression "lVar10 = *(long *)(lVar2 + 0x28)" (identifier "lVar10") (= "=") (pointer_expression "*(long *)(lVar2 + 0x28)" (* "*") (cast_expression "(long *)(lVar2 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x28)" (( "(") (binary_expression "lVar2 + 0x28" (identifier "lVar2") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (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 "lVar8 = lVar10 / (long)iVar6;" (assignment_expression "lVar8 = lVar10 / (long)iVar6" (identifier "lVar8") (= "=") (binary_expression "lVar10 / (long)iVar6" (identifier "lVar10") (/ "/") (cast_expression "(long)iVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar6")))) (; ";")) (expression_statement "lVar10 = lVar10 % (long)iVar6;" (assignment_expression "lVar10 = lVar10 % (long)iVar6" (identifier "lVar10") (= "=") (binary_expression "lVar10 % (long)iVar6" (identifier "lVar10") (% "%") (cast_expression "(long)iVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar6")))) (; ";")) (if_statement "if (iVar7 < lVar10) {\n    lVar8 = lVar8 + 1;\n    lVar10 = 0;\n  }" (if "if") (parenthesized_expression "(iVar7 < lVar10)" (( "(") (binary_expression "iVar7 < lVar10" (identifier "iVar7") (< "<") (identifier "lVar10")) () ")")) (compound_statement "{\n    lVar8 = lVar8 + 1;\n    lVar10 = 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 "lVar10 = 0;" (assignment_expression "lVar10 = 0" (identifier "lVar10") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "lVar10 = iVar7 * lVar8 + lVar10;" (assignment_expression "lVar10 = iVar7 * lVar8 + lVar10" (identifier "lVar10") (= "=") (binary_expression "iVar7 * lVar8 + lVar10" (binary_expression "iVar7 * lVar8" (identifier "iVar7") (* "*") (identifier "lVar8")) (+ "+") (identifier "lVar10"))) (; ";")) (expression_statement "lVar8 = lVar8 + lVar10;" (assignment_expression "lVar8 = lVar8 + lVar10" (identifier "lVar8") (= "=") (binary_expression "lVar8 + lVar10" (identifier "lVar8") (+ "+") (identifier "lVar10"))) (; ";")) (if_statement "if (lVar10 < lVar8) {\n    dVar1 = (double)param_1[4];\n    uVar3 = param_1[2];\n    uVar4 = param_1[1];\n    uVar5 = *param_1;\n    do {\n      if (*(int *)(param_1 + 6) != 0) {\n        pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);\n        if (pfVar9 == (float *)0x0) {\n          *(undefined4 *)(param_1 + 6) = 0;\n        }\n        else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }\n      }\n      lVar10 = lVar10 + 1;\n    } while (lVar8 != lVar10);\n  }" (if "if") (parenthesized_expression "(lVar10 < lVar8)" (( "(") (binary_expression "lVar10 < lVar8" (identifier "lVar10") (< "<") (identifier "lVar8")) () ")")) (compound_statement "{\n    dVar1 = (double)param_1[4];\n    uVar3 = param_1[2];\n    uVar4 = param_1[1];\n    uVar5 = *param_1;\n    do {\n      if (*(int *)(param_1 + 6) != 0) {\n        pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);\n        if (pfVar9 == (float *)0x0) {\n          *(undefined4 *)(param_1 + 6) = 0;\n        }\n        else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }\n      }\n      lVar10 = lVar10 + 1;\n    } while (lVar8 != lVar10);\n  }" ({ "{") (expression_statement "dVar1 = (double)param_1[4];" (assignment_expression "dVar1 = (double)param_1[4]" (identifier "dVar1") (= "=") (cast_expression "(double)param_1[4]" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")))) (; ";")) (expression_statement "uVar3 = param_1[2];" (assignment_expression "uVar3 = param_1[2]" (identifier "uVar3") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar4 = param_1[1];" (assignment_expression "uVar4 = param_1[1]" (identifier "uVar4") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar5 = *param_1;" (assignment_expression "uVar5 = *param_1" (identifier "uVar5") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (do_statement "do {\n      if (*(int *)(param_1 + 6) != 0) {\n        pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);\n        if (pfVar9 == (float *)0x0) {\n          *(undefined4 *)(param_1 + 6) = 0;\n        }\n        else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }\n      }\n      lVar10 = lVar10 + 1;\n    } while (lVar8 != lVar10);" (do "do") (compound_statement "{\n      if (*(int *)(param_1 + 6) != 0) {\n        pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);\n        if (pfVar9 == (float *)0x0) {\n          *(undefined4 *)(param_1 + 6) = 0;\n        }\n        else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }\n      }\n      lVar10 = lVar10 + 1;\n    }" ({ "{") (if_statement "if (*(int *)(param_1 + 6) != 0) {\n        pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);\n        if (pfVar9 == (float *)0x0) {\n          *(undefined4 *)(param_1 + 6) = 0;\n        }\n        else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }\n      }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 6) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 6) != 0" (pointer_expression "*(int *)(param_1 + 6)" (* "*") (cast_expression "(int *)(param_1 + 6)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 6)" (( "(") (binary_expression "param_1 + 6" (identifier "param_1") (+ "+") (number_literal "6")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);\n        if (pfVar9 == (float *)0x0) {\n          *(undefined4 *)(param_1 + 6) = 0;\n        }\n        else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }\n      }" ({ "{") (expression_statement "pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);" (assignment_expression "pfVar9 = (float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4)" (identifier "pfVar9") (= "=") (cast_expression "(float *)QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "QueueCacheViewAuthenticPixels\n                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4)" (identifier "QueueCacheViewAuthenticPixels") (argument_list "(uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4)" (( "(") (identifier "uVar3") (, ",") (number_literal "0") (, ",") (identifier "lVar10") (, ",") (pointer_expression "*(undefined8 *)(lVar2 + 0x20)" (* "*") (cast_expression "(undefined8 *)(lVar2 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x20)" (( "(") (binary_expression "lVar2 + 0x20" (identifier "lVar2") (+ "+") (number_literal "0x20")) () ")")))) (, ",") (number_literal "1") (, ",") (identifier "uVar4") () ")"))))) (; ";")) (if_statement "if (pfVar9 == (float *)0x0) {\n          *(undefined4 *)(param_1 + 6) = 0;\n        }\n        else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }" (if "if") (parenthesized_expression "(pfVar9 == (float *)0x0)" (( "(") (binary_expression "pfVar9 == (float *)0x0" (identifier "pfVar9") (== "==") (cast_expression "(float *)0x0" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          *(undefined4 *)(param_1 + 6) = 0;\n        }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 6) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 6) = 0" (pointer_expression "*(undefined4 *)(param_1 + 6)" (* "*") (cast_expression "(undefined4 *)(param_1 + 6)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 6)" (( "(") (binary_expression "param_1 + 6" (identifier "param_1") (+ "+") (number_literal "6")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }" (else "else") (compound_statement "{\n          lVar11 = 0;\n          if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }\n          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);\n          if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }\n        }" ({ "{") (expression_statement "lVar11 = 0;" (assignment_expression "lVar11 = 0" (identifier "lVar11") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0 < *(long *)(lVar2 + 0x20)) {\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }" (if "if") (parenthesized_expression "(0 < *(long *)(lVar2 + 0x20))" (( "(") (binary_expression "0 < *(long *)(lVar2 + 0x20)" (number_literal "0") (< "<") (pointer_expression "*(long *)(lVar2 + 0x20)" (* "*") (cast_expression "(long *)(lVar2 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x20)" (( "(") (binary_expression "lVar2 + 0x20" (identifier "lVar2") (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (compound_statement "{\n            do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));\n          }" ({ "{") (do_statement "do {\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            } while (lVar11 < *(long *)(lVar2 + 0x20));" (do "do") (compound_statement "{\n              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);\n              if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }\n              lVar11 = lVar11 + 1;\n            }" ({ "{") (expression_statement "iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);" (assignment_expression "iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48)" (identifier "iVar6") (= "=") (call_expression "GetMatrixElement(uVar5,lVar11,lVar10,&local_48)" (identifier "GetMatrixElement") (argument_list "(uVar5,lVar11,lVar10,&local_48)" (( "(") (identifier "uVar5") (, ",") (identifier "lVar11") (, ",") (identifier "lVar10") (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) () ")")))) (; ";")) (if_statement "if (iVar6 != 0) {\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;\n                *pfVar9 = (float)local_48;\n                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);\n              }" ({ "{") (expression_statement "local_48 = (local_48 - *(double *)param_1[3]) * dVar1;" (assignment_expression "local_48 = (local_48 - *(double *)param_1[3]) * dVar1" (identifier "local_48") (= "=") (binary_expression "(local_48 - *(double *)param_1[3]) * dVar1" (parenthesized_expression "(local_48 - *(double *)param_1[3])" (( "(") (binary_expression "local_48 - *(double *)param_1[3]" (identifier "local_48") (- "-") (pointer_expression "*(double *)param_1[3]" (* "*") (cast_expression "(double *)param_1[3]" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))))) () ")")) (* "*") (identifier "dVar1"))) (; ";")) (expression_statement "*pfVar9 = (float)local_48;" (assignment_expression "*pfVar9 = (float)local_48" (pointer_expression "*pfVar9" (* "*") (identifier "pfVar9")) (= "=") (cast_expression "(float)local_48" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (identifier "local_48"))) (; ";")) (expression_statement "pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);" (assignment_expression "pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340)" (identifier "pfVar9") (= "=") (binary_expression "pfVar9 + *(long *)(lVar2 + 0x340)" (identifier "pfVar9") (+ "+") (pointer_expression "*(long *)(lVar2 + 0x340)" (* "*") (cast_expression "(long *)(lVar2 + 0x340)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x340)" (( "(") (binary_expression "lVar2 + 0x340" (identifier "lVar2") (+ "+") (number_literal "0x340")) () ")")))))) (; ";")) (} "}"))) (expression_statement "lVar11 = lVar11 + 1;" (assignment_expression "lVar11 = lVar11 + 1" (identifier "lVar11") (= "=") (binary_expression "lVar11 + 1" (identifier "lVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar11 < *(long *)(lVar2 + 0x20))" (( "(") (binary_expression "lVar11 < *(long *)(lVar2 + 0x20)" (identifier "lVar11") (< "<") (pointer_expression "*(long *)(lVar2 + 0x20)" (* "*") (cast_expression "(long *)(lVar2 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x20)" (( "(") (binary_expression "lVar2 + 0x20" (identifier "lVar2") (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (; ";")) (} "}"))) (expression_statement "iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);" (assignment_expression "iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4)" (identifier "iVar6") (= "=") (call_expression "SyncCacheViewAuthenticPixels(uVar3,uVar4)" (identifier "SyncCacheViewAuthenticPixels") (argument_list "(uVar3,uVar4)" (( "(") (identifier "uVar3") (, ",") (identifier "uVar4") () ")")))) (; ";")) (if_statement "if (iVar6 == 0) {\n            *(undefined4 *)(param_1 + 6) = 0;\n          }" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            *(undefined4 *)(param_1 + 6) = 0;\n          }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 6) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 6) = 0" (pointer_expression "*(undefined4 *)(param_1 + 6)" (* "*") (cast_expression "(undefined4 *)(param_1 + 6)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 6)" (( "(") (binary_expression "param_1 + 6" (identifier "param_1") (+ "+") (number_literal "6")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (} "}")))) (} "}"))) (expression_statement "lVar10 = lVar10 + 1;" (assignment_expression "lVar10 = lVar10 + 1" (identifier "lVar10") (= "=") (binary_expression "lVar10 + 1" (identifier "lVar10") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar8 != lVar10)" (( "(") (binary_expression "lVar8 != lVar10" (identifier "lVar8") (!= "!=") (identifier "lVar10")) () ")")) (; ";")) (} "}"))) (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" (if "if") (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (!= "!=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n                    \n    __stack_chk_fail();\n  }" ({ "{") (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Enum "ExceptionType": Some values do not have unique names */
/* WARNING: Enum "GravityType": Some values do not have unique names */
/* WARNING: Enum "DisposeType": Some values do not have unique names */
/* WARNING: Enum "ChannelType": Some values do not have unique names */
/* WARNING: Enum "PixelChannel": Some values do not have unique names */
/* DWARF original prototype: void MatrixToImage._omp_fn.0(anon_struct_56_7_92ffbb28 * param_0) */

void __thiscall function_1(void *this)

{
  double var_14;
  long var_2;
  type_1 *cache_view;
  type_2 *exception;
  type_3 *matrix_info;
  int iVar3;
  int var_6;
  type_4 var_11;
  long var_7;
  type_5 *var_9;
  long var_5;
  long var_15;
  long var_1;
  double var_13;
  long var_17;
  
  var_17 = *(long *)(var_1 + 0x28);
  var_2 = *(long *)((long)this + 0x28);
  var_5 = *(long *)(var_2 + 0x28);
  iVar3 = var_3();
  var_6 = var_4();
  var_7 = var_5 / (long)iVar3;
  var_5 = var_5 % (long)iVar3;
  if (var_6 < var_5) {
    var_7 = var_7 + 1;
    var_5 = 0;
  }
  var_5 = var_6 * var_7 + var_5;
  var_7 = var_7 + var_5;
  if (var_5 < var_7) {
    var_14 = *(double *)((long)this + 0x20);
    cache_view = *(type_1 **)((long)this + 0x10);
    exception = *(type_2 **)((long)this + 8);
                    /* WARNING: Load size is inaccurate */
    matrix_info = *this;
    do {
      if (*(int *)((long)this + 0x30) != 0) {
        var_9 = var_8
                           (cache_view,0,var_5,*(size_t *)(var_2 + 0x20),1,exception);
        if (var_9 == (type_5 *)0x0) {
          *(type_6 *)((long)this + 0x30) = 0;
        }
        else {
          var_15 = 0;
          if (0 < *(long *)(var_2 + 0x20)) {
            do {
              var_11 = var_10(matrix_info,var_15,var_5,&var_13);
              if (var_11 != var_12) {
                var_13 = (var_13 - **(double **)((long)this + 0x18)) * var_14;
                *var_9 = (float)var_13;
                var_9 = var_9 + *(long *)(var_2 + 0x340);
              }
              var_15 = var_15 + 1;
            } while (var_15 < *(long *)(var_2 + 0x20));
          }
          var_11 = var_16(cache_view,exception);
          if (var_11 == var_12) {
            *(type_6 *)((long)this + 0x30) = 0;
          }
        }
      }
      var_5 = var_5 + 1;
    } while (var_7 != var_5);
  }
  if (var_17 != *(long *)(var_1 + 0x28)) {
                    /* WARNING: Subroutine does not return */
    var_18();
  }
  return;
}


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

void MASKED(undefined8 *param_1)

{
  double dVar1;
  long lVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  int iVar6;
  int iVar7;
  long lVar8;
  float *pfVar9;
  long lVar10;
  long lVar11;
  long in_FS_OFFSET;
  double local_48;
  long local_40;
  
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  lVar2 = param_1[5];
  lVar10 = *(long *)(lVar2 + 0x28);
  iVar6 = omp_get_num_threads();
  iVar7 = omp_get_thread_num();
  lVar8 = lVar10 / (long)iVar6;
  lVar10 = lVar10 % (long)iVar6;
  if (iVar7 < lVar10) {
    lVar8 = lVar8 + 1;
    lVar10 = 0;
  }
  lVar10 = iVar7 * lVar8 + lVar10;
  lVar8 = lVar8 + lVar10;
  if (lVar10 < lVar8) {
    dVar1 = (double)param_1[4];
    uVar3 = param_1[2];
    uVar4 = param_1[1];
    uVar5 = *param_1;
    do {
      if (*(int *)(param_1 + 6) != 0) {
        pfVar9 = (float *)QueueCacheViewAuthenticPixels
                                    (uVar3,0,lVar10,*(undefined8 *)(lVar2 + 0x20),1,uVar4);
        if (pfVar9 == (float *)0x0) {
          *(undefined4 *)(param_1 + 6) = 0;
        }
        else {
          lVar11 = 0;
          if (0 < *(long *)(lVar2 + 0x20)) {
            do {
              iVar6 = GetMatrixElement(uVar5,lVar11,lVar10,&local_48);
              if (iVar6 != 0) {
                local_48 = (local_48 - *(double *)param_1[3]) * dVar1;
                *pfVar9 = (float)local_48;
                pfVar9 = pfVar9 + *(long *)(lVar2 + 0x340);
              }
              lVar11 = lVar11 + 1;
            } while (lVar11 < *(long *)(lVar2 + 0x20));
          }
          iVar6 = SyncCacheViewAuthenticPixels(uVar3,uVar4);
          if (iVar6 == 0) {
            *(undefined4 *)(param_1 + 6) = 0;
          }
        }
      }
      lVar10 = lVar10 + 1;
    } while (lVar8 != lVar10);
  }
  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return;
}

