
void ExpandRotateKernelInfo(KernelInfo *kernel,double angle)

{
  undefined *puVar1;
  KernelInfo *kernel_00;
  KernelInfo *pKVar2;
  int iVar3;
  _KernelInfo *p_Var4;
  MagickRealType *pMVar5;
  MagickRealType *pMVar6;
  int iVar7;
  KernelInfo *pKVar8;
  double dVar9;
  double dVar10;
  double dVar11;
  
  dVar11 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);
  kernel_00 = (KernelInfo *)(*(code *)PTR_CloneKernelInfo_003a8df4)(kernel);
  pKVar8 = kernel;
  while( true ) {
    if (kernel_00 == (KernelInfo *)0x0) {
      return;
    }
    RotateKernelInfo(kernel_00,angle);
    puVar1 = PTR_CloneKernelInfo_003a8df4;
    pKVar2 = pKVar8;
    if ((((kernel->width == kernel_00->width) && (kernel->height == kernel_00->height)) &&
        (kernel->x == kernel_00->x)) &&
       (iVar3 = kernel->width * kernel->height, kernel->y == kernel_00->y)) break;
LAB_0011a478:
    do {
      p_Var4 = pKVar2->next;
      pKVar8 = pKVar2;
LAB_0011a47c:
      pKVar2 = p_Var4;
    } while (p_Var4 != (_KernelInfo *)0x0);
    pKVar8->next = kernel_00;
    pKVar2 = (KernelInfo *)(*(code *)puVar1)(kernel_00);
    pKVar8 = kernel_00;
    kernel_00 = pKVar2;
  }
  iVar7 = 0;
  if (iVar3 == 0) {
LAB_0011a570:
    (*(code *)PTR_DestroyKernelInfo_003a96a8)(kernel_00);
    return;
  }
  pMVar6 = kernel->values;
  pMVar5 = kernel_00->values;
  do {
    dVar9 = *pMVar6;
    iVar7 = iVar7 + 1;
    pMVar6 = pMVar6 + 1;
    dVar10 = *pMVar5;
    pMVar5 = pMVar5 + 1;
    if (NAN(dVar9)) {
      if (!NAN(dVar10)) {
        p_Var4 = pKVar8->next;
        goto LAB_0011a47c;
      }
    }
    else if (NAN(dVar10)) goto LAB_0011a478;
    if (dVar11 <= ABS(dVar9 - dVar10)) goto LAB_0011a478;
    if (iVar7 == iVar3) goto LAB_0011a570;
  } while( true );
}



void FUN_0011a3dc(int param_1)

{
  int iVar1;
  undefined *puVar2;
  int iVar3;
  int iVar4;
  double *pdVar5;
  double *pdVar6;
  int iVar7;
  int iVar8;
  double dVar9;
  double dVar10;
  double dVar11;
  
  dVar11 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);
  iVar3 = (*(code *)PTR_CloneKernelInfo_003a8df4)(param_1);
  iVar8 = param_1;
  while( true ) {
    iVar1 = iVar3;
    if (iVar1 == 0) {
      return;
    }
    FUN_00118594(iVar1);
    puVar2 = PTR_CloneKernelInfo_003a8df4;
    iVar3 = iVar8;
    if ((((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&
         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&
        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))) &&
       (iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),
       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10))) break;
LAB_0011a478:
    do {
      iVar4 = *(int *)(iVar3 + 0x40);
      iVar8 = iVar3;
LAB_0011a47c:
      iVar3 = iVar4;
    } while (iVar4 != 0);
    *(int *)(iVar8 + 0x40) = iVar1;
    iVar3 = (*(code *)puVar2)(iVar1);
    iVar8 = iVar1;
  }
  iVar7 = 0;
  if (iVar4 == 0) {
LAB_0011a570:
    (*(code *)PTR_DestroyKernelInfo_003a96a8)(iVar1);
    return;
  }
  pdVar6 = *(double **)(param_1 + 0x14);
  pdVar5 = *(double **)(iVar1 + 0x14);
  do {
    dVar9 = *pdVar6;
    iVar7 = iVar7 + 1;
    pdVar6 = pdVar6 + 1;
    dVar10 = *pdVar5;
    pdVar5 = pdVar5 + 1;
    if (NAN(dVar9)) {
      if (!NAN(dVar10)) {
        iVar4 = *(int *)(iVar8 + 0x40);
        goto LAB_0011a47c;
      }
    }
    else if (NAN(dVar10)) goto LAB_0011a478;
    if (dVar11 <= ABS(dVar9 - dVar10)) goto LAB_0011a478;
    if (iVar7 == iVar4) goto LAB_0011a570;
  } while( true );
}


lui gp,0x29
addiu gp,gp,0x64d4
addu gp,gp,t9
addiu sp,sp,-0x48
lw v0,-0x7fd0(gp)
lw t9,-0x7abc(gp)
sdc1 f20,0x38(sp)
mtc1 a3,f20
sw s5,0x30(sp)
sw s0,0x1c(sp)
or s0,a0,zero
sdc1 f22,0x40(sp)
sw s4,0x2c(sp)
or s4,a0,zero
sw s1,0x20(sp)
or a0,s0,zero
sw gp,0x10(sp)
sw ra,0x34(sp)
sw s3,0x28(sp)
mthc1 a2,f20
sw s2,0x24(sp)
lw s5,-0x7f54(gp)
jalr t9
_ldc1 f22,0x13f8(v0)
addiu s5,s5,-0x7a6c
beq v0,zero,0x0011a49c
_or s1,v0,zero
mfc1 a3,f20
or a0,v0,zero
or t9,s5,zero
bal 0x00118594
_mfhc1 a2,f20
lw v0,0x4(s4)
lw v1,0x4(s1)
bne v0,v1,0x0011a478
_lw gp,0x10(sp)
b 0x0011a4c8
_lw v1,0x8(s4)
or s0,v1,zero
lw v1,0x40(s0)
bne v1,zero,0x0011a474
_lw t9,-0x7abc(gp)
sw s1,0x40(s0)
or s0,s1,zero
jalr t9
_or a0,s0,zero
bne v0,zero,0x0011a448
_or s1,v0,zero
lw ra,0x34(sp)
lw s5,0x30(sp)
lw s4,0x2c(sp)
lw s3,0x28(sp)
lw s2,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
ldc1 f22,0x40(sp)
ldc1 f20,0x38(sp)
jr ra
_addiu sp,sp,0x48
lw a0,0x8(s1)
bne v1,a0,0x0011a478
_nop
lw a1,0xc(s4)
lw a0,0xc(s1)
bne a1,a0,0x0011a478
_nop
lw a1,0x10(s4)
lw a0,0x10(s1)
bne a1,a0,0x0011a478
_mul v0,v0,v1
beq v0,zero,0x0011a570
_or a3,zero,zero
lw a2,0x14(s4)
b 0x0011a53c
_lw v1,0x14(s1)
bc1t 0x3,0x0011a478
_nop
sub.D D f0,f0,f2
mfc1 a1,f0
mfhc1 a0,f0
mtc1 a1,f0
ext s2,a0,0x0,0x1f
mthc1 s2,f0
c.le.D f22,f0
bc1t 0x2,0x0011a478
_nop
beq a3,v0,0x0011a570
_nop
ldc1 f0,0x0(a2)
addiu a3,a3,0x1
addiu a2,a2,0x8
ldc1 f2,0x0(v1)
addiu v1,v1,0x8
c.un.D f0,f0
bc1f 0x0011a508
_c.un.D f2,f2
c.un.D f2,f2
bc1t 0x1,0x0011a510
_nop
b 0x0011a47c
_lw v1,0x40(s0)
ldc1 f22,0x40(sp)
or a0,s1,zero
lw ra,0x34(sp)
ldc1 f20,0x38(sp)
lw s5,0x30(sp)
lw s4,0x2c(sp)
lw s3,0x28(sp)
lw s2,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
lw t9,-0x7208(gp)
jr t9
_addiu sp,sp,0x48
(translation_unit "void FUN_0011a3dc(int param_1)\n\n{\n  int iVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  double *pdVar5;\n  double *pdVar6;\n  int iVar7;\n  int iVar8;\n  double dVar9;\n  double dVar10;\n  double dVar11;\n  \n  dVar11 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n  iVar3 = (*(code *)PTR_CloneKernelInfo_003a8df4)(param_1);\n  iVar8 = param_1;\n  while( true ) {\n    iVar1 = iVar3;\n    if (iVar1 == 0) {\n      return;\n    }\n    FUN_00118594(iVar1);\n    puVar2 = PTR_CloneKernelInfo_003a8df4;\n    iVar3 = iVar8;\n    if ((((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&\n        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))) &&\n       (iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),\n       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10))) break;\nLAB_0011a478:\n    do {\n      iVar4 = *(int *)(iVar3 + 0x40);\n      iVar8 = iVar3;\nLAB_0011a47c:\n      iVar3 = iVar4;\n    } while (iVar4 != 0);\n    *(int *)(iVar8 + 0x40) = iVar1;\n    iVar3 = (*(code *)puVar2)(iVar1);\n    iVar8 = iVar1;\n  }\n  iVar7 = 0;\n  if (iVar4 == 0) {\nLAB_0011a570:\n    (*(code *)PTR_DestroyKernelInfo_003a96a8)(iVar1);\n    return;\n  }\n  pdVar6 = *(double **)(param_1 + 0x14);\n  pdVar5 = *(double **)(iVar1 + 0x14);\n  do {\n    dVar9 = *pdVar6;\n    iVar7 = iVar7 + 1;\n    pdVar6 = pdVar6 + 1;\n    dVar10 = *pdVar5;\n    pdVar5 = pdVar5 + 1;\n    if (NAN(dVar9)) {\n      if (!NAN(dVar10)) {\n        iVar4 = *(int *)(iVar8 + 0x40);\n        goto LAB_0011a47c;\n      }\n    }\n    else if (NAN(dVar10)) goto LAB_0011a478;\n    if (dVar11 <= ABS(dVar9 - dVar10)) goto LAB_0011a478;\n    if (iVar7 == iVar4) goto LAB_0011a570;\n  } while( true );\n}\n\n" (function_definition "void FUN_0011a3dc(int param_1)\n\n{\n  int iVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  double *pdVar5;\n  double *pdVar6;\n  int iVar7;\n  int iVar8;\n  double dVar9;\n  double dVar10;\n  double dVar11;\n  \n  dVar11 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n  iVar3 = (*(code *)PTR_CloneKernelInfo_003a8df4)(param_1);\n  iVar8 = param_1;\n  while( true ) {\n    iVar1 = iVar3;\n    if (iVar1 == 0) {\n      return;\n    }\n    FUN_00118594(iVar1);\n    puVar2 = PTR_CloneKernelInfo_003a8df4;\n    iVar3 = iVar8;\n    if ((((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&\n        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))) &&\n       (iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),\n       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10))) break;\nLAB_0011a478:\n    do {\n      iVar4 = *(int *)(iVar3 + 0x40);\n      iVar8 = iVar3;\nLAB_0011a47c:\n      iVar3 = iVar4;\n    } while (iVar4 != 0);\n    *(int *)(iVar8 + 0x40) = iVar1;\n    iVar3 = (*(code *)puVar2)(iVar1);\n    iVar8 = iVar1;\n  }\n  iVar7 = 0;\n  if (iVar4 == 0) {\nLAB_0011a570:\n    (*(code *)PTR_DestroyKernelInfo_003a96a8)(iVar1);\n    return;\n  }\n  pdVar6 = *(double **)(param_1 + 0x14);\n  pdVar5 = *(double **)(iVar1 + 0x14);\n  do {\n    dVar9 = *pdVar6;\n    iVar7 = iVar7 + 1;\n    pdVar6 = pdVar6 + 1;\n    dVar10 = *pdVar5;\n    pdVar5 = pdVar5 + 1;\n    if (NAN(dVar9)) {\n      if (!NAN(dVar10)) {\n        iVar4 = *(int *)(iVar8 + 0x40);\n        goto LAB_0011a47c;\n      }\n    }\n    else if (NAN(dVar10)) goto LAB_0011a478;\n    if (dVar11 <= ABS(dVar9 - dVar10)) goto LAB_0011a478;\n    if (iVar7 == iVar4) goto LAB_0011a570;\n  } while( true );\n}" primitive_type (function_declarator "FUN_0011a3dc(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  double *pdVar5;\n  double *pdVar6;\n  int iVar7;\n  int iVar8;\n  double dVar9;\n  double dVar10;\n  double dVar11;\n  \n  dVar11 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n  iVar3 = (*(code *)PTR_CloneKernelInfo_003a8df4)(param_1);\n  iVar8 = param_1;\n  while( true ) {\n    iVar1 = iVar3;\n    if (iVar1 == 0) {\n      return;\n    }\n    FUN_00118594(iVar1);\n    puVar2 = PTR_CloneKernelInfo_003a8df4;\n    iVar3 = iVar8;\n    if ((((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&\n        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))) &&\n       (iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),\n       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10))) break;\nLAB_0011a478:\n    do {\n      iVar4 = *(int *)(iVar3 + 0x40);\n      iVar8 = iVar3;\nLAB_0011a47c:\n      iVar3 = iVar4;\n    } while (iVar4 != 0);\n    *(int *)(iVar8 + 0x40) = iVar1;\n    iVar3 = (*(code *)puVar2)(iVar1);\n    iVar8 = iVar1;\n  }\n  iVar7 = 0;\n  if (iVar4 == 0) {\nLAB_0011a570:\n    (*(code *)PTR_DestroyKernelInfo_003a96a8)(iVar1);\n    return;\n  }\n  pdVar6 = *(double **)(param_1 + 0x14);\n  pdVar5 = *(double **)(iVar1 + 0x14);\n  do {\n    dVar9 = *pdVar6;\n    iVar7 = iVar7 + 1;\n    pdVar6 = pdVar6 + 1;\n    dVar10 = *pdVar5;\n    pdVar5 = pdVar5 + 1;\n    if (NAN(dVar9)) {\n      if (!NAN(dVar10)) {\n        iVar4 = *(int *)(iVar8 + 0x40);\n        goto LAB_0011a47c;\n      }\n    }\n    else if (NAN(dVar10)) goto LAB_0011a478;\n    if (dVar11 <= ABS(dVar9 - dVar10)) goto LAB_0011a478;\n    if (iVar7 == iVar4) goto LAB_0011a570;\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "double *pdVar5;" primitive_type (pointer_declarator "*pdVar5" * identifier) ;) (declaration "double *pdVar6;" primitive_type (pointer_declarator "*pdVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "double dVar9;" primitive_type identifier ;) (declaration "double dVar10;" primitive_type identifier ;) (declaration "double dVar11;" primitive_type identifier ;) (expression_statement "dVar11 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);" (assignment_expression "dVar11 = *(double *)(PTR_LAB_003a88e0 + 0x13f8)" identifier = (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x13f8)" * (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x13f8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_003a88e0 + 0x13f8)" ( (binary_expression "PTR_LAB_003a88e0 + 0x13f8" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = (*(code *)PTR_CloneKernelInfo_003a8df4)(param_1);" (assignment_expression "iVar3 = (*(code *)PTR_CloneKernelInfo_003a8df4)(param_1)" identifier = (call_expression "(*(code *)PTR_CloneKernelInfo_003a8df4)(param_1)" (parenthesized_expression "(*(code *)PTR_CloneKernelInfo_003a8df4)" ( (pointer_expression "*(code *)PTR_CloneKernelInfo_003a8df4" * (cast_expression "(code *)PTR_CloneKernelInfo_003a8df4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "iVar8 = param_1;" (assignment_expression "iVar8 = param_1" identifier = identifier) ;) (while_statement "while( true ) {\n    iVar1 = iVar3;\n    if (iVar1 == 0) {\n      return;\n    }\n    FUN_00118594(iVar1);\n    puVar2 = PTR_CloneKernelInfo_003a8df4;\n    iVar3 = iVar8;\n    if ((((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&\n        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))) &&\n       (iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),\n       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10))) break;\nLAB_0011a478:\n    do {\n      iVar4 = *(int *)(iVar3 + 0x40);\n      iVar8 = iVar3;\nLAB_0011a47c:\n      iVar3 = iVar4;\n    } while (iVar4 != 0);\n    *(int *)(iVar8 + 0x40) = iVar1;\n    iVar3 = (*(code *)puVar2)(iVar1);\n    iVar8 = iVar1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar1 = iVar3;\n    if (iVar1 == 0) {\n      return;\n    }\n    FUN_00118594(iVar1);\n    puVar2 = PTR_CloneKernelInfo_003a8df4;\n    iVar3 = iVar8;\n    if ((((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&\n        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))) &&\n       (iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),\n       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10))) break;\nLAB_0011a478:\n    do {\n      iVar4 = *(int *)(iVar3 + 0x40);\n      iVar8 = iVar3;\nLAB_0011a47c:\n      iVar3 = iVar4;\n    } while (iVar4 != 0);\n    *(int *)(iVar8 + 0x40) = iVar1;\n    iVar3 = (*(code *)puVar2)(iVar1);\n    iVar8 = iVar1;\n  }" { (expression_statement "iVar1 = iVar3;" (assignment_expression "iVar1 = iVar3" identifier = identifier) ;) (if_statement "if (iVar1 == 0) {\n      return;\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "FUN_00118594(iVar1);" (call_expression "FUN_00118594(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) (expression_statement "puVar2 = PTR_CloneKernelInfo_003a8df4;" (assignment_expression "puVar2 = PTR_CloneKernelInfo_003a8df4" identifier = identifier) ;) (expression_statement "iVar3 = iVar8;" (assignment_expression "iVar3 = iVar8" identifier = identifier) ;) (if_statement "if ((((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&\n        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))) &&\n       (iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),\n       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10))) break;" if (parenthesized_expression "((((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&\n        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))) &&\n       (iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),\n       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10)))" ( (binary_expression "(((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&\n        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))) &&\n       (iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),\n       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10))" (parenthesized_expression "(((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&\n        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc)))" ( (binary_expression "((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&\n        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))" (parenthesized_expression "((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8)))" ( (binary_expression "(*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))" (parenthesized_expression "(*(int *)(param_1 + 4) == *(int *)(iVar1 + 4))" ( (binary_expression "*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) == (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) ))))) )) && (parenthesized_expression "(*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))" ( (binary_expression "*(int *)(param_1 + 8) == *(int *)(iVar1 + 8)" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) == (pointer_expression "*(int *)(iVar1 + 8)" * (cast_expression "(int *)(iVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) ))))) ))) )) && (parenthesized_expression "(*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))" ( (binary_expression "*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc)" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) == (pointer_expression "*(int *)(iVar1 + 0xc)" * (cast_expression "(int *)(iVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) ))))) ))) )) && (parenthesized_expression "(iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),\n       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10))" ( (comma_expression "iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),\n       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10)" (assignment_expression "iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8)" identifier = (binary_expression "*(int *)(param_1 + 4) * *(int *)(param_1 + 8)" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) * (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))))) , (binary_expression "*(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10)" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) == (pointer_expression "*(int *)(iVar1 + 0x10)" * (cast_expression "(int *)(iVar1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) )))))) ))) )) (break_statement "break;" break ;)) (labeled_statement "LAB_0011a478:\n    do {\n      iVar4 = *(int *)(iVar3 + 0x40);\n      iVar8 = iVar3;\nLAB_0011a47c:\n      iVar3 = iVar4;\n    } while (iVar4 != 0);" statement_identifier : (do_statement "do {\n      iVar4 = *(int *)(iVar3 + 0x40);\n      iVar8 = iVar3;\nLAB_0011a47c:\n      iVar3 = iVar4;\n    } while (iVar4 != 0);" do (compound_statement "{\n      iVar4 = *(int *)(iVar3 + 0x40);\n      iVar8 = iVar3;\nLAB_0011a47c:\n      iVar3 = iVar4;\n    }" { (expression_statement "iVar4 = *(int *)(iVar3 + 0x40);" (assignment_expression "iVar4 = *(int *)(iVar3 + 0x40)" identifier = (pointer_expression "*(int *)(iVar3 + 0x40)" * (cast_expression "(int *)(iVar3 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x40)" ( (binary_expression "iVar3 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = iVar3;" (assignment_expression "iVar8 = iVar3" identifier = identifier) ;) (labeled_statement "LAB_0011a47c:\n      iVar3 = iVar4;" statement_identifier : (expression_statement "iVar3 = iVar4;" (assignment_expression "iVar3 = iVar4" identifier = identifier) ;)) }) while (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) ;)) (expression_statement "*(int *)(iVar8 + 0x40) = iVar1;" (assignment_expression "*(int *)(iVar8 + 0x40) = iVar1" (pointer_expression "*(int *)(iVar8 + 0x40)" * (cast_expression "(int *)(iVar8 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x40)" ( (binary_expression "iVar8 + 0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar3 = (*(code *)puVar2)(iVar1);" (assignment_expression "iVar3 = (*(code *)puVar2)(iVar1)" identifier = (call_expression "(*(code *)puVar2)(iVar1)" (parenthesized_expression "(*(code *)puVar2)" ( (pointer_expression "*(code *)puVar2" * (cast_expression "(code *)puVar2" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar1)" ( identifier )))) ;) (expression_statement "iVar8 = iVar1;" (assignment_expression "iVar8 = iVar1" identifier = identifier) ;) })) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (if_statement "if (iVar4 == 0) {\nLAB_0011a570:\n    (*(code *)PTR_DestroyKernelInfo_003a96a8)(iVar1);\n    return;\n  }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0011a570:\n    (*(code *)PTR_DestroyKernelInfo_003a96a8)(iVar1);\n    return;\n  }" { (labeled_statement "LAB_0011a570:\n    (*(code *)PTR_DestroyKernelInfo_003a96a8)(iVar1);" statement_identifier : (expression_statement "(*(code *)PTR_DestroyKernelInfo_003a96a8)(iVar1);" (call_expression "(*(code *)PTR_DestroyKernelInfo_003a96a8)(iVar1)" (parenthesized_expression "(*(code *)PTR_DestroyKernelInfo_003a96a8)" ( (pointer_expression "*(code *)PTR_DestroyKernelInfo_003a96a8" * (cast_expression "(code *)PTR_DestroyKernelInfo_003a96a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar1)" ( identifier ))) ;)) (return_statement "return;" return ;) })) (expression_statement "pdVar6 = *(double **)(param_1 + 0x14);" (assignment_expression "pdVar6 = *(double **)(param_1 + 0x14)" identifier = (pointer_expression "*(double **)(param_1 + 0x14)" * (cast_expression "(double **)(param_1 + 0x14)" ( (type_descriptor "double **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "pdVar5 = *(double **)(iVar1 + 0x14);" (assignment_expression "pdVar5 = *(double **)(iVar1 + 0x14)" identifier = (pointer_expression "*(double **)(iVar1 + 0x14)" * (cast_expression "(double **)(iVar1 + 0x14)" ( (type_descriptor "double **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) ))))) ;) (do_statement "do {\n    dVar9 = *pdVar6;\n    iVar7 = iVar7 + 1;\n    pdVar6 = pdVar6 + 1;\n    dVar10 = *pdVar5;\n    pdVar5 = pdVar5 + 1;\n    if (NAN(dVar9)) {\n      if (!NAN(dVar10)) {\n        iVar4 = *(int *)(iVar8 + 0x40);\n        goto LAB_0011a47c;\n      }\n    }\n    else if (NAN(dVar10)) goto LAB_0011a478;\n    if (dVar11 <= ABS(dVar9 - dVar10)) goto LAB_0011a478;\n    if (iVar7 == iVar4) goto LAB_0011a570;\n  } while( true );" do (compound_statement "{\n    dVar9 = *pdVar6;\n    iVar7 = iVar7 + 1;\n    pdVar6 = pdVar6 + 1;\n    dVar10 = *pdVar5;\n    pdVar5 = pdVar5 + 1;\n    if (NAN(dVar9)) {\n      if (!NAN(dVar10)) {\n        iVar4 = *(int *)(iVar8 + 0x40);\n        goto LAB_0011a47c;\n      }\n    }\n    else if (NAN(dVar10)) goto LAB_0011a478;\n    if (dVar11 <= ABS(dVar9 - dVar10)) goto LAB_0011a478;\n    if (iVar7 == iVar4) goto LAB_0011a570;\n  }" { (expression_statement "dVar9 = *pdVar6;" (assignment_expression "dVar9 = *pdVar6" identifier = (pointer_expression "*pdVar6" * identifier)) ;) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "pdVar6 = pdVar6 + 1;" (assignment_expression "pdVar6 = pdVar6 + 1" identifier = (binary_expression "pdVar6 + 1" identifier + number_literal)) ;) (expression_statement "dVar10 = *pdVar5;" (assignment_expression "dVar10 = *pdVar5" identifier = (pointer_expression "*pdVar5" * identifier)) ;) (expression_statement "pdVar5 = pdVar5 + 1;" (assignment_expression "pdVar5 = pdVar5 + 1" identifier = (binary_expression "pdVar5 + 1" identifier + number_literal)) ;) (if_statement "if (NAN(dVar9)) {\n      if (!NAN(dVar10)) {\n        iVar4 = *(int *)(iVar8 + 0x40);\n        goto LAB_0011a47c;\n      }\n    }\n    else if (NAN(dVar10)) goto LAB_0011a478;" if (parenthesized_expression "(NAN(dVar9))" ( (call_expression "NAN(dVar9)" identifier (argument_list "(dVar9)" ( identifier ))) )) (compound_statement "{\n      if (!NAN(dVar10)) {\n        iVar4 = *(int *)(iVar8 + 0x40);\n        goto LAB_0011a47c;\n      }\n    }" { (if_statement "if (!NAN(dVar10)) {\n        iVar4 = *(int *)(iVar8 + 0x40);\n        goto LAB_0011a47c;\n      }" if (parenthesized_expression "(!NAN(dVar10))" ( (unary_expression "!NAN(dVar10)" ! (call_expression "NAN(dVar10)" identifier (argument_list "(dVar10)" ( identifier )))) )) (compound_statement "{\n        iVar4 = *(int *)(iVar8 + 0x40);\n        goto LAB_0011a47c;\n      }" { (expression_statement "iVar4 = *(int *)(iVar8 + 0x40);" (assignment_expression "iVar4 = *(int *)(iVar8 + 0x40)" identifier = (pointer_expression "*(int *)(iVar8 + 0x40)" * (cast_expression "(int *)(iVar8 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x40)" ( (binary_expression "iVar8 + 0x40" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0011a47c;" goto statement_identifier ;) })) }) (else_clause "else if (NAN(dVar10)) goto LAB_0011a478;" else (if_statement "if (NAN(dVar10)) goto LAB_0011a478;" if (parenthesized_expression "(NAN(dVar10))" ( (call_expression "NAN(dVar10)" identifier (argument_list "(dVar10)" ( identifier ))) )) (goto_statement "goto LAB_0011a478;" goto statement_identifier ;)))) (if_statement "if (dVar11 <= ABS(dVar9 - dVar10)) goto LAB_0011a478;" if (parenthesized_expression "(dVar11 <= ABS(dVar9 - dVar10))" ( (binary_expression "dVar11 <= ABS(dVar9 - dVar10)" identifier <= (call_expression "ABS(dVar9 - dVar10)" identifier (argument_list "(dVar9 - dVar10)" ( (binary_expression "dVar9 - dVar10" identifier - identifier) )))) )) (goto_statement "goto LAB_0011a478;" goto statement_identifier ;)) (if_statement "if (iVar7 == iVar4) goto LAB_0011a570;" if (parenthesized_expression "(iVar7 == iVar4)" ( (binary_expression "iVar7 == iVar4" identifier == identifier) )) (goto_statement "goto LAB_0011a570;" goto statement_identifier ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "void ExpandRotateKernelInfo(KernelInfo *kernel,double angle)\n\n{\n  undefined *puVar1;\n  KernelInfo *kernel_00;\n  KernelInfo *pKVar2;\n  int iVar3;\n  _KernelInfo *p_Var4;\n  MagickRealType *pMVar5;\n  MagickRealType *pMVar6;\n  int iVar7;\n  KernelInfo *pKVar8;\n  double dVar9;\n  double dVar10;\n  double dVar11;\n  \n  dVar11 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n  kernel_00 = (KernelInfo *)(*(code *)PTR_CloneKernelInfo_003a8df4)(kernel);\n  pKVar8 = kernel;\n  while( true ) {\n    if (kernel_00 == (KernelInfo *)0x0) {\n      return;\n    }\n    RotateKernelInfo(kernel_00,angle);\n    puVar1 = PTR_CloneKernelInfo_003a8df4;\n    pKVar2 = pKVar8;\n    if ((((kernel->width == kernel_00->width) && (kernel->height == kernel_00->height)) &&\n        (kernel->x == kernel_00->x)) &&\n       (iVar3 = kernel->width * kernel->height, kernel->y == kernel_00->y)) break;\nLAB_0011a478:\n    do {\n      p_Var4 = pKVar2->next;\n      pKVar8 = pKVar2;\nLAB_0011a47c:\n      pKVar2 = p_Var4;\n    } while (p_Var4 != (_KernelInfo *)0x0);\n    pKVar8->next = kernel_00;\n    pKVar2 = (KernelInfo *)(*(code *)puVar1)(kernel_00);\n    pKVar8 = kernel_00;\n    kernel_00 = pKVar2;\n  }\n  iVar7 = 0;\n  if (iVar3 == 0) {\nLAB_0011a570:\n    (*(code *)PTR_DestroyKernelInfo_003a96a8)(kernel_00);\n    return;\n  }\n  pMVar6 = kernel->values;\n  pMVar5 = kernel_00->values;\n  do {\n    dVar9 = *pMVar6;\n    iVar7 = iVar7 + 1;\n    pMVar6 = pMVar6 + 1;\n    dVar10 = *pMVar5;\n    pMVar5 = pMVar5 + 1;\n    if (NAN(dVar9)) {\n      if (!NAN(dVar10)) {\n        p_Var4 = pKVar8->next;\n        goto LAB_0011a47c;\n      }\n    }\n    else if (NAN(dVar10)) goto LAB_0011a478;\n    if (dVar11 <= ABS(dVar9 - dVar10)) goto LAB_0011a478;\n    if (iVar7 == iVar3) goto LAB_0011a570;\n  } while( true );\n}\n\n" (function_definition "void ExpandRotateKernelInfo(KernelInfo *kernel,double angle)\n\n{\n  undefined *puVar1;\n  KernelInfo *kernel_00;\n  KernelInfo *pKVar2;\n  int iVar3;\n  _KernelInfo *p_Var4;\n  MagickRealType *pMVar5;\n  MagickRealType *pMVar6;\n  int iVar7;\n  KernelInfo *pKVar8;\n  double dVar9;\n  double dVar10;\n  double dVar11;\n  \n  dVar11 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n  kernel_00 = (KernelInfo *)(*(code *)PTR_CloneKernelInfo_003a8df4)(kernel);\n  pKVar8 = kernel;\n  while( true ) {\n    if (kernel_00 == (KernelInfo *)0x0) {\n      return;\n    }\n    RotateKernelInfo(kernel_00,angle);\n    puVar1 = PTR_CloneKernelInfo_003a8df4;\n    pKVar2 = pKVar8;\n    if ((((kernel->width == kernel_00->width) && (kernel->height == kernel_00->height)) &&\n        (kernel->x == kernel_00->x)) &&\n       (iVar3 = kernel->width * kernel->height, kernel->y == kernel_00->y)) break;\nLAB_0011a478:\n    do {\n      p_Var4 = pKVar2->next;\n      pKVar8 = pKVar2;\nLAB_0011a47c:\n      pKVar2 = p_Var4;\n    } while (p_Var4 != (_KernelInfo *)0x0);\n    pKVar8->next = kernel_00;\n    pKVar2 = (KernelInfo *)(*(code *)puVar1)(kernel_00);\n    pKVar8 = kernel_00;\n    kernel_00 = pKVar2;\n  }\n  iVar7 = 0;\n  if (iVar3 == 0) {\nLAB_0011a570:\n    (*(code *)PTR_DestroyKernelInfo_003a96a8)(kernel_00);\n    return;\n  }\n  pMVar6 = kernel->values;\n  pMVar5 = kernel_00->values;\n  do {\n    dVar9 = *pMVar6;\n    iVar7 = iVar7 + 1;\n    pMVar6 = pMVar6 + 1;\n    dVar10 = *pMVar5;\n    pMVar5 = pMVar5 + 1;\n    if (NAN(dVar9)) {\n      if (!NAN(dVar10)) {\n        p_Var4 = pKVar8->next;\n        goto LAB_0011a47c;\n      }\n    }\n    else if (NAN(dVar10)) goto LAB_0011a478;\n    if (dVar11 <= ABS(dVar9 - dVar10)) goto LAB_0011a478;\n    if (iVar7 == iVar3) goto LAB_0011a570;\n  } while( true );\n}" primitive_type (function_declarator "ExpandRotateKernelInfo(KernelInfo *kernel,double angle)" identifier (parameter_list "(KernelInfo *kernel,double angle)" ( (parameter_declaration "KernelInfo *kernel" type_identifier (pointer_declarator "*kernel" * identifier)) , (parameter_declaration "double angle" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  KernelInfo *kernel_00;\n  KernelInfo *pKVar2;\n  int iVar3;\n  _KernelInfo *p_Var4;\n  MagickRealType *pMVar5;\n  MagickRealType *pMVar6;\n  int iVar7;\n  KernelInfo *pKVar8;\n  double dVar9;\n  double dVar10;\n  double dVar11;\n  \n  dVar11 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n  kernel_00 = (KernelInfo *)(*(code *)PTR_CloneKernelInfo_003a8df4)(kernel);\n  pKVar8 = kernel;\n  while( true ) {\n    if (kernel_00 == (KernelInfo *)0x0) {\n      return;\n    }\n    RotateKernelInfo(kernel_00,angle);\n    puVar1 = PTR_CloneKernelInfo_003a8df4;\n    pKVar2 = pKVar8;\n    if ((((kernel->width == kernel_00->width) && (kernel->height == kernel_00->height)) &&\n        (kernel->x == kernel_00->x)) &&\n       (iVar3 = kernel->width * kernel->height, kernel->y == kernel_00->y)) break;\nLAB_0011a478:\n    do {\n      p_Var4 = pKVar2->next;\n      pKVar8 = pKVar2;\nLAB_0011a47c:\n      pKVar2 = p_Var4;\n    } while (p_Var4 != (_KernelInfo *)0x0);\n    pKVar8->next = kernel_00;\n    pKVar2 = (KernelInfo *)(*(code *)puVar1)(kernel_00);\n    pKVar8 = kernel_00;\n    kernel_00 = pKVar2;\n  }\n  iVar7 = 0;\n  if (iVar3 == 0) {\nLAB_0011a570:\n    (*(code *)PTR_DestroyKernelInfo_003a96a8)(kernel_00);\n    return;\n  }\n  pMVar6 = kernel->values;\n  pMVar5 = kernel_00->values;\n  do {\n    dVar9 = *pMVar6;\n    iVar7 = iVar7 + 1;\n    pMVar6 = pMVar6 + 1;\n    dVar10 = *pMVar5;\n    pMVar5 = pMVar5 + 1;\n    if (NAN(dVar9)) {\n      if (!NAN(dVar10)) {\n        p_Var4 = pKVar8->next;\n        goto LAB_0011a47c;\n      }\n    }\n    else if (NAN(dVar10)) goto LAB_0011a478;\n    if (dVar11 <= ABS(dVar9 - dVar10)) goto LAB_0011a478;\n    if (iVar7 == iVar3) goto LAB_0011a570;\n  } while( true );\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "KernelInfo *kernel_00;" type_identifier (pointer_declarator "*kernel_00" * identifier) ;) (declaration "KernelInfo *pKVar2;" type_identifier (pointer_declarator "*pKVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "_KernelInfo *p_Var4;" type_identifier (pointer_declarator "*p_Var4" * identifier) ;) (declaration "MagickRealType *pMVar5;" type_identifier (pointer_declarator "*pMVar5" * identifier) ;) (declaration "MagickRealType *pMVar6;" type_identifier (pointer_declarator "*pMVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "KernelInfo *pKVar8;" type_identifier (pointer_declarator "*pKVar8" * identifier) ;) (declaration "double dVar9;" primitive_type identifier ;) (declaration "double dVar10;" primitive_type identifier ;) (declaration "double dVar11;" primitive_type identifier ;) (expression_statement "dVar11 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);" (assignment_expression "dVar11 = *(double *)(PTR_LAB_003a88e0 + 0x13f8)" identifier = (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x13f8)" * (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x13f8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_003a88e0 + 0x13f8)" ( (binary_expression "PTR_LAB_003a88e0 + 0x13f8" identifier + number_literal) ))))) ;) (expression_statement "kernel_00 = (KernelInfo *)(*(code *)PTR_CloneKernelInfo_003a8df4)(kernel);" (assignment_expression "kernel_00 = (KernelInfo *)(*(code *)PTR_CloneKernelInfo_003a8df4)(kernel)" identifier = (cast_expression "(KernelInfo *)(*(code *)PTR_CloneKernelInfo_003a8df4)(kernel)" ( (type_descriptor "KernelInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_CloneKernelInfo_003a8df4)(kernel)" (parenthesized_expression "(*(code *)PTR_CloneKernelInfo_003a8df4)" ( (pointer_expression "*(code *)PTR_CloneKernelInfo_003a8df4" * (cast_expression "(code *)PTR_CloneKernelInfo_003a8df4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(kernel)" ( identifier ))))) ;) (expression_statement "pKVar8 = kernel;" (assignment_expression "pKVar8 = kernel" identifier = identifier) ;) (while_statement "while( true ) {\n    if (kernel_00 == (KernelInfo *)0x0) {\n      return;\n    }\n    RotateKernelInfo(kernel_00,angle);\n    puVar1 = PTR_CloneKernelInfo_003a8df4;\n    pKVar2 = pKVar8;\n    if ((((kernel->width == kernel_00->width) && (kernel->height == kernel_00->height)) &&\n        (kernel->x == kernel_00->x)) &&\n       (iVar3 = kernel->width * kernel->height, kernel->y == kernel_00->y)) break;\nLAB_0011a478:\n    do {\n      p_Var4 = pKVar2->next;\n      pKVar8 = pKVar2;\nLAB_0011a47c:\n      pKVar2 = p_Var4;\n    } while (p_Var4 != (_KernelInfo *)0x0);\n    pKVar8->next = kernel_00;\n    pKVar2 = (KernelInfo *)(*(code *)puVar1)(kernel_00);\n    pKVar8 = kernel_00;\n    kernel_00 = pKVar2;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (kernel_00 == (KernelInfo *)0x0) {\n      return;\n    }\n    RotateKernelInfo(kernel_00,angle);\n    puVar1 = PTR_CloneKernelInfo_003a8df4;\n    pKVar2 = pKVar8;\n    if ((((kernel->width == kernel_00->width) && (kernel->height == kernel_00->height)) &&\n        (kernel->x == kernel_00->x)) &&\n       (iVar3 = kernel->width * kernel->height, kernel->y == kernel_00->y)) break;\nLAB_0011a478:\n    do {\n      p_Var4 = pKVar2->next;\n      pKVar8 = pKVar2;\nLAB_0011a47c:\n      pKVar2 = p_Var4;\n    } while (p_Var4 != (_KernelInfo *)0x0);\n    pKVar8->next = kernel_00;\n    pKVar2 = (KernelInfo *)(*(code *)puVar1)(kernel_00);\n    pKVar8 = kernel_00;\n    kernel_00 = pKVar2;\n  }" { (if_statement "if (kernel_00 == (KernelInfo *)0x0) {\n      return;\n    }" if (parenthesized_expression "(kernel_00 == (KernelInfo *)0x0)" ( (binary_expression "kernel_00 == (KernelInfo *)0x0" identifier == (cast_expression "(KernelInfo *)0x0" ( (type_descriptor "KernelInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "RotateKernelInfo(kernel_00,angle);" (call_expression "RotateKernelInfo(kernel_00,angle)" identifier (argument_list "(kernel_00,angle)" ( identifier , identifier ))) ;) (expression_statement "puVar1 = PTR_CloneKernelInfo_003a8df4;" (assignment_expression "puVar1 = PTR_CloneKernelInfo_003a8df4" identifier = identifier) ;) (expression_statement "pKVar2 = pKVar8;" (assignment_expression "pKVar2 = pKVar8" identifier = identifier) ;) (if_statement "if ((((kernel->width == kernel_00->width) && (kernel->height == kernel_00->height)) &&\n        (kernel->x == kernel_00->x)) &&\n       (iVar3 = kernel->width * kernel->height, kernel->y == kernel_00->y)) break;" if (parenthesized_expression "((((kernel->width == kernel_00->width) && (kernel->height == kernel_00->height)) &&\n        (kernel->x == kernel_00->x)) &&\n       (iVar3 = kernel->width * kernel->height, kernel->y == kernel_00->y))" ( (binary_expression "(((kernel->width == kernel_00->width) && (kernel->height == kernel_00->height)) &&\n        (kernel->x == kernel_00->x)) &&\n       (iVar3 = kernel->width * kernel->height, kernel->y == kernel_00->y)" (parenthesized_expression "(((kernel->width == kernel_00->width) && (kernel->height == kernel_00->height)) &&\n        (kernel->x == kernel_00->x))" ( (binary_expression "((kernel->width == kernel_00->width) && (kernel->height == kernel_00->height)) &&\n        (kernel->x == kernel_00->x)" (parenthesized_expression "((kernel->width == kernel_00->width) && (kernel->height == kernel_00->height))" ( (binary_expression "(kernel->width == kernel_00->width) && (kernel->height == kernel_00->height)" (parenthesized_expression "(kernel->width == kernel_00->width)" ( (binary_expression "kernel->width == kernel_00->width" (field_expression "kernel->width" identifier -> field_identifier) == (field_expression "kernel_00->width" identifier -> field_identifier)) )) && (parenthesized_expression "(kernel->height == kernel_00->height)" ( (binary_expression "kernel->height == kernel_00->height" (field_expression "kernel->height" identifier -> field_identifier) == (field_expression "kernel_00->height" identifier -> field_identifier)) ))) )) && (parenthesized_expression "(kernel->x == kernel_00->x)" ( (binary_expression "kernel->x == kernel_00->x" (field_expression "kernel->x" identifier -> field_identifier) == (field_expression "kernel_00->x" identifier -> field_identifier)) ))) )) && (parenthesized_expression "(iVar3 = kernel->width * kernel->height, kernel->y == kernel_00->y)" ( (comma_expression "iVar3 = kernel->width * kernel->height, kernel->y == kernel_00->y" (assignment_expression "iVar3 = kernel->width * kernel->height" identifier = (binary_expression "kernel->width * kernel->height" (field_expression "kernel->width" identifier -> field_identifier) * (field_expression "kernel->height" identifier -> field_identifier))) , (binary_expression "kernel->y == kernel_00->y" (field_expression "kernel->y" identifier -> field_identifier) == (field_expression "kernel_00->y" identifier -> field_identifier))) ))) )) (break_statement "break;" break ;)) (labeled_statement "LAB_0011a478:\n    do {\n      p_Var4 = pKVar2->next;\n      pKVar8 = pKVar2;\nLAB_0011a47c:\n      pKVar2 = p_Var4;\n    } while (p_Var4 != (_KernelInfo *)0x0);" statement_identifier : (do_statement "do {\n      p_Var4 = pKVar2->next;\n      pKVar8 = pKVar2;\nLAB_0011a47c:\n      pKVar2 = p_Var4;\n    } while (p_Var4 != (_KernelInfo *)0x0);" do (compound_statement "{\n      p_Var4 = pKVar2->next;\n      pKVar8 = pKVar2;\nLAB_0011a47c:\n      pKVar2 = p_Var4;\n    }" { (expression_statement "p_Var4 = pKVar2->next;" (assignment_expression "p_Var4 = pKVar2->next" identifier = (field_expression "pKVar2->next" identifier -> field_identifier)) ;) (expression_statement "pKVar8 = pKVar2;" (assignment_expression "pKVar8 = pKVar2" identifier = identifier) ;) (labeled_statement "LAB_0011a47c:\n      pKVar2 = p_Var4;" statement_identifier : (expression_statement "pKVar2 = p_Var4;" (assignment_expression "pKVar2 = p_Var4" identifier = identifier) ;)) }) while (parenthesized_expression "(p_Var4 != (_KernelInfo *)0x0)" ( (binary_expression "p_Var4 != (_KernelInfo *)0x0" identifier != (cast_expression "(_KernelInfo *)0x0" ( (type_descriptor "_KernelInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;)) (expression_statement "pKVar8->next = kernel_00;" (assignment_expression "pKVar8->next = kernel_00" (field_expression "pKVar8->next" identifier -> field_identifier) = identifier) ;) (expression_statement "pKVar2 = (KernelInfo *)(*(code *)puVar1)(kernel_00);" (assignment_expression "pKVar2 = (KernelInfo *)(*(code *)puVar1)(kernel_00)" identifier = (cast_expression "(KernelInfo *)(*(code *)puVar1)(kernel_00)" ( (type_descriptor "KernelInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)puVar1)(kernel_00)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(kernel_00)" ( identifier ))))) ;) (expression_statement "pKVar8 = kernel_00;" (assignment_expression "pKVar8 = kernel_00" identifier = identifier) ;) (expression_statement "kernel_00 = pKVar2;" (assignment_expression "kernel_00 = pKVar2" identifier = identifier) ;) })) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (if_statement "if (iVar3 == 0) {\nLAB_0011a570:\n    (*(code *)PTR_DestroyKernelInfo_003a96a8)(kernel_00);\n    return;\n  }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0011a570:\n    (*(code *)PTR_DestroyKernelInfo_003a96a8)(kernel_00);\n    return;\n  }" { (labeled_statement "LAB_0011a570:\n    (*(code *)PTR_DestroyKernelInfo_003a96a8)(kernel_00);" statement_identifier : (expression_statement "(*(code *)PTR_DestroyKernelInfo_003a96a8)(kernel_00);" (call_expression "(*(code *)PTR_DestroyKernelInfo_003a96a8)(kernel_00)" (parenthesized_expression "(*(code *)PTR_DestroyKernelInfo_003a96a8)" ( (pointer_expression "*(code *)PTR_DestroyKernelInfo_003a96a8" * (cast_expression "(code *)PTR_DestroyKernelInfo_003a96a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(kernel_00)" ( identifier ))) ;)) (return_statement "return;" return ;) })) (expression_statement "pMVar6 = kernel->values;" (assignment_expression "pMVar6 = kernel->values" identifier = (field_expression "kernel->values" identifier -> field_identifier)) ;) (expression_statement "pMVar5 = kernel_00->values;" (assignment_expression "pMVar5 = kernel_00->values" identifier = (field_expression "kernel_00->values" identifier -> field_identifier)) ;) (do_statement "do {\n    dVar9 = *pMVar6;\n    iVar7 = iVar7 + 1;\n    pMVar6 = pMVar6 + 1;\n    dVar10 = *pMVar5;\n    pMVar5 = pMVar5 + 1;\n    if (NAN(dVar9)) {\n      if (!NAN(dVar10)) {\n        p_Var4 = pKVar8->next;\n        goto LAB_0011a47c;\n      }\n    }\n    else if (NAN(dVar10)) goto LAB_0011a478;\n    if (dVar11 <= ABS(dVar9 - dVar10)) goto LAB_0011a478;\n    if (iVar7 == iVar3) goto LAB_0011a570;\n  } while( true );" do (compound_statement "{\n    dVar9 = *pMVar6;\n    iVar7 = iVar7 + 1;\n    pMVar6 = pMVar6 + 1;\n    dVar10 = *pMVar5;\n    pMVar5 = pMVar5 + 1;\n    if (NAN(dVar9)) {\n      if (!NAN(dVar10)) {\n        p_Var4 = pKVar8->next;\n        goto LAB_0011a47c;\n      }\n    }\n    else if (NAN(dVar10)) goto LAB_0011a478;\n    if (dVar11 <= ABS(dVar9 - dVar10)) goto LAB_0011a478;\n    if (iVar7 == iVar3) goto LAB_0011a570;\n  }" { (expression_statement "dVar9 = *pMVar6;" (assignment_expression "dVar9 = *pMVar6" identifier = (pointer_expression "*pMVar6" * identifier)) ;) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "pMVar6 = pMVar6 + 1;" (assignment_expression "pMVar6 = pMVar6 + 1" identifier = (binary_expression "pMVar6 + 1" identifier + number_literal)) ;) (expression_statement "dVar10 = *pMVar5;" (assignment_expression "dVar10 = *pMVar5" identifier = (pointer_expression "*pMVar5" * identifier)) ;) (expression_statement "pMVar5 = pMVar5 + 1;" (assignment_expression "pMVar5 = pMVar5 + 1" identifier = (binary_expression "pMVar5 + 1" identifier + number_literal)) ;) (if_statement "if (NAN(dVar9)) {\n      if (!NAN(dVar10)) {\n        p_Var4 = pKVar8->next;\n        goto LAB_0011a47c;\n      }\n    }\n    else if (NAN(dVar10)) goto LAB_0011a478;" if (parenthesized_expression "(NAN(dVar9))" ( (call_expression "NAN(dVar9)" identifier (argument_list "(dVar9)" ( identifier ))) )) (compound_statement "{\n      if (!NAN(dVar10)) {\n        p_Var4 = pKVar8->next;\n        goto LAB_0011a47c;\n      }\n    }" { (if_statement "if (!NAN(dVar10)) {\n        p_Var4 = pKVar8->next;\n        goto LAB_0011a47c;\n      }" if (parenthesized_expression "(!NAN(dVar10))" ( (unary_expression "!NAN(dVar10)" ! (call_expression "NAN(dVar10)" identifier (argument_list "(dVar10)" ( identifier )))) )) (compound_statement "{\n        p_Var4 = pKVar8->next;\n        goto LAB_0011a47c;\n      }" { (expression_statement "p_Var4 = pKVar8->next;" (assignment_expression "p_Var4 = pKVar8->next" identifier = (field_expression "pKVar8->next" identifier -> field_identifier)) ;) (goto_statement "goto LAB_0011a47c;" goto statement_identifier ;) })) }) (else_clause "else if (NAN(dVar10)) goto LAB_0011a478;" else (if_statement "if (NAN(dVar10)) goto LAB_0011a478;" if (parenthesized_expression "(NAN(dVar10))" ( (call_expression "NAN(dVar10)" identifier (argument_list "(dVar10)" ( identifier ))) )) (goto_statement "goto LAB_0011a478;" goto statement_identifier ;)))) (if_statement "if (dVar11 <= ABS(dVar9 - dVar10)) goto LAB_0011a478;" if (parenthesized_expression "(dVar11 <= ABS(dVar9 - dVar10))" ( (binary_expression "dVar11 <= ABS(dVar9 - dVar10)" identifier <= (call_expression "ABS(dVar9 - dVar10)" identifier (argument_list "(dVar9 - dVar10)" ( (binary_expression "dVar9 - dVar10" identifier - identifier) )))) )) (goto_statement "goto LAB_0011a478;" goto statement_identifier ;)) (if_statement "if (iVar7 == iVar3) goto LAB_0011a570;" if (parenthesized_expression "(iVar7 == iVar3)" ( (binary_expression "iVar7 == iVar3" identifier == identifier) )) (goto_statement "goto LAB_0011a570;" goto statement_identifier ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "void FUN_0011a3dc(int param_1)\n\n{\n  int iVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  double *pdVar5;\n  double *pdVar6;\n  int iVar7;\n  int iVar8;\n  double dVar9;\n  double dVar10;\n  double dVar11;\n  \n  dVar11 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n  iVar3 = (*(code *)PTR_CloneKernelInfo_003a8df4)(param_1);\n  iVar8 = param_1;\n  while( true ) {\n    iVar1 = iVar3;\n    if (iVar1 == 0) {\n      return;\n    }\n    FUN_00118594(iVar1);\n    puVar2 = PTR_CloneKernelInfo_003a8df4;\n    iVar3 = iVar8;\n    if ((((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&\n        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))) &&\n       (iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),\n       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10))) break;\nLAB_0011a478:\n    do {\n      iVar4 = *(int *)(iVar3 + 0x40);\n      iVar8 = iVar3;\nLAB_0011a47c:\n      iVar3 = iVar4;\n    } while (iVar4 != 0);\n    *(int *)(iVar8 + 0x40) = iVar1;\n    iVar3 = (*(code *)puVar2)(iVar1);\n    iVar8 = iVar1;\n  }\n  iVar7 = 0;\n  if (iVar4 == 0) {\nLAB_0011a570:\n    (*(code *)PTR_DestroyKernelInfo_003a96a8)(iVar1);\n    return;\n  }\n  pdVar6 = *(double **)(param_1 + 0x14);\n  pdVar5 = *(double **)(iVar1 + 0x14);\n  do {\n    dVar9 = *pdVar6;\n    iVar7 = iVar7 + 1;\n    pdVar6 = pdVar6 + 1;\n    dVar10 = *pdVar5;\n    pdVar5 = pdVar5 + 1;\n    if (NAN(dVar9)) {\n      if (!NAN(dVar10)) {\n        iVar4 = *(int *)(iVar8 + 0x40);\n        goto LAB_0011a47c;\n      }\n    }\n    else if (NAN(dVar10)) goto LAB_0011a478;\n    if (dVar11 <= ABS(dVar9 - dVar10)) goto LAB_0011a478;\n    if (iVar7 == iVar4) goto LAB_0011a570;\n  } while( true );\n}\n\n" (function_definition "void FUN_0011a3dc(int param_1)\n\n{\n  int iVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  double *pdVar5;\n  double *pdVar6;\n  int iVar7;\n  int iVar8;\n  double dVar9;\n  double dVar10;\n  double dVar11;\n  \n  dVar11 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n  iVar3 = (*(code *)PTR_CloneKernelInfo_003a8df4)(param_1);\n  iVar8 = param_1;\n  while( true ) {\n    iVar1 = iVar3;\n    if (iVar1 == 0) {\n      return;\n    }\n    FUN_00118594(iVar1);\n    puVar2 = PTR_CloneKernelInfo_003a8df4;\n    iVar3 = iVar8;\n    if ((((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&\n        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))) &&\n       (iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),\n       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10))) break;\nLAB_0011a478:\n    do {\n      iVar4 = *(int *)(iVar3 + 0x40);\n      iVar8 = iVar3;\nLAB_0011a47c:\n      iVar3 = iVar4;\n    } while (iVar4 != 0);\n    *(int *)(iVar8 + 0x40) = iVar1;\n    iVar3 = (*(code *)puVar2)(iVar1);\n    iVar8 = iVar1;\n  }\n  iVar7 = 0;\n  if (iVar4 == 0) {\nLAB_0011a570:\n    (*(code *)PTR_DestroyKernelInfo_003a96a8)(iVar1);\n    return;\n  }\n  pdVar6 = *(double **)(param_1 + 0x14);\n  pdVar5 = *(double **)(iVar1 + 0x14);\n  do {\n    dVar9 = *pdVar6;\n    iVar7 = iVar7 + 1;\n    pdVar6 = pdVar6 + 1;\n    dVar10 = *pdVar5;\n    pdVar5 = pdVar5 + 1;\n    if (NAN(dVar9)) {\n      if (!NAN(dVar10)) {\n        iVar4 = *(int *)(iVar8 + 0x40);\n        goto LAB_0011a47c;\n      }\n    }\n    else if (NAN(dVar10)) goto LAB_0011a478;\n    if (dVar11 <= ABS(dVar9 - dVar10)) goto LAB_0011a478;\n    if (iVar7 == iVar4) goto LAB_0011a570;\n  } while( true );\n}" primitive_type (function_declarator "FUN_0011a3dc(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  double *pdVar5;\n  double *pdVar6;\n  int iVar7;\n  int iVar8;\n  double dVar9;\n  double dVar10;\n  double dVar11;\n  \n  dVar11 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n  iVar3 = (*(code *)PTR_CloneKernelInfo_003a8df4)(param_1);\n  iVar8 = param_1;\n  while( true ) {\n    iVar1 = iVar3;\n    if (iVar1 == 0) {\n      return;\n    }\n    FUN_00118594(iVar1);\n    puVar2 = PTR_CloneKernelInfo_003a8df4;\n    iVar3 = iVar8;\n    if ((((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&\n        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))) &&\n       (iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),\n       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10))) break;\nLAB_0011a478:\n    do {\n      iVar4 = *(int *)(iVar3 + 0x40);\n      iVar8 = iVar3;\nLAB_0011a47c:\n      iVar3 = iVar4;\n    } while (iVar4 != 0);\n    *(int *)(iVar8 + 0x40) = iVar1;\n    iVar3 = (*(code *)puVar2)(iVar1);\n    iVar8 = iVar1;\n  }\n  iVar7 = 0;\n  if (iVar4 == 0) {\nLAB_0011a570:\n    (*(code *)PTR_DestroyKernelInfo_003a96a8)(iVar1);\n    return;\n  }\n  pdVar6 = *(double **)(param_1 + 0x14);\n  pdVar5 = *(double **)(iVar1 + 0x14);\n  do {\n    dVar9 = *pdVar6;\n    iVar7 = iVar7 + 1;\n    pdVar6 = pdVar6 + 1;\n    dVar10 = *pdVar5;\n    pdVar5 = pdVar5 + 1;\n    if (NAN(dVar9)) {\n      if (!NAN(dVar10)) {\n        iVar4 = *(int *)(iVar8 + 0x40);\n        goto LAB_0011a47c;\n      }\n    }\n    else if (NAN(dVar10)) goto LAB_0011a478;\n    if (dVar11 <= ABS(dVar9 - dVar10)) goto LAB_0011a478;\n    if (iVar7 == iVar4) goto LAB_0011a570;\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "double *pdVar5;" primitive_type (pointer_declarator "*pdVar5" * identifier) ;) (declaration "double *pdVar6;" primitive_type (pointer_declarator "*pdVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "double dVar9;" primitive_type identifier ;) (declaration "double dVar10;" primitive_type identifier ;) (declaration "double dVar11;" primitive_type identifier ;) (expression_statement "dVar11 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);" (assignment_expression "dVar11 = *(double *)(PTR_LAB_003a88e0 + 0x13f8)" identifier = (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x13f8)" * (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x13f8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_003a88e0 + 0x13f8)" ( (binary_expression "PTR_LAB_003a88e0 + 0x13f8" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = (*(code *)PTR_CloneKernelInfo_003a8df4)(param_1);" (assignment_expression "iVar3 = (*(code *)PTR_CloneKernelInfo_003a8df4)(param_1)" identifier = (call_expression "(*(code *)PTR_CloneKernelInfo_003a8df4)(param_1)" (parenthesized_expression "(*(code *)PTR_CloneKernelInfo_003a8df4)" ( (pointer_expression "*(code *)PTR_CloneKernelInfo_003a8df4" * (cast_expression "(code *)PTR_CloneKernelInfo_003a8df4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "iVar8 = param_1;" (assignment_expression "iVar8 = param_1" identifier = identifier) ;) (while_statement "while( true ) {\n    iVar1 = iVar3;\n    if (iVar1 == 0) {\n      return;\n    }\n    FUN_00118594(iVar1);\n    puVar2 = PTR_CloneKernelInfo_003a8df4;\n    iVar3 = iVar8;\n    if ((((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&\n        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))) &&\n       (iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),\n       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10))) break;\nLAB_0011a478:\n    do {\n      iVar4 = *(int *)(iVar3 + 0x40);\n      iVar8 = iVar3;\nLAB_0011a47c:\n      iVar3 = iVar4;\n    } while (iVar4 != 0);\n    *(int *)(iVar8 + 0x40) = iVar1;\n    iVar3 = (*(code *)puVar2)(iVar1);\n    iVar8 = iVar1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar1 = iVar3;\n    if (iVar1 == 0) {\n      return;\n    }\n    FUN_00118594(iVar1);\n    puVar2 = PTR_CloneKernelInfo_003a8df4;\n    iVar3 = iVar8;\n    if ((((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&\n        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))) &&\n       (iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),\n       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10))) break;\nLAB_0011a478:\n    do {\n      iVar4 = *(int *)(iVar3 + 0x40);\n      iVar8 = iVar3;\nLAB_0011a47c:\n      iVar3 = iVar4;\n    } while (iVar4 != 0);\n    *(int *)(iVar8 + 0x40) = iVar1;\n    iVar3 = (*(code *)puVar2)(iVar1);\n    iVar8 = iVar1;\n  }" { (expression_statement "iVar1 = iVar3;" (assignment_expression "iVar1 = iVar3" identifier = identifier) ;) (if_statement "if (iVar1 == 0) {\n      return;\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "FUN_00118594(iVar1);" (call_expression "FUN_00118594(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) (expression_statement "puVar2 = PTR_CloneKernelInfo_003a8df4;" (assignment_expression "puVar2 = PTR_CloneKernelInfo_003a8df4" identifier = identifier) ;) (expression_statement "iVar3 = iVar8;" (assignment_expression "iVar3 = iVar8" identifier = identifier) ;) (if_statement "if ((((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&\n        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))) &&\n       (iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),\n       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10))) break;" if (parenthesized_expression "((((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&\n        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))) &&\n       (iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),\n       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10)))" ( (binary_expression "(((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&\n        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))) &&\n       (iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),\n       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10))" (parenthesized_expression "(((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&\n        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc)))" ( (binary_expression "((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&\n        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))" (parenthesized_expression "((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8)))" ( (binary_expression "(*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))" (parenthesized_expression "(*(int *)(param_1 + 4) == *(int *)(iVar1 + 4))" ( (binary_expression "*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) == (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) ))))) )) && (parenthesized_expression "(*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))" ( (binary_expression "*(int *)(param_1 + 8) == *(int *)(iVar1 + 8)" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) == (pointer_expression "*(int *)(iVar1 + 8)" * (cast_expression "(int *)(iVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) ))))) ))) )) && (parenthesized_expression "(*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))" ( (binary_expression "*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc)" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) == (pointer_expression "*(int *)(iVar1 + 0xc)" * (cast_expression "(int *)(iVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) ))))) ))) )) && (parenthesized_expression "(iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),\n       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10))" ( (comma_expression "iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),\n       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10)" (assignment_expression "iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8)" identifier = (binary_expression "*(int *)(param_1 + 4) * *(int *)(param_1 + 8)" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) * (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))))) , (binary_expression "*(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10)" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) == (pointer_expression "*(int *)(iVar1 + 0x10)" * (cast_expression "(int *)(iVar1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) )))))) ))) )) (break_statement "break;" break ;)) (labeled_statement "LAB_0011a478:\n    do {\n      iVar4 = *(int *)(iVar3 + 0x40);\n      iVar8 = iVar3;\nLAB_0011a47c:\n      iVar3 = iVar4;\n    } while (iVar4 != 0);" statement_identifier : (do_statement "do {\n      iVar4 = *(int *)(iVar3 + 0x40);\n      iVar8 = iVar3;\nLAB_0011a47c:\n      iVar3 = iVar4;\n    } while (iVar4 != 0);" do (compound_statement "{\n      iVar4 = *(int *)(iVar3 + 0x40);\n      iVar8 = iVar3;\nLAB_0011a47c:\n      iVar3 = iVar4;\n    }" { (expression_statement "iVar4 = *(int *)(iVar3 + 0x40);" (assignment_expression "iVar4 = *(int *)(iVar3 + 0x40)" identifier = (pointer_expression "*(int *)(iVar3 + 0x40)" * (cast_expression "(int *)(iVar3 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x40)" ( (binary_expression "iVar3 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = iVar3;" (assignment_expression "iVar8 = iVar3" identifier = identifier) ;) (labeled_statement "LAB_0011a47c:\n      iVar3 = iVar4;" statement_identifier : (expression_statement "iVar3 = iVar4;" (assignment_expression "iVar3 = iVar4" identifier = identifier) ;)) }) while (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) ;)) (expression_statement "*(int *)(iVar8 + 0x40) = iVar1;" (assignment_expression "*(int *)(iVar8 + 0x40) = iVar1" (pointer_expression "*(int *)(iVar8 + 0x40)" * (cast_expression "(int *)(iVar8 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x40)" ( (binary_expression "iVar8 + 0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar3 = (*(code *)puVar2)(iVar1);" (assignment_expression "iVar3 = (*(code *)puVar2)(iVar1)" identifier = (call_expression "(*(code *)puVar2)(iVar1)" (parenthesized_expression "(*(code *)puVar2)" ( (pointer_expression "*(code *)puVar2" * (cast_expression "(code *)puVar2" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar1)" ( identifier )))) ;) (expression_statement "iVar8 = iVar1;" (assignment_expression "iVar8 = iVar1" identifier = identifier) ;) })) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (if_statement "if (iVar4 == 0) {\nLAB_0011a570:\n    (*(code *)PTR_DestroyKernelInfo_003a96a8)(iVar1);\n    return;\n  }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0011a570:\n    (*(code *)PTR_DestroyKernelInfo_003a96a8)(iVar1);\n    return;\n  }" { (labeled_statement "LAB_0011a570:\n    (*(code *)PTR_DestroyKernelInfo_003a96a8)(iVar1);" statement_identifier : (expression_statement "(*(code *)PTR_DestroyKernelInfo_003a96a8)(iVar1);" (call_expression "(*(code *)PTR_DestroyKernelInfo_003a96a8)(iVar1)" (parenthesized_expression "(*(code *)PTR_DestroyKernelInfo_003a96a8)" ( (pointer_expression "*(code *)PTR_DestroyKernelInfo_003a96a8" * (cast_expression "(code *)PTR_DestroyKernelInfo_003a96a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar1)" ( identifier ))) ;)) (return_statement "return;" return ;) })) (expression_statement "pdVar6 = *(double **)(param_1 + 0x14);" (assignment_expression "pdVar6 = *(double **)(param_1 + 0x14)" identifier = (pointer_expression "*(double **)(param_1 + 0x14)" * (cast_expression "(double **)(param_1 + 0x14)" ( (type_descriptor "double **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "pdVar5 = *(double **)(iVar1 + 0x14);" (assignment_expression "pdVar5 = *(double **)(iVar1 + 0x14)" identifier = (pointer_expression "*(double **)(iVar1 + 0x14)" * (cast_expression "(double **)(iVar1 + 0x14)" ( (type_descriptor "double **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) ))))) ;) (do_statement "do {\n    dVar9 = *pdVar6;\n    iVar7 = iVar7 + 1;\n    pdVar6 = pdVar6 + 1;\n    dVar10 = *pdVar5;\n    pdVar5 = pdVar5 + 1;\n    if (NAN(dVar9)) {\n      if (!NAN(dVar10)) {\n        iVar4 = *(int *)(iVar8 + 0x40);\n        goto LAB_0011a47c;\n      }\n    }\n    else if (NAN(dVar10)) goto LAB_0011a478;\n    if (dVar11 <= ABS(dVar9 - dVar10)) goto LAB_0011a478;\n    if (iVar7 == iVar4) goto LAB_0011a570;\n  } while( true );" do (compound_statement "{\n    dVar9 = *pdVar6;\n    iVar7 = iVar7 + 1;\n    pdVar6 = pdVar6 + 1;\n    dVar10 = *pdVar5;\n    pdVar5 = pdVar5 + 1;\n    if (NAN(dVar9)) {\n      if (!NAN(dVar10)) {\n        iVar4 = *(int *)(iVar8 + 0x40);\n        goto LAB_0011a47c;\n      }\n    }\n    else if (NAN(dVar10)) goto LAB_0011a478;\n    if (dVar11 <= ABS(dVar9 - dVar10)) goto LAB_0011a478;\n    if (iVar7 == iVar4) goto LAB_0011a570;\n  }" { (expression_statement "dVar9 = *pdVar6;" (assignment_expression "dVar9 = *pdVar6" identifier = (pointer_expression "*pdVar6" * identifier)) ;) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "pdVar6 = pdVar6 + 1;" (assignment_expression "pdVar6 = pdVar6 + 1" identifier = (binary_expression "pdVar6 + 1" identifier + number_literal)) ;) (expression_statement "dVar10 = *pdVar5;" (assignment_expression "dVar10 = *pdVar5" identifier = (pointer_expression "*pdVar5" * identifier)) ;) (expression_statement "pdVar5 = pdVar5 + 1;" (assignment_expression "pdVar5 = pdVar5 + 1" identifier = (binary_expression "pdVar5 + 1" identifier + number_literal)) ;) (if_statement "if (NAN(dVar9)) {\n      if (!NAN(dVar10)) {\n        iVar4 = *(int *)(iVar8 + 0x40);\n        goto LAB_0011a47c;\n      }\n    }\n    else if (NAN(dVar10)) goto LAB_0011a478;" if (parenthesized_expression "(NAN(dVar9))" ( (call_expression "NAN(dVar9)" identifier (argument_list "(dVar9)" ( identifier ))) )) (compound_statement "{\n      if (!NAN(dVar10)) {\n        iVar4 = *(int *)(iVar8 + 0x40);\n        goto LAB_0011a47c;\n      }\n    }" { (if_statement "if (!NAN(dVar10)) {\n        iVar4 = *(int *)(iVar8 + 0x40);\n        goto LAB_0011a47c;\n      }" if (parenthesized_expression "(!NAN(dVar10))" ( (unary_expression "!NAN(dVar10)" ! (call_expression "NAN(dVar10)" identifier (argument_list "(dVar10)" ( identifier )))) )) (compound_statement "{\n        iVar4 = *(int *)(iVar8 + 0x40);\n        goto LAB_0011a47c;\n      }" { (expression_statement "iVar4 = *(int *)(iVar8 + 0x40);" (assignment_expression "iVar4 = *(int *)(iVar8 + 0x40)" identifier = (pointer_expression "*(int *)(iVar8 + 0x40)" * (cast_expression "(int *)(iVar8 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x40)" ( (binary_expression "iVar8 + 0x40" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0011a47c;" goto statement_identifier ;) })) }) (else_clause "else if (NAN(dVar10)) goto LAB_0011a478;" else (if_statement "if (NAN(dVar10)) goto LAB_0011a478;" if (parenthesized_expression "(NAN(dVar10))" ( (call_expression "NAN(dVar10)" identifier (argument_list "(dVar10)" ( identifier ))) )) (goto_statement "goto LAB_0011a478;" goto statement_identifier ;)))) (if_statement "if (dVar11 <= ABS(dVar9 - dVar10)) goto LAB_0011a478;" if (parenthesized_expression "(dVar11 <= ABS(dVar9 - dVar10))" ( (binary_expression "dVar11 <= ABS(dVar9 - dVar10)" identifier <= (call_expression "ABS(dVar9 - dVar10)" identifier (argument_list "(dVar9 - dVar10)" ( (binary_expression "dVar9 - dVar10" identifier - identifier) )))) )) (goto_statement "goto LAB_0011a478;" goto statement_identifier ;)) (if_statement "if (iVar7 == iVar4) goto LAB_0011a570;" if (parenthesized_expression "(iVar7 == iVar4)" ( (binary_expression "iVar7 == iVar4" identifier == identifier) )) (goto_statement "goto LAB_0011a570;" goto statement_identifier ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ))) )) (break_statement break ;)) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;)) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (call_expression IDENT (argument_list ( IDENT ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (unary_expression ! (call_expression IDENT (argument_list ( IDENT )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (call_expression IDENT (argument_list ( IDENT ))) )) (goto_statement goto statement_identifier ;)))) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) )))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "void FUN_0011a3dc(int param_1)\n\n{\n  int iVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  double *pdVar5;\n  double *pdVar6;\n  int iVar7;\n  int iVar8;\n  double dVar9;\n  double dVar10;\n  double dVar11;\n  \n  dVar11 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n  iVar3 = (*(code *)PTR_CloneKernelInfo_003a8df4)(param_1);\n  iVar8 = param_1;\n  while( true ) {\n    iVar1 = iVar3;\n    if (iVar1 == 0) {\n      return;\n    }\n    FUN_00118594(iVar1);\n    puVar2 = PTR_CloneKernelInfo_003a8df4;\n    iVar3 = iVar8;\n    if ((((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&\n        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))) &&\n       (iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),\n       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10))) break;\nLAB_0011a478:\n    do {\n      iVar4 = *(int *)(iVar3 + 0x40);\n      iVar8 = iVar3;\nLAB_0011a47c:\n      iVar3 = iVar4;\n    } while (iVar4 != 0);\n    *(int *)(iVar8 + 0x40) = iVar1;\n    iVar3 = (*(code *)puVar2)(iVar1);\n    iVar8 = iVar1;\n  }\n  iVar7 = 0;\n  if (iVar4 == 0) {\nLAB_0011a570:\n    (*(code *)PTR_DestroyKernelInfo_003a96a8)(iVar1);\n    return;\n  }\n  pdVar6 = *(double **)(param_1 + 0x14);\n  pdVar5 = *(double **)(iVar1 + 0x14);\n  do {\n    dVar9 = *pdVar6;\n    iVar7 = iVar7 + 1;\n    pdVar6 = pdVar6 + 1;\n    dVar10 = *pdVar5;\n    pdVar5 = pdVar5 + 1;\n    if (NAN(dVar9)) {\n      if (!NAN(dVar10)) {\n        iVar4 = *(int *)(iVar8 + 0x40);\n        goto LAB_0011a47c;\n      }\n    }\n    else if (NAN(dVar10)) goto LAB_0011a478;\n    if (dVar11 <= ABS(dVar9 - dVar10)) goto LAB_0011a478;\n    if (iVar7 == iVar4) goto LAB_0011a570;\n  } while( true );\n}" (primitive_type "void") (function_declarator "FUN_0011a3dc(int param_1)" (identifier "FUN_0011a3dc") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  int iVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  double *pdVar5;\n  double *pdVar6;\n  int iVar7;\n  int iVar8;\n  double dVar9;\n  double dVar10;\n  double dVar11;\n  \n  dVar11 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n  iVar3 = (*(code *)PTR_CloneKernelInfo_003a8df4)(param_1);\n  iVar8 = param_1;\n  while( true ) {\n    iVar1 = iVar3;\n    if (iVar1 == 0) {\n      return;\n    }\n    FUN_00118594(iVar1);\n    puVar2 = PTR_CloneKernelInfo_003a8df4;\n    iVar3 = iVar8;\n    if ((((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&\n        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))) &&\n       (iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),\n       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10))) break;\nLAB_0011a478:\n    do {\n      iVar4 = *(int *)(iVar3 + 0x40);\n      iVar8 = iVar3;\nLAB_0011a47c:\n      iVar3 = iVar4;\n    } while (iVar4 != 0);\n    *(int *)(iVar8 + 0x40) = iVar1;\n    iVar3 = (*(code *)puVar2)(iVar1);\n    iVar8 = iVar1;\n  }\n  iVar7 = 0;\n  if (iVar4 == 0) {\nLAB_0011a570:\n    (*(code *)PTR_DestroyKernelInfo_003a96a8)(iVar1);\n    return;\n  }\n  pdVar6 = *(double **)(param_1 + 0x14);\n  pdVar5 = *(double **)(iVar1 + 0x14);\n  do {\n    dVar9 = *pdVar6;\n    iVar7 = iVar7 + 1;\n    pdVar6 = pdVar6 + 1;\n    dVar10 = *pdVar5;\n    pdVar5 = pdVar5 + 1;\n    if (NAN(dVar9)) {\n      if (!NAN(dVar10)) {\n        iVar4 = *(int *)(iVar8 + 0x40);\n        goto LAB_0011a47c;\n      }\n    }\n    else if (NAN(dVar10)) goto LAB_0011a478;\n    if (dVar11 <= ABS(dVar9 - dVar10)) goto LAB_0011a478;\n    if (iVar7 == iVar4) goto LAB_0011a570;\n  } while( true );\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "double *pdVar5;" (primitive_type "double") (pointer_declarator "*pdVar5" (* "*") (identifier "pdVar5")) (; ";")) (declaration "double *pdVar6;" (primitive_type "double") (pointer_declarator "*pdVar6" (* "*") (identifier "pdVar6")) (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "double dVar9;" (primitive_type "double") (identifier "dVar9") (; ";")) (declaration "double dVar10;" (primitive_type "double") (identifier "dVar10") (; ";")) (declaration "double dVar11;" (primitive_type "double") (identifier "dVar11") (; ";")) (expression_statement "dVar11 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);" (assignment_expression "dVar11 = *(double *)(PTR_LAB_003a88e0 + 0x13f8)" (identifier "dVar11") (= "=") (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x13f8)" (* "*") (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x13f8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_003a88e0 + 0x13f8)" (( "(") (binary_expression "PTR_LAB_003a88e0 + 0x13f8" (identifier "PTR_LAB_003a88e0") (+ "+") (number_literal "0x13f8")) () ")"))))) (; ";")) (expression_statement "iVar3 = (*(code *)PTR_CloneKernelInfo_003a8df4)(param_1);" (assignment_expression "iVar3 = (*(code *)PTR_CloneKernelInfo_003a8df4)(param_1)" (identifier "iVar3") (= "=") (call_expression "(*(code *)PTR_CloneKernelInfo_003a8df4)(param_1)" (parenthesized_expression "(*(code *)PTR_CloneKernelInfo_003a8df4)" (( "(") (pointer_expression "*(code *)PTR_CloneKernelInfo_003a8df4" (* "*") (cast_expression "(code *)PTR_CloneKernelInfo_003a8df4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_CloneKernelInfo_003a8df4"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "iVar8 = param_1;" (assignment_expression "iVar8 = param_1" (identifier "iVar8") (= "=") (identifier "param_1")) (; ";")) (while_statement "while( true ) {\n    iVar1 = iVar3;\n    if (iVar1 == 0) {\n      return;\n    }\n    FUN_00118594(iVar1);\n    puVar2 = PTR_CloneKernelInfo_003a8df4;\n    iVar3 = iVar8;\n    if ((((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&\n        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))) &&\n       (iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),\n       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10))) break;\nLAB_0011a478:\n    do {\n      iVar4 = *(int *)(iVar3 + 0x40);\n      iVar8 = iVar3;\nLAB_0011a47c:\n      iVar3 = iVar4;\n    } while (iVar4 != 0);\n    *(int *)(iVar8 + 0x40) = iVar1;\n    iVar3 = (*(code *)puVar2)(iVar1);\n    iVar8 = iVar1;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    iVar1 = iVar3;\n    if (iVar1 == 0) {\n      return;\n    }\n    FUN_00118594(iVar1);\n    puVar2 = PTR_CloneKernelInfo_003a8df4;\n    iVar3 = iVar8;\n    if ((((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&\n        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))) &&\n       (iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),\n       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10))) break;\nLAB_0011a478:\n    do {\n      iVar4 = *(int *)(iVar3 + 0x40);\n      iVar8 = iVar3;\nLAB_0011a47c:\n      iVar3 = iVar4;\n    } while (iVar4 != 0);\n    *(int *)(iVar8 + 0x40) = iVar1;\n    iVar3 = (*(code *)puVar2)(iVar1);\n    iVar8 = iVar1;\n  }" ({ "{") (expression_statement "iVar1 = iVar3;" (assignment_expression "iVar1 = iVar3" (identifier "iVar1") (= "=") (identifier "iVar3")) (; ";")) (if_statement "if (iVar1 == 0) {\n      return;\n    }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_00118594(iVar1);" (call_expression "FUN_00118594(iVar1)" (identifier "FUN_00118594") (argument_list "(iVar1)" (( "(") (identifier "iVar1") () ")"))) (; ";")) (expression_statement "puVar2 = PTR_CloneKernelInfo_003a8df4;" (assignment_expression "puVar2 = PTR_CloneKernelInfo_003a8df4" (identifier "puVar2") (= "=") (identifier "PTR_CloneKernelInfo_003a8df4")) (; ";")) (expression_statement "iVar3 = iVar8;" (assignment_expression "iVar3 = iVar8" (identifier "iVar3") (= "=") (identifier "iVar8")) (; ";")) (if_statement "if ((((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&\n        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))) &&\n       (iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),\n       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10))) break;" (if "if") (parenthesized_expression "((((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&\n        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))) &&\n       (iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),\n       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10)))" (( "(") (binary_expression "(((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&\n        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))) &&\n       (iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),\n       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10))" (parenthesized_expression "(((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&\n        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc)))" (( "(") (binary_expression "((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&\n        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))" (parenthesized_expression "((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8)))" (( "(") (binary_expression "(*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&\n         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))" (parenthesized_expression "(*(int *)(param_1 + 4) == *(int *)(iVar1 + 4))" (( "(") (binary_expression "*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (== "==") (pointer_expression "*(int *)(iVar1 + 4)" (* "*") (cast_expression "(int *)(iVar1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")"))))) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))" (( "(") (binary_expression "*(int *)(param_1 + 8) == *(int *)(iVar1 + 8)" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (== "==") (pointer_expression "*(int *)(iVar1 + 8)" (* "*") (cast_expression "(int *)(iVar1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 8)" (( "(") (binary_expression "iVar1 + 8" (identifier "iVar1") (+ "+") (number_literal "8")) () ")"))))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))" (( "(") (binary_expression "*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc)" (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (== "==") (pointer_expression "*(int *)(iVar1 + 0xc)" (* "*") (cast_expression "(int *)(iVar1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")"))))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),\n       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10))" (( "(") (comma_expression "iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),\n       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10)" (assignment_expression "iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8)" (identifier "iVar4") (= "=") (binary_expression "*(int *)(param_1 + 4) * *(int *)(param_1 + 8)" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (* "*") (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))))) (, ",") (binary_expression "*(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10)" (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (pointer_expression "*(int *)(iVar1 + 0x10)" (* "*") (cast_expression "(int *)(iVar1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x10)" (( "(") (binary_expression "iVar1 + 0x10" (identifier "iVar1") (+ "+") (number_literal "0x10")) () ")")))))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_0011a478:\n    do {\n      iVar4 = *(int *)(iVar3 + 0x40);\n      iVar8 = iVar3;\nLAB_0011a47c:\n      iVar3 = iVar4;\n    } while (iVar4 != 0);" (statement_identifier "LAB_0011a478") (: ":") (do_statement "do {\n      iVar4 = *(int *)(iVar3 + 0x40);\n      iVar8 = iVar3;\nLAB_0011a47c:\n      iVar3 = iVar4;\n    } while (iVar4 != 0);" (do "do") (compound_statement "{\n      iVar4 = *(int *)(iVar3 + 0x40);\n      iVar8 = iVar3;\nLAB_0011a47c:\n      iVar3 = iVar4;\n    }" ({ "{") (expression_statement "iVar4 = *(int *)(iVar3 + 0x40);" (assignment_expression "iVar4 = *(int *)(iVar3 + 0x40)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar3 + 0x40)" (* "*") (cast_expression "(int *)(iVar3 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x40)" (( "(") (binary_expression "iVar3 + 0x40" (identifier "iVar3") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (expression_statement "iVar8 = iVar3;" (assignment_expression "iVar8 = iVar3" (identifier "iVar8") (= "=") (identifier "iVar3")) (; ";")) (labeled_statement "LAB_0011a47c:\n      iVar3 = iVar4;" (statement_identifier "LAB_0011a47c") (: ":") (expression_statement "iVar3 = iVar4;" (assignment_expression "iVar3 = iVar4" (identifier "iVar3") (= "=") (identifier "iVar4")) (; ";"))) (} "}")) (while "while") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (; ";"))) (expression_statement "*(int *)(iVar8 + 0x40) = iVar1;" (assignment_expression "*(int *)(iVar8 + 0x40) = iVar1" (pointer_expression "*(int *)(iVar8 + 0x40)" (* "*") (cast_expression "(int *)(iVar8 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x40)" (( "(") (binary_expression "iVar8 + 0x40" (identifier "iVar8") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (identifier "iVar1")) (; ";")) (expression_statement "iVar3 = (*(code *)puVar2)(iVar1);" (assignment_expression "iVar3 = (*(code *)puVar2)(iVar1)" (identifier "iVar3") (= "=") (call_expression "(*(code *)puVar2)(iVar1)" (parenthesized_expression "(*(code *)puVar2)" (( "(") (pointer_expression "*(code *)puVar2" (* "*") (cast_expression "(code *)puVar2" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar2"))) () ")")) (argument_list "(iVar1)" (( "(") (identifier "iVar1") () ")")))) (; ";")) (expression_statement "iVar8 = iVar1;" (assignment_expression "iVar8 = iVar1" (identifier "iVar8") (= "=") (identifier "iVar1")) (; ";")) (} "}"))) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar4 == 0) {\nLAB_0011a570:\n    (*(code *)PTR_DestroyKernelInfo_003a96a8)(iVar1);\n    return;\n  }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0011a570:\n    (*(code *)PTR_DestroyKernelInfo_003a96a8)(iVar1);\n    return;\n  }" ({ "{") (labeled_statement "LAB_0011a570:\n    (*(code *)PTR_DestroyKernelInfo_003a96a8)(iVar1);" (statement_identifier "LAB_0011a570") (: ":") (expression_statement "(*(code *)PTR_DestroyKernelInfo_003a96a8)(iVar1);" (call_expression "(*(code *)PTR_DestroyKernelInfo_003a96a8)(iVar1)" (parenthesized_expression "(*(code *)PTR_DestroyKernelInfo_003a96a8)" (( "(") (pointer_expression "*(code *)PTR_DestroyKernelInfo_003a96a8" (* "*") (cast_expression "(code *)PTR_DestroyKernelInfo_003a96a8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_DestroyKernelInfo_003a96a8"))) () ")")) (argument_list "(iVar1)" (( "(") (identifier "iVar1") () ")"))) (; ";"))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "pdVar6 = *(double **)(param_1 + 0x14);" (assignment_expression "pdVar6 = *(double **)(param_1 + 0x14)" (identifier "pdVar6") (= "=") (pointer_expression "*(double **)(param_1 + 0x14)" (* "*") (cast_expression "(double **)(param_1 + 0x14)" (( "(") (type_descriptor "double **" (primitive_type "double") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "pdVar5 = *(double **)(iVar1 + 0x14);" (assignment_expression "pdVar5 = *(double **)(iVar1 + 0x14)" (identifier "pdVar5") (= "=") (pointer_expression "*(double **)(iVar1 + 0x14)" (* "*") (cast_expression "(double **)(iVar1 + 0x14)" (( "(") (type_descriptor "double **" (primitive_type "double") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + 0x14)" (( "(") (binary_expression "iVar1 + 0x14" (identifier "iVar1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (do_statement "do {\n    dVar9 = *pdVar6;\n    iVar7 = iVar7 + 1;\n    pdVar6 = pdVar6 + 1;\n    dVar10 = *pdVar5;\n    pdVar5 = pdVar5 + 1;\n    if (NAN(dVar9)) {\n      if (!NAN(dVar10)) {\n        iVar4 = *(int *)(iVar8 + 0x40);\n        goto LAB_0011a47c;\n      }\n    }\n    else if (NAN(dVar10)) goto LAB_0011a478;\n    if (dVar11 <= ABS(dVar9 - dVar10)) goto LAB_0011a478;\n    if (iVar7 == iVar4) goto LAB_0011a570;\n  } while( true );" (do "do") (compound_statement "{\n    dVar9 = *pdVar6;\n    iVar7 = iVar7 + 1;\n    pdVar6 = pdVar6 + 1;\n    dVar10 = *pdVar5;\n    pdVar5 = pdVar5 + 1;\n    if (NAN(dVar9)) {\n      if (!NAN(dVar10)) {\n        iVar4 = *(int *)(iVar8 + 0x40);\n        goto LAB_0011a47c;\n      }\n    }\n    else if (NAN(dVar10)) goto LAB_0011a478;\n    if (dVar11 <= ABS(dVar9 - dVar10)) goto LAB_0011a478;\n    if (iVar7 == iVar4) goto LAB_0011a570;\n  }" ({ "{") (expression_statement "dVar9 = *pdVar6;" (assignment_expression "dVar9 = *pdVar6" (identifier "dVar9") (= "=") (pointer_expression "*pdVar6" (* "*") (identifier "pdVar6"))) (; ";")) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pdVar6 = pdVar6 + 1;" (assignment_expression "pdVar6 = pdVar6 + 1" (identifier "pdVar6") (= "=") (binary_expression "pdVar6 + 1" (identifier "pdVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "dVar10 = *pdVar5;" (assignment_expression "dVar10 = *pdVar5" (identifier "dVar10") (= "=") (pointer_expression "*pdVar5" (* "*") (identifier "pdVar5"))) (; ";")) (expression_statement "pdVar5 = pdVar5 + 1;" (assignment_expression "pdVar5 = pdVar5 + 1" (identifier "pdVar5") (= "=") (binary_expression "pdVar5 + 1" (identifier "pdVar5") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (NAN(dVar9)) {\n      if (!NAN(dVar10)) {\n        iVar4 = *(int *)(iVar8 + 0x40);\n        goto LAB_0011a47c;\n      }\n    }\n    else if (NAN(dVar10)) goto LAB_0011a478;" (if "if") (parenthesized_expression "(NAN(dVar9))" (( "(") (call_expression "NAN(dVar9)" (identifier "NAN") (argument_list "(dVar9)" (( "(") (identifier "dVar9") () ")"))) () ")")) (compound_statement "{\n      if (!NAN(dVar10)) {\n        iVar4 = *(int *)(iVar8 + 0x40);\n        goto LAB_0011a47c;\n      }\n    }" ({ "{") (if_statement "if (!NAN(dVar10)) {\n        iVar4 = *(int *)(iVar8 + 0x40);\n        goto LAB_0011a47c;\n      }" (if "if") (parenthesized_expression "(!NAN(dVar10))" (( "(") (unary_expression "!NAN(dVar10)" (! "!") (call_expression "NAN(dVar10)" (identifier "NAN") (argument_list "(dVar10)" (( "(") (identifier "dVar10") () ")")))) () ")")) (compound_statement "{\n        iVar4 = *(int *)(iVar8 + 0x40);\n        goto LAB_0011a47c;\n      }" ({ "{") (expression_statement "iVar4 = *(int *)(iVar8 + 0x40);" (assignment_expression "iVar4 = *(int *)(iVar8 + 0x40)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar8 + 0x40)" (* "*") (cast_expression "(int *)(iVar8 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x40)" (( "(") (binary_expression "iVar8 + 0x40" (identifier "iVar8") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (goto_statement "goto LAB_0011a47c;" (goto "goto") (statement_identifier "LAB_0011a47c") (; ";")) (} "}"))) (} "}")) (else_clause "else if (NAN(dVar10)) goto LAB_0011a478;" (else "else") (if_statement "if (NAN(dVar10)) goto LAB_0011a478;" (if "if") (parenthesized_expression "(NAN(dVar10))" (( "(") (call_expression "NAN(dVar10)" (identifier "NAN") (argument_list "(dVar10)" (( "(") (identifier "dVar10") () ")"))) () ")")) (goto_statement "goto LAB_0011a478;" (goto "goto") (statement_identifier "LAB_0011a478") (; ";"))))) (if_statement "if (dVar11 <= ABS(dVar9 - dVar10)) goto LAB_0011a478;" (if "if") (parenthesized_expression "(dVar11 <= ABS(dVar9 - dVar10))" (( "(") (binary_expression "dVar11 <= ABS(dVar9 - dVar10)" (identifier "dVar11") (<= "<=") (call_expression "ABS(dVar9 - dVar10)" (identifier "ABS") (argument_list "(dVar9 - dVar10)" (( "(") (binary_expression "dVar9 - dVar10" (identifier "dVar9") (- "-") (identifier "dVar10")) () ")")))) () ")")) (goto_statement "goto LAB_0011a478;" (goto "goto") (statement_identifier "LAB_0011a478") (; ";"))) (if_statement "if (iVar7 == iVar4) goto LAB_0011a570;" (if "if") (parenthesized_expression "(iVar7 == iVar4)" (( "(") (binary_expression "iVar7 == iVar4" (identifier "iVar7") (== "==") (identifier "iVar4")) () ")")) (goto_statement "goto LAB_0011a570;" (goto "goto") (statement_identifier "LAB_0011a570") (; ";"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (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: (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: (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: (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: (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: (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: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) consequence: (break_statement)) (labeled_statement label: (statement_identifier) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))) (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (call_expression function: (identifier) arguments: (argument_list (identifier)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (unary_expression argument: (call_expression function: (identifier) arguments: (argument_list (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (call_expression function: (identifier) arguments: (argument_list (identifier)))) consequence: (goto_statement label: (statement_identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier)))) condition: (parenthesized_expression (true))))))

void MASKED(int param_1)

{
  int iVar1;
  undefined *puVar2;
  int iVar3;
  int iVar4;
  double *pdVar5;
  double *pdVar6;
  int iVar7;
  int iVar8;
  double dVar9;
  double dVar10;
  double dVar11;
  
  dVar11 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);
  iVar3 = (*(code *)PTR_CloneKernelInfo_003a8df4)(param_1);
  iVar8 = param_1;
  while( true ) {
    iVar1 = iVar3;
    if (iVar1 == 0) {
      return;
    }
    FUN_00118594(iVar1);
    puVar2 = PTR_CloneKernelInfo_003a8df4;
    iVar3 = iVar8;
    if ((((*(int *)(param_1 + 4) == *(int *)(iVar1 + 4)) &&
         (*(int *)(param_1 + 8) == *(int *)(iVar1 + 8))) &&
        (*(int *)(param_1 + 0xc) == *(int *)(iVar1 + 0xc))) &&
       (iVar4 = *(int *)(param_1 + 4) * *(int *)(param_1 + 8),
       *(int *)(param_1 + 0x10) == *(int *)(iVar1 + 0x10))) break;
LAB_0011a478:
    do {
      iVar4 = *(int *)(iVar3 + 0x40);
      iVar8 = iVar3;
LAB_0011a47c:
      iVar3 = iVar4;
    } while (iVar4 != 0);
    *(int *)(iVar8 + 0x40) = iVar1;
    iVar3 = (*(code *)puVar2)(iVar1);
    iVar8 = iVar1;
  }
  iVar7 = 0;
  if (iVar4 == 0) {
LAB_0011a570:
    (*(code *)PTR_DestroyKernelInfo_003a96a8)(iVar1);
    return;
  }
  pdVar6 = *(double **)(param_1 + 0x14);
  pdVar5 = *(double **)(iVar1 + 0x14);
  do {
    dVar9 = *pdVar6;
    iVar7 = iVar7 + 1;
    pdVar6 = pdVar6 + 1;
    dVar10 = *pdVar5;
    pdVar5 = pdVar5 + 1;
    if (NAN(dVar9)) {
      if (!NAN(dVar10)) {
        iVar4 = *(int *)(iVar8 + 0x40);
        goto LAB_0011a47c;
      }
    }
    else if (NAN(dVar10)) goto LAB_0011a478;
    if (dVar11 <= ABS(dVar9 - dVar10)) goto LAB_0011a478;
    if (iVar7 == iVar4) goto LAB_0011a570;
  } while( true );
}

