
/* WARNING: Enum "GravityType": Some values do not have unique names */
/* WARNING: Enum "DisposeType": Some values do not have unique names */
/* WARNING: Enum "ChannelType": Some values do not have unique names */
/* WARNING: Enum "PixelChannel": Some values do not have unique names */

void ClosestColor(Image *image,CubeInfo_conflict *cube_info,NodeInfo_conflict *node_info)

{
  double dVar1;
  MagickBooleanType MVar2;
  size_t sVar3;
  PixelInfo *pPVar4;
  long lVar5;
  double dVar6;
  double dVar7;
  double dVar8;
  double dVar9;
  
  MVar2 = cube_info->associate_alpha;
  lVar5 = 0;
  do {
    if (node_info->child[lVar5] != (NodeInfo_conflict *)0x0) {
      ClosestColor(image,cube_info,node_info->child[lVar5]);
    }
    lVar5 = lVar5 + 1;
  } while (lVar5 < (long)((-(ulong)(MVar2 == MagickFalse) & 0xfffffffffffffff8) + 0x10));
  if (node_info->number_unique != 0) {
    sVar3 = node_info->color_number;
    pPVar4 = image->colormap;
    dVar7 = DAT_003f9608;
    dVar8 = DAT_003f9608;
    if (cube_info->associate_alpha != MagickFalse) {
      dVar7 = DAT_003f9c60 * pPVar4[sVar3].alpha;
      dVar8 = DAT_003f9c60 * (cube_info->target).alpha;
    }
    dVar6 = dVar7 * pPVar4[sVar3].red - dVar8 * (cube_info->target).red;
    dVar6 = dVar6 * dVar6;
    dVar1 = cube_info->distance;
    if ((((dVar6 <= dVar1) &&
         (dVar9 = dVar7 * pPVar4[sVar3].green - dVar8 * (cube_info->target).green,
         dVar6 = dVar6 + dVar9 * dVar9, dVar6 <= dVar1)) &&
        (dVar7 = dVar7 * pPVar4[sVar3].blue - dVar8 * (cube_info->target).blue,
        dVar6 = dVar6 + dVar7 * dVar7, dVar6 <= dVar1)) &&
       ((cube_info->associate_alpha == MagickFalse ||
        (dVar7 = pPVar4[sVar3].alpha - (cube_info->target).alpha, dVar6 = dVar6 + dVar7 * dVar7,
        dVar6 <= dVar1)))) {
      cube_info->distance = dVar6;
      cube_info->color_number = node_info->color_number;
    }
  }
  return;
}



void FUN_00267ca8(long param_1,long param_2,long param_3)

{
  double dVar1;
  int iVar2;
  long lVar3;
  double dVar4;
  double dVar5;
  double dVar6;
  double dVar7;
  
  iVar2 = *(int *)(param_2 + 800);
  lVar3 = 0;
  do {
    if (*(long *)(param_3 + 8 + lVar3 * 8) != 0) {
      FUN_00267ca8(param_1,param_2);
    }
    lVar3 = lVar3 + 1;
  } while (lVar3 < (long)((-(ulong)(iVar2 == 0) & 0xfffffffffffffff8) + 0x10));
  if (*(long *)(param_3 + 0x88) != 0) {
    lVar3 = *(long *)(param_1 + 0x40) + *(long *)(param_3 + 0xb8) * 0x58;
    dVar5 = DAT_003f9608;
    dVar6 = DAT_003f9608;
    if (*(int *)(param_2 + 800) != 0) {
      dVar5 = DAT_003f9c60 * *(double *)(lVar3 + 0x48);
      dVar6 = DAT_003f9c60 * *(double *)(param_2 + 0x40);
    }
    dVar4 = dVar5 * *(double *)(lVar3 + 0x28) - dVar6 * *(double *)(param_2 + 0x28);
    dVar4 = dVar4 * dVar4;
    dVar1 = *(double *)(param_2 + 0x48);
    if ((((dVar4 <= dVar1) &&
         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),
         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&
        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),
        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)) &&
       ((*(int *)(param_2 + 800) == 0 ||
        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),
        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)))) {
      *(double *)(param_2 + 0x48) = dVar4;
      *(undefined8 *)(param_2 + 0x70) = *(undefined8 *)(param_3 + 0xb8);
    }
  }
  return;
}


PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
MOV R14,RDI
MOV R12,RSI
MOV R13,RDX
CMP dword ptr [RSI + 0x320],0x1
SBB RAX,RAX
AND RAX,-0x8
LEA RBP,[RAX + 0x10]
MOV EBX,0x0
MOV RDX,qword ptr [R13 + RBX*0x8 + 0x8]
TEST RDX,RDX
JNZ 0x00267ddb
ADD RBX,0x1
CMP RBP,RBX
JG 0x00267cd0
CMP qword ptr [R13 + 0x88],0x0
JZ 0x00267dd2
MOV RAX,qword ptr [R13 + 0xb8]
LEA RDX,[RAX + RAX*0x4]
LEA RDX,[RAX + RDX*0x2]
MOV RAX,qword ptr [R14 + 0x40]
LEA RAX,[RAX + RDX*0x8]
MOV EDX,dword ptr [R12 + 0x320]
TEST EDX,EDX
JZ 0x00267deb
MOVSD XMM2,qword ptr [0x003f9c60]
MOVAPD XMM1,XMM2
MULSD XMM1,qword ptr [RAX + 0x48]
MULSD XMM2,qword ptr [R12 + 0x40]
MOVAPD XMM0,XMM1
MULSD XMM0,qword ptr [RAX + 0x28]
MOVAPD XMM3,XMM2
MULSD XMM3,qword ptr [R12 + 0x28]
SUBSD XMM0,XMM3
MULSD XMM0,XMM0
MOVSD XMM4,qword ptr [R12 + 0x48]
UCOMISD XMM4,XMM0
JC 0x00267dd2
MOVAPD XMM3,XMM1
MULSD XMM3,qword ptr [RAX + 0x30]
MOVAPD XMM5,XMM2
MULSD XMM5,qword ptr [R12 + 0x30]
SUBSD XMM3,XMM5
MULSD XMM3,XMM3
ADDSD XMM0,XMM3
UCOMISD XMM4,XMM0
JC 0x00267dd2
MULSD XMM1,qword ptr [RAX + 0x38]
MULSD XMM2,qword ptr [R12 + 0x38]
SUBSD XMM1,XMM2
MULSD XMM1,XMM1
ADDSD XMM0,XMM1
UCOMISD XMM4,XMM0
JC 0x00267dd2
TEST EDX,EDX
JZ 0x00267dbf
MOVSD XMM1,qword ptr [RAX + 0x48]
SUBSD XMM1,qword ptr [R12 + 0x40]
MULSD XMM1,XMM1
ADDSD XMM0,XMM1
UCOMISD XMM4,XMM0
JC 0x00267dd2
MOVSD qword ptr [R12 + 0x48],XMM0
MOV RAX,qword ptr [R13 + 0xb8]
MOV qword ptr [R12 + 0x70],RAX
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
MOV RSI,R12
MOV RDI,R14
CALL 0x00267ca8
JMP 0x00267cde
MOVSD XMM2,qword ptr [0x003f9608]
MOVAPD XMM1,XMM2
JMP 0x00267d34
(translation_unit "void FUN_00267ca8(long param_1,long param_2,long param_3)\n\n{\n  double dVar1;\n  int iVar2;\n  long lVar3;\n  double dVar4;\n  double dVar5;\n  double dVar6;\n  double dVar7;\n  \n  iVar2 = *(int *)(param_2 + 800);\n  lVar3 = 0;\n  do {\n    if (*(long *)(param_3 + 8 + lVar3 * 8) != 0) {\n      FUN_00267ca8(param_1,param_2);\n    }\n    lVar3 = lVar3 + 1;\n  } while (lVar3 < (long)((-(ulong)(iVar2 == 0) & 0xfffffffffffffff8) + 0x10));\n  if (*(long *)(param_3 + 0x88) != 0) {\n    lVar3 = *(long *)(param_1 + 0x40) + *(long *)(param_3 + 0xb8) * 0x58;\n    dVar5 = DAT_003f9608;\n    dVar6 = DAT_003f9608;\n    if (*(int *)(param_2 + 800) != 0) {\n      dVar5 = DAT_003f9c60 * *(double *)(lVar3 + 0x48);\n      dVar6 = DAT_003f9c60 * *(double *)(param_2 + 0x40);\n    }\n    dVar4 = dVar5 * *(double *)(lVar3 + 0x28) - dVar6 * *(double *)(param_2 + 0x28);\n    dVar4 = dVar4 * dVar4;\n    dVar1 = *(double *)(param_2 + 0x48);\n    if ((((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&\n        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)) &&\n       ((*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)))) {\n      *(double *)(param_2 + 0x48) = dVar4;\n      *(undefined8 *)(param_2 + 0x70) = *(undefined8 *)(param_3 + 0xb8);\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_00267ca8(long param_1,long param_2,long param_3)\n\n{\n  double dVar1;\n  int iVar2;\n  long lVar3;\n  double dVar4;\n  double dVar5;\n  double dVar6;\n  double dVar7;\n  \n  iVar2 = *(int *)(param_2 + 800);\n  lVar3 = 0;\n  do {\n    if (*(long *)(param_3 + 8 + lVar3 * 8) != 0) {\n      FUN_00267ca8(param_1,param_2);\n    }\n    lVar3 = lVar3 + 1;\n  } while (lVar3 < (long)((-(ulong)(iVar2 == 0) & 0xfffffffffffffff8) + 0x10));\n  if (*(long *)(param_3 + 0x88) != 0) {\n    lVar3 = *(long *)(param_1 + 0x40) + *(long *)(param_3 + 0xb8) * 0x58;\n    dVar5 = DAT_003f9608;\n    dVar6 = DAT_003f9608;\n    if (*(int *)(param_2 + 800) != 0) {\n      dVar5 = DAT_003f9c60 * *(double *)(lVar3 + 0x48);\n      dVar6 = DAT_003f9c60 * *(double *)(param_2 + 0x40);\n    }\n    dVar4 = dVar5 * *(double *)(lVar3 + 0x28) - dVar6 * *(double *)(param_2 + 0x28);\n    dVar4 = dVar4 * dVar4;\n    dVar1 = *(double *)(param_2 + 0x48);\n    if ((((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&\n        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)) &&\n       ((*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)))) {\n      *(double *)(param_2 + 0x48) = dVar4;\n      *(undefined8 *)(param_2 + 0x70) = *(undefined8 *)(param_3 + 0xb8);\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00267ca8(long param_1,long param_2,long param_3)" identifier (parameter_list "(long param_1,long param_2,long param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  double dVar1;\n  int iVar2;\n  long lVar3;\n  double dVar4;\n  double dVar5;\n  double dVar6;\n  double dVar7;\n  \n  iVar2 = *(int *)(param_2 + 800);\n  lVar3 = 0;\n  do {\n    if (*(long *)(param_3 + 8 + lVar3 * 8) != 0) {\n      FUN_00267ca8(param_1,param_2);\n    }\n    lVar3 = lVar3 + 1;\n  } while (lVar3 < (long)((-(ulong)(iVar2 == 0) & 0xfffffffffffffff8) + 0x10));\n  if (*(long *)(param_3 + 0x88) != 0) {\n    lVar3 = *(long *)(param_1 + 0x40) + *(long *)(param_3 + 0xb8) * 0x58;\n    dVar5 = DAT_003f9608;\n    dVar6 = DAT_003f9608;\n    if (*(int *)(param_2 + 800) != 0) {\n      dVar5 = DAT_003f9c60 * *(double *)(lVar3 + 0x48);\n      dVar6 = DAT_003f9c60 * *(double *)(param_2 + 0x40);\n    }\n    dVar4 = dVar5 * *(double *)(lVar3 + 0x28) - dVar6 * *(double *)(param_2 + 0x28);\n    dVar4 = dVar4 * dVar4;\n    dVar1 = *(double *)(param_2 + 0x48);\n    if ((((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&\n        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)) &&\n       ((*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)))) {\n      *(double *)(param_2 + 0x48) = dVar4;\n      *(undefined8 *)(param_2 + 0x70) = *(undefined8 *)(param_3 + 0xb8);\n    }\n  }\n  return;\n}" { (declaration "double dVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "double dVar4;" primitive_type identifier ;) (declaration "double dVar5;" primitive_type identifier ;) (declaration "double dVar6;" primitive_type identifier ;) (declaration "double dVar7;" primitive_type identifier ;) (expression_statement "iVar2 = *(int *)(param_2 + 800);" (assignment_expression "iVar2 = *(int *)(param_2 + 800)" identifier = (pointer_expression "*(int *)(param_2 + 800)" * (cast_expression "(int *)(param_2 + 800)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 800)" ( (binary_expression "param_2 + 800" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = 0;" (assignment_expression "lVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n    if (*(long *)(param_3 + 8 + lVar3 * 8) != 0) {\n      FUN_00267ca8(param_1,param_2);\n    }\n    lVar3 = lVar3 + 1;\n  } while (lVar3 < (long)((-(ulong)(iVar2 == 0) & 0xfffffffffffffff8) + 0x10));" do (compound_statement "{\n    if (*(long *)(param_3 + 8 + lVar3 * 8) != 0) {\n      FUN_00267ca8(param_1,param_2);\n    }\n    lVar3 = lVar3 + 1;\n  }" { (if_statement "if (*(long *)(param_3 + 8 + lVar3 * 8) != 0) {\n      FUN_00267ca8(param_1,param_2);\n    }" if (parenthesized_expression "(*(long *)(param_3 + 8 + lVar3 * 8) != 0)" ( (binary_expression "*(long *)(param_3 + 8 + lVar3 * 8) != 0" (pointer_expression "*(long *)(param_3 + 8 + lVar3 * 8)" * (cast_expression "(long *)(param_3 + 8 + lVar3 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8 + lVar3 * 8)" ( (binary_expression "param_3 + 8 + lVar3 * 8" (binary_expression "param_3 + 8" identifier + number_literal) + (binary_expression "lVar3 * 8" identifier * number_literal)) )))) != number_literal) )) (compound_statement "{\n      FUN_00267ca8(param_1,param_2);\n    }" { (expression_statement "FUN_00267ca8(param_1,param_2);" (call_expression "FUN_00267ca8(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier ))) ;) })) (expression_statement "lVar3 = lVar3 + 1;" (assignment_expression "lVar3 = lVar3 + 1" identifier = (binary_expression "lVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar3 < (long)((-(ulong)(iVar2 == 0) & 0xfffffffffffffff8) + 0x10))" ( (binary_expression "lVar3 < (long)((-(ulong)(iVar2 == 0) & 0xfffffffffffffff8) + 0x10)" identifier < (cast_expression "(long)((-(ulong)(iVar2 == 0) & 0xfffffffffffffff8) + 0x10)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "((-(ulong)(iVar2 == 0) & 0xfffffffffffffff8) + 0x10)" ( (binary_expression "(-(ulong)(iVar2 == 0) & 0xfffffffffffffff8) + 0x10" (parenthesized_expression "(-(ulong)(iVar2 == 0) & 0xfffffffffffffff8)" ( (binary_expression "-(ulong)(iVar2 == 0) & 0xfffffffffffffff8" (unary_expression "-(ulong)(iVar2 == 0)" - (call_expression "(ulong)(iVar2 == 0)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )))) & number_literal) )) + number_literal) )))) )) ;) (if_statement "if (*(long *)(param_3 + 0x88) != 0) {\n    lVar3 = *(long *)(param_1 + 0x40) + *(long *)(param_3 + 0xb8) * 0x58;\n    dVar5 = DAT_003f9608;\n    dVar6 = DAT_003f9608;\n    if (*(int *)(param_2 + 800) != 0) {\n      dVar5 = DAT_003f9c60 * *(double *)(lVar3 + 0x48);\n      dVar6 = DAT_003f9c60 * *(double *)(param_2 + 0x40);\n    }\n    dVar4 = dVar5 * *(double *)(lVar3 + 0x28) - dVar6 * *(double *)(param_2 + 0x28);\n    dVar4 = dVar4 * dVar4;\n    dVar1 = *(double *)(param_2 + 0x48);\n    if ((((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&\n        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)) &&\n       ((*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)))) {\n      *(double *)(param_2 + 0x48) = dVar4;\n      *(undefined8 *)(param_2 + 0x70) = *(undefined8 *)(param_3 + 0xb8);\n    }\n  }" if (parenthesized_expression "(*(long *)(param_3 + 0x88) != 0)" ( (binary_expression "*(long *)(param_3 + 0x88) != 0" (pointer_expression "*(long *)(param_3 + 0x88)" * (cast_expression "(long *)(param_3 + 0x88)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x88)" ( (binary_expression "param_3 + 0x88" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    lVar3 = *(long *)(param_1 + 0x40) + *(long *)(param_3 + 0xb8) * 0x58;\n    dVar5 = DAT_003f9608;\n    dVar6 = DAT_003f9608;\n    if (*(int *)(param_2 + 800) != 0) {\n      dVar5 = DAT_003f9c60 * *(double *)(lVar3 + 0x48);\n      dVar6 = DAT_003f9c60 * *(double *)(param_2 + 0x40);\n    }\n    dVar4 = dVar5 * *(double *)(lVar3 + 0x28) - dVar6 * *(double *)(param_2 + 0x28);\n    dVar4 = dVar4 * dVar4;\n    dVar1 = *(double *)(param_2 + 0x48);\n    if ((((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&\n        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)) &&\n       ((*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)))) {\n      *(double *)(param_2 + 0x48) = dVar4;\n      *(undefined8 *)(param_2 + 0x70) = *(undefined8 *)(param_3 + 0xb8);\n    }\n  }" { (expression_statement "lVar3 = *(long *)(param_1 + 0x40) + *(long *)(param_3 + 0xb8) * 0x58;" (assignment_expression "lVar3 = *(long *)(param_1 + 0x40) + *(long *)(param_3 + 0xb8) * 0x58" identifier = (binary_expression "*(long *)(param_1 + 0x40) + *(long *)(param_3 + 0xb8) * 0x58" (pointer_expression "*(long *)(param_1 + 0x40)" * (cast_expression "(long *)(param_1 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) + (binary_expression "*(long *)(param_3 + 0xb8) * 0x58" (pointer_expression "*(long *)(param_3 + 0xb8)" * (cast_expression "(long *)(param_3 + 0xb8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xb8)" ( (binary_expression "param_3 + 0xb8" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "dVar5 = DAT_003f9608;" (assignment_expression "dVar5 = DAT_003f9608" identifier = identifier) ;) (expression_statement "dVar6 = DAT_003f9608;" (assignment_expression "dVar6 = DAT_003f9608" identifier = identifier) ;) (if_statement "if (*(int *)(param_2 + 800) != 0) {\n      dVar5 = DAT_003f9c60 * *(double *)(lVar3 + 0x48);\n      dVar6 = DAT_003f9c60 * *(double *)(param_2 + 0x40);\n    }" if (parenthesized_expression "(*(int *)(param_2 + 800) != 0)" ( (binary_expression "*(int *)(param_2 + 800) != 0" (pointer_expression "*(int *)(param_2 + 800)" * (cast_expression "(int *)(param_2 + 800)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 800)" ( (binary_expression "param_2 + 800" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      dVar5 = DAT_003f9c60 * *(double *)(lVar3 + 0x48);\n      dVar6 = DAT_003f9c60 * *(double *)(param_2 + 0x40);\n    }" { (expression_statement "dVar5 = DAT_003f9c60 * *(double *)(lVar3 + 0x48);" (assignment_expression "dVar5 = DAT_003f9c60 * *(double *)(lVar3 + 0x48)" identifier = (binary_expression "DAT_003f9c60 * *(double *)(lVar3 + 0x48)" identifier * (pointer_expression "*(double *)(lVar3 + 0x48)" * (cast_expression "(double *)(lVar3 + 0x48)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x48)" ( (binary_expression "lVar3 + 0x48" identifier + number_literal) )))))) ;) (expression_statement "dVar6 = DAT_003f9c60 * *(double *)(param_2 + 0x40);" (assignment_expression "dVar6 = DAT_003f9c60 * *(double *)(param_2 + 0x40)" identifier = (binary_expression "DAT_003f9c60 * *(double *)(param_2 + 0x40)" identifier * (pointer_expression "*(double *)(param_2 + 0x40)" * (cast_expression "(double *)(param_2 + 0x40)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x40)" ( (binary_expression "param_2 + 0x40" identifier + number_literal) )))))) ;) })) (expression_statement "dVar4 = dVar5 * *(double *)(lVar3 + 0x28) - dVar6 * *(double *)(param_2 + 0x28);" (assignment_expression "dVar4 = dVar5 * *(double *)(lVar3 + 0x28) - dVar6 * *(double *)(param_2 + 0x28)" identifier = (binary_expression "dVar5 * *(double *)(lVar3 + 0x28) - dVar6 * *(double *)(param_2 + 0x28)" (binary_expression "dVar5 * *(double *)(lVar3 + 0x28)" identifier * (pointer_expression "*(double *)(lVar3 + 0x28)" * (cast_expression "(double *)(lVar3 + 0x28)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x28)" ( (binary_expression "lVar3 + 0x28" identifier + number_literal) ))))) - (binary_expression "dVar6 * *(double *)(param_2 + 0x28)" identifier * (pointer_expression "*(double *)(param_2 + 0x28)" * (cast_expression "(double *)(param_2 + 0x28)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) ))))))) ;) (expression_statement "dVar4 = dVar4 * dVar4;" (assignment_expression "dVar4 = dVar4 * dVar4" identifier = (binary_expression "dVar4 * dVar4" identifier * identifier)) ;) (expression_statement "dVar1 = *(double *)(param_2 + 0x48);" (assignment_expression "dVar1 = *(double *)(param_2 + 0x48)" identifier = (pointer_expression "*(double *)(param_2 + 0x48)" * (cast_expression "(double *)(param_2 + 0x48)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x48)" ( (binary_expression "param_2 + 0x48" identifier + number_literal) ))))) ;) (if_statement "if ((((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&\n        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)) &&\n       ((*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)))) {\n      *(double *)(param_2 + 0x48) = dVar4;\n      *(undefined8 *)(param_2 + 0x70) = *(undefined8 *)(param_3 + 0xb8);\n    }" if (parenthesized_expression "((((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&\n        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)) &&\n       ((*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1))))" ( (binary_expression "(((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&\n        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)) &&\n       ((*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)))" (parenthesized_expression "(((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&\n        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1))" ( (binary_expression "((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&\n        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)" (parenthesized_expression "((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1))" ( (binary_expression "(dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)" (parenthesized_expression "(dVar4 <= dVar1)" ( (binary_expression "dVar4 <= dVar1" identifier <= identifier) )) && (parenthesized_expression "(dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)" ( (comma_expression "dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1" (assignment_expression "dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30)" identifier = (binary_expression "dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30)" (binary_expression "dVar5 * *(double *)(lVar3 + 0x30)" identifier * (pointer_expression "*(double *)(lVar3 + 0x30)" * (cast_expression "(double *)(lVar3 + 0x30)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x30)" ( (binary_expression "lVar3 + 0x30" identifier + number_literal) ))))) - (binary_expression "dVar6 * *(double *)(param_2 + 0x30)" identifier * (pointer_expression "*(double *)(param_2 + 0x30)" * (cast_expression "(double *)(param_2 + 0x30)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) ))))))) , (comma_expression "dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1" (assignment_expression "dVar4 = dVar4 + dVar7 * dVar7" identifier = (binary_expression "dVar4 + dVar7 * dVar7" identifier + (binary_expression "dVar7 * dVar7" identifier * identifier))) , (binary_expression "dVar4 <= dVar1" identifier <= identifier))) ))) )) && (parenthesized_expression "(dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)" ( (comma_expression "dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1" (assignment_expression "dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38)" identifier = (binary_expression "dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38)" (binary_expression "dVar5 * *(double *)(lVar3 + 0x38)" identifier * (pointer_expression "*(double *)(lVar3 + 0x38)" * (cast_expression "(double *)(lVar3 + 0x38)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x38)" ( (binary_expression "lVar3 + 0x38" identifier + number_literal) ))))) - (binary_expression "dVar6 * *(double *)(param_2 + 0x38)" identifier * (pointer_expression "*(double *)(param_2 + 0x38)" * (cast_expression "(double *)(param_2 + 0x38)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) ))))))) , (comma_expression "dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1" (assignment_expression "dVar4 = dVar4 + dVar5 * dVar5" identifier = (binary_expression "dVar4 + dVar5 * dVar5" identifier + (binary_expression "dVar5 * dVar5" identifier * identifier))) , (binary_expression "dVar4 <= dVar1" identifier <= identifier))) ))) )) && (parenthesized_expression "((*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)))" ( (parenthesized_expression "(*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1))" ( (binary_expression "*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)" (binary_expression "*(int *)(param_2 + 800) == 0" (pointer_expression "*(int *)(param_2 + 800)" * (cast_expression "(int *)(param_2 + 800)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 800)" ( (binary_expression "param_2 + 800" identifier + number_literal) )))) == number_literal) || (parenthesized_expression "(dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)" ( (comma_expression "dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1" (assignment_expression "dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40)" identifier = (binary_expression "*(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40)" (pointer_expression "*(double *)(lVar3 + 0x48)" * (cast_expression "(double *)(lVar3 + 0x48)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x48)" ( (binary_expression "lVar3 + 0x48" identifier + number_literal) )))) - (pointer_expression "*(double *)(param_2 + 0x40)" * (cast_expression "(double *)(param_2 + 0x40)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x40)" ( (binary_expression "param_2 + 0x40" identifier + number_literal) )))))) , (comma_expression "dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1" (assignment_expression "dVar4 = dVar4 + dVar5 * dVar5" identifier = (binary_expression "dVar4 + dVar5 * dVar5" identifier + (binary_expression "dVar5 * dVar5" identifier * identifier))) , (binary_expression "dVar4 <= dVar1" identifier <= identifier))) ))) )) ))) )) (compound_statement "{\n      *(double *)(param_2 + 0x48) = dVar4;\n      *(undefined8 *)(param_2 + 0x70) = *(undefined8 *)(param_3 + 0xb8);\n    }" { (expression_statement "*(double *)(param_2 + 0x48) = dVar4;" (assignment_expression "*(double *)(param_2 + 0x48) = dVar4" (pointer_expression "*(double *)(param_2 + 0x48)" * (cast_expression "(double *)(param_2 + 0x48)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x48)" ( (binary_expression "param_2 + 0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(param_2 + 0x70) = *(undefined8 *)(param_3 + 0xb8);" (assignment_expression "*(undefined8 *)(param_2 + 0x70) = *(undefined8 *)(param_3 + 0xb8)" (pointer_expression "*(undefined8 *)(param_2 + 0x70)" * (cast_expression "(undefined8 *)(param_2 + 0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x70)" ( (binary_expression "param_2 + 0x70" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(param_3 + 0xb8)" * (cast_expression "(undefined8 *)(param_3 + 0xb8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xb8)" ( (binary_expression "param_3 + 0xb8" identifier + number_literal) ))))) ;) })) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "GravityType": Some values do not have unique names */\n/* WARNING: Enum "DisposeType": Some values do not have unique names */\n/* WARNING: Enum "ChannelType": Some values do not have unique names */\n/* WARNING: Enum "PixelChannel": Some values do not have unique names */\n\nvoid ClosestColor(Image *image,CubeInfo_conflict *cube_info,NodeInfo_conflict *node_info)\n\n{\n  double dVar1;\n  MagickBooleanType MVar2;\n  size_t sVar3;\n  PixelInfo *pPVar4;\n  long lVar5;\n  double dVar6;\n  double dVar7;\n  double dVar8;\n  double dVar9;\n  \n  MVar2 = cube_info->associate_alpha;\n  lVar5 = 0;\n  do {\n    if (node_info->child[lVar5] != (NodeInfo_conflict *)0x0) {\n      ClosestColor(image,cube_info,node_info->child[lVar5]);\n    }\n    lVar5 = lVar5 + 1;\n  } while (lVar5 < (long)((-(ulong)(MVar2 == MagickFalse) & 0xfffffffffffffff8) + 0x10));\n  if (node_info->number_unique != 0) {\n    sVar3 = node_info->color_number;\n    pPVar4 = image->colormap;\n    dVar7 = DAT_003f9608;\n    dVar8 = DAT_003f9608;\n    if (cube_info->associate_alpha != MagickFalse) {\n      dVar7 = DAT_003f9c60 * pPVar4[sVar3].alpha;\n      dVar8 = DAT_003f9c60 * (cube_info->target).alpha;\n    }\n    dVar6 = dVar7 * pPVar4[sVar3].red - dVar8 * (cube_info->target).red;\n    dVar6 = dVar6 * dVar6;\n    dVar1 = cube_info->distance;\n    if ((((dVar6 <= dVar1) &&\n         (dVar9 = dVar7 * pPVar4[sVar3].green - dVar8 * (cube_info->target).green,\n         dVar6 = dVar6 + dVar9 * dVar9, dVar6 <= dVar1)) &&\n        (dVar7 = dVar7 * pPVar4[sVar3].blue - dVar8 * (cube_info->target).blue,\n        dVar6 = dVar6 + dVar7 * dVar7, dVar6 <= dVar1)) &&\n       ((cube_info->associate_alpha == MagickFalse ||\n        (dVar7 = pPVar4[sVar3].alpha - (cube_info->target).alpha, dVar6 = dVar6 + dVar7 * dVar7,\n        dVar6 <= dVar1)))) {\n      cube_info->distance = dVar6;\n      cube_info->color_number = node_info->color_number;\n    }\n  }\n  return;\n}\n\n" comment comment comment comment (function_definition "void ClosestColor(Image *image,CubeInfo_conflict *cube_info,NodeInfo_conflict *node_info)\n\n{\n  double dVar1;\n  MagickBooleanType MVar2;\n  size_t sVar3;\n  PixelInfo *pPVar4;\n  long lVar5;\n  double dVar6;\n  double dVar7;\n  double dVar8;\n  double dVar9;\n  \n  MVar2 = cube_info->associate_alpha;\n  lVar5 = 0;\n  do {\n    if (node_info->child[lVar5] != (NodeInfo_conflict *)0x0) {\n      ClosestColor(image,cube_info,node_info->child[lVar5]);\n    }\n    lVar5 = lVar5 + 1;\n  } while (lVar5 < (long)((-(ulong)(MVar2 == MagickFalse) & 0xfffffffffffffff8) + 0x10));\n  if (node_info->number_unique != 0) {\n    sVar3 = node_info->color_number;\n    pPVar4 = image->colormap;\n    dVar7 = DAT_003f9608;\n    dVar8 = DAT_003f9608;\n    if (cube_info->associate_alpha != MagickFalse) {\n      dVar7 = DAT_003f9c60 * pPVar4[sVar3].alpha;\n      dVar8 = DAT_003f9c60 * (cube_info->target).alpha;\n    }\n    dVar6 = dVar7 * pPVar4[sVar3].red - dVar8 * (cube_info->target).red;\n    dVar6 = dVar6 * dVar6;\n    dVar1 = cube_info->distance;\n    if ((((dVar6 <= dVar1) &&\n         (dVar9 = dVar7 * pPVar4[sVar3].green - dVar8 * (cube_info->target).green,\n         dVar6 = dVar6 + dVar9 * dVar9, dVar6 <= dVar1)) &&\n        (dVar7 = dVar7 * pPVar4[sVar3].blue - dVar8 * (cube_info->target).blue,\n        dVar6 = dVar6 + dVar7 * dVar7, dVar6 <= dVar1)) &&\n       ((cube_info->associate_alpha == MagickFalse ||\n        (dVar7 = pPVar4[sVar3].alpha - (cube_info->target).alpha, dVar6 = dVar6 + dVar7 * dVar7,\n        dVar6 <= dVar1)))) {\n      cube_info->distance = dVar6;\n      cube_info->color_number = node_info->color_number;\n    }\n  }\n  return;\n}" primitive_type (function_declarator "ClosestColor(Image *image,CubeInfo_conflict *cube_info,NodeInfo_conflict *node_info)" identifier (parameter_list "(Image *image,CubeInfo_conflict *cube_info,NodeInfo_conflict *node_info)" ( (parameter_declaration "Image *image" type_identifier (pointer_declarator "*image" * identifier)) , (parameter_declaration "CubeInfo_conflict *cube_info" type_identifier (pointer_declarator "*cube_info" * identifier)) , (parameter_declaration "NodeInfo_conflict *node_info" type_identifier (pointer_declarator "*node_info" * identifier)) ))) (compound_statement "{\n  double dVar1;\n  MagickBooleanType MVar2;\n  size_t sVar3;\n  PixelInfo *pPVar4;\n  long lVar5;\n  double dVar6;\n  double dVar7;\n  double dVar8;\n  double dVar9;\n  \n  MVar2 = cube_info->associate_alpha;\n  lVar5 = 0;\n  do {\n    if (node_info->child[lVar5] != (NodeInfo_conflict *)0x0) {\n      ClosestColor(image,cube_info,node_info->child[lVar5]);\n    }\n    lVar5 = lVar5 + 1;\n  } while (lVar5 < (long)((-(ulong)(MVar2 == MagickFalse) & 0xfffffffffffffff8) + 0x10));\n  if (node_info->number_unique != 0) {\n    sVar3 = node_info->color_number;\n    pPVar4 = image->colormap;\n    dVar7 = DAT_003f9608;\n    dVar8 = DAT_003f9608;\n    if (cube_info->associate_alpha != MagickFalse) {\n      dVar7 = DAT_003f9c60 * pPVar4[sVar3].alpha;\n      dVar8 = DAT_003f9c60 * (cube_info->target).alpha;\n    }\n    dVar6 = dVar7 * pPVar4[sVar3].red - dVar8 * (cube_info->target).red;\n    dVar6 = dVar6 * dVar6;\n    dVar1 = cube_info->distance;\n    if ((((dVar6 <= dVar1) &&\n         (dVar9 = dVar7 * pPVar4[sVar3].green - dVar8 * (cube_info->target).green,\n         dVar6 = dVar6 + dVar9 * dVar9, dVar6 <= dVar1)) &&\n        (dVar7 = dVar7 * pPVar4[sVar3].blue - dVar8 * (cube_info->target).blue,\n        dVar6 = dVar6 + dVar7 * dVar7, dVar6 <= dVar1)) &&\n       ((cube_info->associate_alpha == MagickFalse ||\n        (dVar7 = pPVar4[sVar3].alpha - (cube_info->target).alpha, dVar6 = dVar6 + dVar7 * dVar7,\n        dVar6 <= dVar1)))) {\n      cube_info->distance = dVar6;\n      cube_info->color_number = node_info->color_number;\n    }\n  }\n  return;\n}" { (declaration "double dVar1;" primitive_type identifier ;) (declaration "MagickBooleanType MVar2;" type_identifier identifier ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "PixelInfo *pPVar4;" type_identifier (pointer_declarator "*pPVar4" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "double dVar6;" primitive_type identifier ;) (declaration "double dVar7;" primitive_type identifier ;) (declaration "double dVar8;" primitive_type identifier ;) (declaration "double dVar9;" primitive_type identifier ;) (expression_statement "MVar2 = cube_info->associate_alpha;" (assignment_expression "MVar2 = cube_info->associate_alpha" identifier = (field_expression "cube_info->associate_alpha" identifier -> field_identifier)) ;) (expression_statement "lVar5 = 0;" (assignment_expression "lVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n    if (node_info->child[lVar5] != (NodeInfo_conflict *)0x0) {\n      ClosestColor(image,cube_info,node_info->child[lVar5]);\n    }\n    lVar5 = lVar5 + 1;\n  } while (lVar5 < (long)((-(ulong)(MVar2 == MagickFalse) & 0xfffffffffffffff8) + 0x10));" do (compound_statement "{\n    if (node_info->child[lVar5] != (NodeInfo_conflict *)0x0) {\n      ClosestColor(image,cube_info,node_info->child[lVar5]);\n    }\n    lVar5 = lVar5 + 1;\n  }" { (if_statement "if (node_info->child[lVar5] != (NodeInfo_conflict *)0x0) {\n      ClosestColor(image,cube_info,node_info->child[lVar5]);\n    }" if (parenthesized_expression "(node_info->child[lVar5] != (NodeInfo_conflict *)0x0)" ( (binary_expression "node_info->child[lVar5] != (NodeInfo_conflict *)0x0" (subscript_expression "node_info->child[lVar5]" (field_expression "node_info->child" identifier -> field_identifier) [ identifier ]) != (cast_expression "(NodeInfo_conflict *)0x0" ( (type_descriptor "NodeInfo_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      ClosestColor(image,cube_info,node_info->child[lVar5]);\n    }" { (expression_statement "ClosestColor(image,cube_info,node_info->child[lVar5]);" (call_expression "ClosestColor(image,cube_info,node_info->child[lVar5])" identifier (argument_list "(image,cube_info,node_info->child[lVar5])" ( identifier , identifier , (subscript_expression "node_info->child[lVar5]" (field_expression "node_info->child" identifier -> field_identifier) [ identifier ]) ))) ;) })) (expression_statement "lVar5 = lVar5 + 1;" (assignment_expression "lVar5 = lVar5 + 1" identifier = (binary_expression "lVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar5 < (long)((-(ulong)(MVar2 == MagickFalse) & 0xfffffffffffffff8) + 0x10))" ( (binary_expression "lVar5 < (long)((-(ulong)(MVar2 == MagickFalse) & 0xfffffffffffffff8) + 0x10)" identifier < (cast_expression "(long)((-(ulong)(MVar2 == MagickFalse) & 0xfffffffffffffff8) + 0x10)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "((-(ulong)(MVar2 == MagickFalse) & 0xfffffffffffffff8) + 0x10)" ( (binary_expression "(-(ulong)(MVar2 == MagickFalse) & 0xfffffffffffffff8) + 0x10" (parenthesized_expression "(-(ulong)(MVar2 == MagickFalse) & 0xfffffffffffffff8)" ( (binary_expression "-(ulong)(MVar2 == MagickFalse) & 0xfffffffffffffff8" (unary_expression "-(ulong)(MVar2 == MagickFalse)" - (call_expression "(ulong)(MVar2 == MagickFalse)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(MVar2 == MagickFalse)" ( (binary_expression "MVar2 == MagickFalse" identifier == identifier) )))) & number_literal) )) + number_literal) )))) )) ;) (if_statement "if (node_info->number_unique != 0) {\n    sVar3 = node_info->color_number;\n    pPVar4 = image->colormap;\n    dVar7 = DAT_003f9608;\n    dVar8 = DAT_003f9608;\n    if (cube_info->associate_alpha != MagickFalse) {\n      dVar7 = DAT_003f9c60 * pPVar4[sVar3].alpha;\n      dVar8 = DAT_003f9c60 * (cube_info->target).alpha;\n    }\n    dVar6 = dVar7 * pPVar4[sVar3].red - dVar8 * (cube_info->target).red;\n    dVar6 = dVar6 * dVar6;\n    dVar1 = cube_info->distance;\n    if ((((dVar6 <= dVar1) &&\n         (dVar9 = dVar7 * pPVar4[sVar3].green - dVar8 * (cube_info->target).green,\n         dVar6 = dVar6 + dVar9 * dVar9, dVar6 <= dVar1)) &&\n        (dVar7 = dVar7 * pPVar4[sVar3].blue - dVar8 * (cube_info->target).blue,\n        dVar6 = dVar6 + dVar7 * dVar7, dVar6 <= dVar1)) &&\n       ((cube_info->associate_alpha == MagickFalse ||\n        (dVar7 = pPVar4[sVar3].alpha - (cube_info->target).alpha, dVar6 = dVar6 + dVar7 * dVar7,\n        dVar6 <= dVar1)))) {\n      cube_info->distance = dVar6;\n      cube_info->color_number = node_info->color_number;\n    }\n  }" if (parenthesized_expression "(node_info->number_unique != 0)" ( (binary_expression "node_info->number_unique != 0" (field_expression "node_info->number_unique" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n    sVar3 = node_info->color_number;\n    pPVar4 = image->colormap;\n    dVar7 = DAT_003f9608;\n    dVar8 = DAT_003f9608;\n    if (cube_info->associate_alpha != MagickFalse) {\n      dVar7 = DAT_003f9c60 * pPVar4[sVar3].alpha;\n      dVar8 = DAT_003f9c60 * (cube_info->target).alpha;\n    }\n    dVar6 = dVar7 * pPVar4[sVar3].red - dVar8 * (cube_info->target).red;\n    dVar6 = dVar6 * dVar6;\n    dVar1 = cube_info->distance;\n    if ((((dVar6 <= dVar1) &&\n         (dVar9 = dVar7 * pPVar4[sVar3].green - dVar8 * (cube_info->target).green,\n         dVar6 = dVar6 + dVar9 * dVar9, dVar6 <= dVar1)) &&\n        (dVar7 = dVar7 * pPVar4[sVar3].blue - dVar8 * (cube_info->target).blue,\n        dVar6 = dVar6 + dVar7 * dVar7, dVar6 <= dVar1)) &&\n       ((cube_info->associate_alpha == MagickFalse ||\n        (dVar7 = pPVar4[sVar3].alpha - (cube_info->target).alpha, dVar6 = dVar6 + dVar7 * dVar7,\n        dVar6 <= dVar1)))) {\n      cube_info->distance = dVar6;\n      cube_info->color_number = node_info->color_number;\n    }\n  }" { (expression_statement "sVar3 = node_info->color_number;" (assignment_expression "sVar3 = node_info->color_number" identifier = (field_expression "node_info->color_number" identifier -> field_identifier)) ;) (expression_statement "pPVar4 = image->colormap;" (assignment_expression "pPVar4 = image->colormap" identifier = (field_expression "image->colormap" identifier -> field_identifier)) ;) (expression_statement "dVar7 = DAT_003f9608;" (assignment_expression "dVar7 = DAT_003f9608" identifier = identifier) ;) (expression_statement "dVar8 = DAT_003f9608;" (assignment_expression "dVar8 = DAT_003f9608" identifier = identifier) ;) (if_statement "if (cube_info->associate_alpha != MagickFalse) {\n      dVar7 = DAT_003f9c60 * pPVar4[sVar3].alpha;\n      dVar8 = DAT_003f9c60 * (cube_info->target).alpha;\n    }" if (parenthesized_expression "(cube_info->associate_alpha != MagickFalse)" ( (binary_expression "cube_info->associate_alpha != MagickFalse" (field_expression "cube_info->associate_alpha" identifier -> field_identifier) != identifier) )) (compound_statement "{\n      dVar7 = DAT_003f9c60 * pPVar4[sVar3].alpha;\n      dVar8 = DAT_003f9c60 * (cube_info->target).alpha;\n    }" { (expression_statement "dVar7 = DAT_003f9c60 * pPVar4[sVar3].alpha;" (assignment_expression "dVar7 = DAT_003f9c60 * pPVar4[sVar3].alpha" identifier = (binary_expression "DAT_003f9c60 * pPVar4[sVar3].alpha" identifier * (field_expression "pPVar4[sVar3].alpha" (subscript_expression "pPVar4[sVar3]" identifier [ identifier ]) . field_identifier))) ;) (expression_statement "dVar8 = DAT_003f9c60 * (cube_info->target).alpha;" (assignment_expression "dVar8 = DAT_003f9c60 * (cube_info->target).alpha" identifier = (binary_expression "DAT_003f9c60 * (cube_info->target).alpha" identifier * (field_expression "(cube_info->target).alpha" (parenthesized_expression "(cube_info->target)" ( (field_expression "cube_info->target" identifier -> field_identifier) )) . field_identifier))) ;) })) (expression_statement "dVar6 = dVar7 * pPVar4[sVar3].red - dVar8 * (cube_info->target).red;" (assignment_expression "dVar6 = dVar7 * pPVar4[sVar3].red - dVar8 * (cube_info->target).red" identifier = (binary_expression "dVar7 * pPVar4[sVar3].red - dVar8 * (cube_info->target).red" (binary_expression "dVar7 * pPVar4[sVar3].red" identifier * (field_expression "pPVar4[sVar3].red" (subscript_expression "pPVar4[sVar3]" identifier [ identifier ]) . field_identifier)) - (binary_expression "dVar8 * (cube_info->target).red" identifier * (field_expression "(cube_info->target).red" (parenthesized_expression "(cube_info->target)" ( (field_expression "cube_info->target" identifier -> field_identifier) )) . field_identifier)))) ;) (expression_statement "dVar6 = dVar6 * dVar6;" (assignment_expression "dVar6 = dVar6 * dVar6" identifier = (binary_expression "dVar6 * dVar6" identifier * identifier)) ;) (expression_statement "dVar1 = cube_info->distance;" (assignment_expression "dVar1 = cube_info->distance" identifier = (field_expression "cube_info->distance" identifier -> field_identifier)) ;) (if_statement "if ((((dVar6 <= dVar1) &&\n         (dVar9 = dVar7 * pPVar4[sVar3].green - dVar8 * (cube_info->target).green,\n         dVar6 = dVar6 + dVar9 * dVar9, dVar6 <= dVar1)) &&\n        (dVar7 = dVar7 * pPVar4[sVar3].blue - dVar8 * (cube_info->target).blue,\n        dVar6 = dVar6 + dVar7 * dVar7, dVar6 <= dVar1)) &&\n       ((cube_info->associate_alpha == MagickFalse ||\n        (dVar7 = pPVar4[sVar3].alpha - (cube_info->target).alpha, dVar6 = dVar6 + dVar7 * dVar7,\n        dVar6 <= dVar1)))) {\n      cube_info->distance = dVar6;\n      cube_info->color_number = node_info->color_number;\n    }" if (parenthesized_expression "((((dVar6 <= dVar1) &&\n         (dVar9 = dVar7 * pPVar4[sVar3].green - dVar8 * (cube_info->target).green,\n         dVar6 = dVar6 + dVar9 * dVar9, dVar6 <= dVar1)) &&\n        (dVar7 = dVar7 * pPVar4[sVar3].blue - dVar8 * (cube_info->target).blue,\n        dVar6 = dVar6 + dVar7 * dVar7, dVar6 <= dVar1)) &&\n       ((cube_info->associate_alpha == MagickFalse ||\n        (dVar7 = pPVar4[sVar3].alpha - (cube_info->target).alpha, dVar6 = dVar6 + dVar7 * dVar7,\n        dVar6 <= dVar1))))" ( (binary_expression "(((dVar6 <= dVar1) &&\n         (dVar9 = dVar7 * pPVar4[sVar3].green - dVar8 * (cube_info->target).green,\n         dVar6 = dVar6 + dVar9 * dVar9, dVar6 <= dVar1)) &&\n        (dVar7 = dVar7 * pPVar4[sVar3].blue - dVar8 * (cube_info->target).blue,\n        dVar6 = dVar6 + dVar7 * dVar7, dVar6 <= dVar1)) &&\n       ((cube_info->associate_alpha == MagickFalse ||\n        (dVar7 = pPVar4[sVar3].alpha - (cube_info->target).alpha, dVar6 = dVar6 + dVar7 * dVar7,\n        dVar6 <= dVar1)))" (parenthesized_expression "(((dVar6 <= dVar1) &&\n         (dVar9 = dVar7 * pPVar4[sVar3].green - dVar8 * (cube_info->target).green,\n         dVar6 = dVar6 + dVar9 * dVar9, dVar6 <= dVar1)) &&\n        (dVar7 = dVar7 * pPVar4[sVar3].blue - dVar8 * (cube_info->target).blue,\n        dVar6 = dVar6 + dVar7 * dVar7, dVar6 <= dVar1))" ( (binary_expression "((dVar6 <= dVar1) &&\n         (dVar9 = dVar7 * pPVar4[sVar3].green - dVar8 * (cube_info->target).green,\n         dVar6 = dVar6 + dVar9 * dVar9, dVar6 <= dVar1)) &&\n        (dVar7 = dVar7 * pPVar4[sVar3].blue - dVar8 * (cube_info->target).blue,\n        dVar6 = dVar6 + dVar7 * dVar7, dVar6 <= dVar1)" (parenthesized_expression "((dVar6 <= dVar1) &&\n         (dVar9 = dVar7 * pPVar4[sVar3].green - dVar8 * (cube_info->target).green,\n         dVar6 = dVar6 + dVar9 * dVar9, dVar6 <= dVar1))" ( (binary_expression "(dVar6 <= dVar1) &&\n         (dVar9 = dVar7 * pPVar4[sVar3].green - dVar8 * (cube_info->target).green,\n         dVar6 = dVar6 + dVar9 * dVar9, dVar6 <= dVar1)" (parenthesized_expression "(dVar6 <= dVar1)" ( (binary_expression "dVar6 <= dVar1" identifier <= identifier) )) && (parenthesized_expression "(dVar9 = dVar7 * pPVar4[sVar3].green - dVar8 * (cube_info->target).green,\n         dVar6 = dVar6 + dVar9 * dVar9, dVar6 <= dVar1)" ( (comma_expression "dVar9 = dVar7 * pPVar4[sVar3].green - dVar8 * (cube_info->target).green,\n         dVar6 = dVar6 + dVar9 * dVar9, dVar6 <= dVar1" (assignment_expression "dVar9 = dVar7 * pPVar4[sVar3].green - dVar8 * (cube_info->target).green" identifier = (binary_expression "dVar7 * pPVar4[sVar3].green - dVar8 * (cube_info->target).green" (binary_expression "dVar7 * pPVar4[sVar3].green" identifier * (field_expression "pPVar4[sVar3].green" (subscript_expression "pPVar4[sVar3]" identifier [ identifier ]) . field_identifier)) - (binary_expression "dVar8 * (cube_info->target).green" identifier * (field_expression "(cube_info->target).green" (parenthesized_expression "(cube_info->target)" ( (field_expression "cube_info->target" identifier -> field_identifier) )) . field_identifier)))) , (comma_expression "dVar6 = dVar6 + dVar9 * dVar9, dVar6 <= dVar1" (assignment_expression "dVar6 = dVar6 + dVar9 * dVar9" identifier = (binary_expression "dVar6 + dVar9 * dVar9" identifier + (binary_expression "dVar9 * dVar9" identifier * identifier))) , (binary_expression "dVar6 <= dVar1" identifier <= identifier))) ))) )) && (parenthesized_expression "(dVar7 = dVar7 * pPVar4[sVar3].blue - dVar8 * (cube_info->target).blue,\n        dVar6 = dVar6 + dVar7 * dVar7, dVar6 <= dVar1)" ( (comma_expression "dVar7 = dVar7 * pPVar4[sVar3].blue - dVar8 * (cube_info->target).blue,\n        dVar6 = dVar6 + dVar7 * dVar7, dVar6 <= dVar1" (assignment_expression "dVar7 = dVar7 * pPVar4[sVar3].blue - dVar8 * (cube_info->target).blue" identifier = (binary_expression "dVar7 * pPVar4[sVar3].blue - dVar8 * (cube_info->target).blue" (binary_expression "dVar7 * pPVar4[sVar3].blue" identifier * (field_expression "pPVar4[sVar3].blue" (subscript_expression "pPVar4[sVar3]" identifier [ identifier ]) . field_identifier)) - (binary_expression "dVar8 * (cube_info->target).blue" identifier * (field_expression "(cube_info->target).blue" (parenthesized_expression "(cube_info->target)" ( (field_expression "cube_info->target" identifier -> field_identifier) )) . field_identifier)))) , (comma_expression "dVar6 = dVar6 + dVar7 * dVar7, dVar6 <= dVar1" (assignment_expression "dVar6 = dVar6 + dVar7 * dVar7" identifier = (binary_expression "dVar6 + dVar7 * dVar7" identifier + (binary_expression "dVar7 * dVar7" identifier * identifier))) , (binary_expression "dVar6 <= dVar1" identifier <= identifier))) ))) )) && (parenthesized_expression "((cube_info->associate_alpha == MagickFalse ||\n        (dVar7 = pPVar4[sVar3].alpha - (cube_info->target).alpha, dVar6 = dVar6 + dVar7 * dVar7,\n        dVar6 <= dVar1)))" ( (parenthesized_expression "(cube_info->associate_alpha == MagickFalse ||\n        (dVar7 = pPVar4[sVar3].alpha - (cube_info->target).alpha, dVar6 = dVar6 + dVar7 * dVar7,\n        dVar6 <= dVar1))" ( (binary_expression "cube_info->associate_alpha == MagickFalse ||\n        (dVar7 = pPVar4[sVar3].alpha - (cube_info->target).alpha, dVar6 = dVar6 + dVar7 * dVar7,\n        dVar6 <= dVar1)" (binary_expression "cube_info->associate_alpha == MagickFalse" (field_expression "cube_info->associate_alpha" identifier -> field_identifier) == identifier) || (parenthesized_expression "(dVar7 = pPVar4[sVar3].alpha - (cube_info->target).alpha, dVar6 = dVar6 + dVar7 * dVar7,\n        dVar6 <= dVar1)" ( (comma_expression "dVar7 = pPVar4[sVar3].alpha - (cube_info->target).alpha, dVar6 = dVar6 + dVar7 * dVar7,\n        dVar6 <= dVar1" (assignment_expression "dVar7 = pPVar4[sVar3].alpha - (cube_info->target).alpha" identifier = (binary_expression "pPVar4[sVar3].alpha - (cube_info->target).alpha" (field_expression "pPVar4[sVar3].alpha" (subscript_expression "pPVar4[sVar3]" identifier [ identifier ]) . field_identifier) - (field_expression "(cube_info->target).alpha" (parenthesized_expression "(cube_info->target)" ( (field_expression "cube_info->target" identifier -> field_identifier) )) . field_identifier))) , (comma_expression "dVar6 = dVar6 + dVar7 * dVar7,\n        dVar6 <= dVar1" (assignment_expression "dVar6 = dVar6 + dVar7 * dVar7" identifier = (binary_expression "dVar6 + dVar7 * dVar7" identifier + (binary_expression "dVar7 * dVar7" identifier * identifier))) , (binary_expression "dVar6 <= dVar1" identifier <= identifier))) ))) )) ))) )) (compound_statement "{\n      cube_info->distance = dVar6;\n      cube_info->color_number = node_info->color_number;\n    }" { (expression_statement "cube_info->distance = dVar6;" (assignment_expression "cube_info->distance = dVar6" (field_expression "cube_info->distance" identifier -> field_identifier) = identifier) ;) (expression_statement "cube_info->color_number = node_info->color_number;" (assignment_expression "cube_info->color_number = node_info->color_number" (field_expression "cube_info->color_number" identifier -> field_identifier) = (field_expression "node_info->color_number" identifier -> field_identifier)) ;) })) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00267ca8(long param_1,long param_2,long param_3)\n\n{\n  double dVar1;\n  int iVar2;\n  long lVar3;\n  double dVar4;\n  double dVar5;\n  double dVar6;\n  double dVar7;\n  \n  iVar2 = *(int *)(param_2 + 800);\n  lVar3 = 0;\n  do {\n    if (*(long *)(param_3 + 8 + lVar3 * 8) != 0) {\n      FUN_00267ca8(param_1,param_2);\n    }\n    lVar3 = lVar3 + 1;\n  } while (lVar3 < (long)((-(ulong)(iVar2 == 0) & 0xfffffffffffffff8) + 0x10));\n  if (*(long *)(param_3 + 0x88) != 0) {\n    lVar3 = *(long *)(param_1 + 0x40) + *(long *)(param_3 + 0xb8) * 0x58;\n    dVar5 = DAT_003f9608;\n    dVar6 = DAT_003f9608;\n    if (*(int *)(param_2 + 800) != 0) {\n      dVar5 = DAT_003f9c60 * *(double *)(lVar3 + 0x48);\n      dVar6 = DAT_003f9c60 * *(double *)(param_2 + 0x40);\n    }\n    dVar4 = dVar5 * *(double *)(lVar3 + 0x28) - dVar6 * *(double *)(param_2 + 0x28);\n    dVar4 = dVar4 * dVar4;\n    dVar1 = *(double *)(param_2 + 0x48);\n    if ((((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&\n        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)) &&\n       ((*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)))) {\n      *(double *)(param_2 + 0x48) = dVar4;\n      *(undefined8 *)(param_2 + 0x70) = *(undefined8 *)(param_3 + 0xb8);\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_00267ca8(long param_1,long param_2,long param_3)\n\n{\n  double dVar1;\n  int iVar2;\n  long lVar3;\n  double dVar4;\n  double dVar5;\n  double dVar6;\n  double dVar7;\n  \n  iVar2 = *(int *)(param_2 + 800);\n  lVar3 = 0;\n  do {\n    if (*(long *)(param_3 + 8 + lVar3 * 8) != 0) {\n      FUN_00267ca8(param_1,param_2);\n    }\n    lVar3 = lVar3 + 1;\n  } while (lVar3 < (long)((-(ulong)(iVar2 == 0) & 0xfffffffffffffff8) + 0x10));\n  if (*(long *)(param_3 + 0x88) != 0) {\n    lVar3 = *(long *)(param_1 + 0x40) + *(long *)(param_3 + 0xb8) * 0x58;\n    dVar5 = DAT_003f9608;\n    dVar6 = DAT_003f9608;\n    if (*(int *)(param_2 + 800) != 0) {\n      dVar5 = DAT_003f9c60 * *(double *)(lVar3 + 0x48);\n      dVar6 = DAT_003f9c60 * *(double *)(param_2 + 0x40);\n    }\n    dVar4 = dVar5 * *(double *)(lVar3 + 0x28) - dVar6 * *(double *)(param_2 + 0x28);\n    dVar4 = dVar4 * dVar4;\n    dVar1 = *(double *)(param_2 + 0x48);\n    if ((((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&\n        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)) &&\n       ((*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)))) {\n      *(double *)(param_2 + 0x48) = dVar4;\n      *(undefined8 *)(param_2 + 0x70) = *(undefined8 *)(param_3 + 0xb8);\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00267ca8(long param_1,long param_2,long param_3)" identifier (parameter_list "(long param_1,long param_2,long param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  double dVar1;\n  int iVar2;\n  long lVar3;\n  double dVar4;\n  double dVar5;\n  double dVar6;\n  double dVar7;\n  \n  iVar2 = *(int *)(param_2 + 800);\n  lVar3 = 0;\n  do {\n    if (*(long *)(param_3 + 8 + lVar3 * 8) != 0) {\n      FUN_00267ca8(param_1,param_2);\n    }\n    lVar3 = lVar3 + 1;\n  } while (lVar3 < (long)((-(ulong)(iVar2 == 0) & 0xfffffffffffffff8) + 0x10));\n  if (*(long *)(param_3 + 0x88) != 0) {\n    lVar3 = *(long *)(param_1 + 0x40) + *(long *)(param_3 + 0xb8) * 0x58;\n    dVar5 = DAT_003f9608;\n    dVar6 = DAT_003f9608;\n    if (*(int *)(param_2 + 800) != 0) {\n      dVar5 = DAT_003f9c60 * *(double *)(lVar3 + 0x48);\n      dVar6 = DAT_003f9c60 * *(double *)(param_2 + 0x40);\n    }\n    dVar4 = dVar5 * *(double *)(lVar3 + 0x28) - dVar6 * *(double *)(param_2 + 0x28);\n    dVar4 = dVar4 * dVar4;\n    dVar1 = *(double *)(param_2 + 0x48);\n    if ((((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&\n        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)) &&\n       ((*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)))) {\n      *(double *)(param_2 + 0x48) = dVar4;\n      *(undefined8 *)(param_2 + 0x70) = *(undefined8 *)(param_3 + 0xb8);\n    }\n  }\n  return;\n}" { (declaration "double dVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "double dVar4;" primitive_type identifier ;) (declaration "double dVar5;" primitive_type identifier ;) (declaration "double dVar6;" primitive_type identifier ;) (declaration "double dVar7;" primitive_type identifier ;) (expression_statement "iVar2 = *(int *)(param_2 + 800);" (assignment_expression "iVar2 = *(int *)(param_2 + 800)" identifier = (pointer_expression "*(int *)(param_2 + 800)" * (cast_expression "(int *)(param_2 + 800)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 800)" ( (binary_expression "param_2 + 800" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = 0;" (assignment_expression "lVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n    if (*(long *)(param_3 + 8 + lVar3 * 8) != 0) {\n      FUN_00267ca8(param_1,param_2);\n    }\n    lVar3 = lVar3 + 1;\n  } while (lVar3 < (long)((-(ulong)(iVar2 == 0) & 0xfffffffffffffff8) + 0x10));" do (compound_statement "{\n    if (*(long *)(param_3 + 8 + lVar3 * 8) != 0) {\n      FUN_00267ca8(param_1,param_2);\n    }\n    lVar3 = lVar3 + 1;\n  }" { (if_statement "if (*(long *)(param_3 + 8 + lVar3 * 8) != 0) {\n      FUN_00267ca8(param_1,param_2);\n    }" if (parenthesized_expression "(*(long *)(param_3 + 8 + lVar3 * 8) != 0)" ( (binary_expression "*(long *)(param_3 + 8 + lVar3 * 8) != 0" (pointer_expression "*(long *)(param_3 + 8 + lVar3 * 8)" * (cast_expression "(long *)(param_3 + 8 + lVar3 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8 + lVar3 * 8)" ( (binary_expression "param_3 + 8 + lVar3 * 8" (binary_expression "param_3 + 8" identifier + number_literal) + (binary_expression "lVar3 * 8" identifier * number_literal)) )))) != number_literal) )) (compound_statement "{\n      FUN_00267ca8(param_1,param_2);\n    }" { (expression_statement "FUN_00267ca8(param_1,param_2);" (call_expression "FUN_00267ca8(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier ))) ;) })) (expression_statement "lVar3 = lVar3 + 1;" (assignment_expression "lVar3 = lVar3 + 1" identifier = (binary_expression "lVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar3 < (long)((-(ulong)(iVar2 == 0) & 0xfffffffffffffff8) + 0x10))" ( (binary_expression "lVar3 < (long)((-(ulong)(iVar2 == 0) & 0xfffffffffffffff8) + 0x10)" identifier < (cast_expression "(long)((-(ulong)(iVar2 == 0) & 0xfffffffffffffff8) + 0x10)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "((-(ulong)(iVar2 == 0) & 0xfffffffffffffff8) + 0x10)" ( (binary_expression "(-(ulong)(iVar2 == 0) & 0xfffffffffffffff8) + 0x10" (parenthesized_expression "(-(ulong)(iVar2 == 0) & 0xfffffffffffffff8)" ( (binary_expression "-(ulong)(iVar2 == 0) & 0xfffffffffffffff8" (unary_expression "-(ulong)(iVar2 == 0)" - (call_expression "(ulong)(iVar2 == 0)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )))) & number_literal) )) + number_literal) )))) )) ;) (if_statement "if (*(long *)(param_3 + 0x88) != 0) {\n    lVar3 = *(long *)(param_1 + 0x40) + *(long *)(param_3 + 0xb8) * 0x58;\n    dVar5 = DAT_003f9608;\n    dVar6 = DAT_003f9608;\n    if (*(int *)(param_2 + 800) != 0) {\n      dVar5 = DAT_003f9c60 * *(double *)(lVar3 + 0x48);\n      dVar6 = DAT_003f9c60 * *(double *)(param_2 + 0x40);\n    }\n    dVar4 = dVar5 * *(double *)(lVar3 + 0x28) - dVar6 * *(double *)(param_2 + 0x28);\n    dVar4 = dVar4 * dVar4;\n    dVar1 = *(double *)(param_2 + 0x48);\n    if ((((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&\n        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)) &&\n       ((*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)))) {\n      *(double *)(param_2 + 0x48) = dVar4;\n      *(undefined8 *)(param_2 + 0x70) = *(undefined8 *)(param_3 + 0xb8);\n    }\n  }" if (parenthesized_expression "(*(long *)(param_3 + 0x88) != 0)" ( (binary_expression "*(long *)(param_3 + 0x88) != 0" (pointer_expression "*(long *)(param_3 + 0x88)" * (cast_expression "(long *)(param_3 + 0x88)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x88)" ( (binary_expression "param_3 + 0x88" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    lVar3 = *(long *)(param_1 + 0x40) + *(long *)(param_3 + 0xb8) * 0x58;\n    dVar5 = DAT_003f9608;\n    dVar6 = DAT_003f9608;\n    if (*(int *)(param_2 + 800) != 0) {\n      dVar5 = DAT_003f9c60 * *(double *)(lVar3 + 0x48);\n      dVar6 = DAT_003f9c60 * *(double *)(param_2 + 0x40);\n    }\n    dVar4 = dVar5 * *(double *)(lVar3 + 0x28) - dVar6 * *(double *)(param_2 + 0x28);\n    dVar4 = dVar4 * dVar4;\n    dVar1 = *(double *)(param_2 + 0x48);\n    if ((((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&\n        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)) &&\n       ((*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)))) {\n      *(double *)(param_2 + 0x48) = dVar4;\n      *(undefined8 *)(param_2 + 0x70) = *(undefined8 *)(param_3 + 0xb8);\n    }\n  }" { (expression_statement "lVar3 = *(long *)(param_1 + 0x40) + *(long *)(param_3 + 0xb8) * 0x58;" (assignment_expression "lVar3 = *(long *)(param_1 + 0x40) + *(long *)(param_3 + 0xb8) * 0x58" identifier = (binary_expression "*(long *)(param_1 + 0x40) + *(long *)(param_3 + 0xb8) * 0x58" (pointer_expression "*(long *)(param_1 + 0x40)" * (cast_expression "(long *)(param_1 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) + (binary_expression "*(long *)(param_3 + 0xb8) * 0x58" (pointer_expression "*(long *)(param_3 + 0xb8)" * (cast_expression "(long *)(param_3 + 0xb8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xb8)" ( (binary_expression "param_3 + 0xb8" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "dVar5 = DAT_003f9608;" (assignment_expression "dVar5 = DAT_003f9608" identifier = identifier) ;) (expression_statement "dVar6 = DAT_003f9608;" (assignment_expression "dVar6 = DAT_003f9608" identifier = identifier) ;) (if_statement "if (*(int *)(param_2 + 800) != 0) {\n      dVar5 = DAT_003f9c60 * *(double *)(lVar3 + 0x48);\n      dVar6 = DAT_003f9c60 * *(double *)(param_2 + 0x40);\n    }" if (parenthesized_expression "(*(int *)(param_2 + 800) != 0)" ( (binary_expression "*(int *)(param_2 + 800) != 0" (pointer_expression "*(int *)(param_2 + 800)" * (cast_expression "(int *)(param_2 + 800)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 800)" ( (binary_expression "param_2 + 800" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      dVar5 = DAT_003f9c60 * *(double *)(lVar3 + 0x48);\n      dVar6 = DAT_003f9c60 * *(double *)(param_2 + 0x40);\n    }" { (expression_statement "dVar5 = DAT_003f9c60 * *(double *)(lVar3 + 0x48);" (assignment_expression "dVar5 = DAT_003f9c60 * *(double *)(lVar3 + 0x48)" identifier = (binary_expression "DAT_003f9c60 * *(double *)(lVar3 + 0x48)" identifier * (pointer_expression "*(double *)(lVar3 + 0x48)" * (cast_expression "(double *)(lVar3 + 0x48)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x48)" ( (binary_expression "lVar3 + 0x48" identifier + number_literal) )))))) ;) (expression_statement "dVar6 = DAT_003f9c60 * *(double *)(param_2 + 0x40);" (assignment_expression "dVar6 = DAT_003f9c60 * *(double *)(param_2 + 0x40)" identifier = (binary_expression "DAT_003f9c60 * *(double *)(param_2 + 0x40)" identifier * (pointer_expression "*(double *)(param_2 + 0x40)" * (cast_expression "(double *)(param_2 + 0x40)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x40)" ( (binary_expression "param_2 + 0x40" identifier + number_literal) )))))) ;) })) (expression_statement "dVar4 = dVar5 * *(double *)(lVar3 + 0x28) - dVar6 * *(double *)(param_2 + 0x28);" (assignment_expression "dVar4 = dVar5 * *(double *)(lVar3 + 0x28) - dVar6 * *(double *)(param_2 + 0x28)" identifier = (binary_expression "dVar5 * *(double *)(lVar3 + 0x28) - dVar6 * *(double *)(param_2 + 0x28)" (binary_expression "dVar5 * *(double *)(lVar3 + 0x28)" identifier * (pointer_expression "*(double *)(lVar3 + 0x28)" * (cast_expression "(double *)(lVar3 + 0x28)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x28)" ( (binary_expression "lVar3 + 0x28" identifier + number_literal) ))))) - (binary_expression "dVar6 * *(double *)(param_2 + 0x28)" identifier * (pointer_expression "*(double *)(param_2 + 0x28)" * (cast_expression "(double *)(param_2 + 0x28)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) ))))))) ;) (expression_statement "dVar4 = dVar4 * dVar4;" (assignment_expression "dVar4 = dVar4 * dVar4" identifier = (binary_expression "dVar4 * dVar4" identifier * identifier)) ;) (expression_statement "dVar1 = *(double *)(param_2 + 0x48);" (assignment_expression "dVar1 = *(double *)(param_2 + 0x48)" identifier = (pointer_expression "*(double *)(param_2 + 0x48)" * (cast_expression "(double *)(param_2 + 0x48)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x48)" ( (binary_expression "param_2 + 0x48" identifier + number_literal) ))))) ;) (if_statement "if ((((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&\n        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)) &&\n       ((*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)))) {\n      *(double *)(param_2 + 0x48) = dVar4;\n      *(undefined8 *)(param_2 + 0x70) = *(undefined8 *)(param_3 + 0xb8);\n    }" if (parenthesized_expression "((((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&\n        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)) &&\n       ((*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1))))" ( (binary_expression "(((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&\n        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)) &&\n       ((*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)))" (parenthesized_expression "(((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&\n        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1))" ( (binary_expression "((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&\n        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)" (parenthesized_expression "((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1))" ( (binary_expression "(dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)" (parenthesized_expression "(dVar4 <= dVar1)" ( (binary_expression "dVar4 <= dVar1" identifier <= identifier) )) && (parenthesized_expression "(dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)" ( (comma_expression "dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1" (assignment_expression "dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30)" identifier = (binary_expression "dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30)" (binary_expression "dVar5 * *(double *)(lVar3 + 0x30)" identifier * (pointer_expression "*(double *)(lVar3 + 0x30)" * (cast_expression "(double *)(lVar3 + 0x30)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x30)" ( (binary_expression "lVar3 + 0x30" identifier + number_literal) ))))) - (binary_expression "dVar6 * *(double *)(param_2 + 0x30)" identifier * (pointer_expression "*(double *)(param_2 + 0x30)" * (cast_expression "(double *)(param_2 + 0x30)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) ))))))) , (comma_expression "dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1" (assignment_expression "dVar4 = dVar4 + dVar7 * dVar7" identifier = (binary_expression "dVar4 + dVar7 * dVar7" identifier + (binary_expression "dVar7 * dVar7" identifier * identifier))) , (binary_expression "dVar4 <= dVar1" identifier <= identifier))) ))) )) && (parenthesized_expression "(dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)" ( (comma_expression "dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1" (assignment_expression "dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38)" identifier = (binary_expression "dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38)" (binary_expression "dVar5 * *(double *)(lVar3 + 0x38)" identifier * (pointer_expression "*(double *)(lVar3 + 0x38)" * (cast_expression "(double *)(lVar3 + 0x38)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x38)" ( (binary_expression "lVar3 + 0x38" identifier + number_literal) ))))) - (binary_expression "dVar6 * *(double *)(param_2 + 0x38)" identifier * (pointer_expression "*(double *)(param_2 + 0x38)" * (cast_expression "(double *)(param_2 + 0x38)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) ))))))) , (comma_expression "dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1" (assignment_expression "dVar4 = dVar4 + dVar5 * dVar5" identifier = (binary_expression "dVar4 + dVar5 * dVar5" identifier + (binary_expression "dVar5 * dVar5" identifier * identifier))) , (binary_expression "dVar4 <= dVar1" identifier <= identifier))) ))) )) && (parenthesized_expression "((*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)))" ( (parenthesized_expression "(*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1))" ( (binary_expression "*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)" (binary_expression "*(int *)(param_2 + 800) == 0" (pointer_expression "*(int *)(param_2 + 800)" * (cast_expression "(int *)(param_2 + 800)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 800)" ( (binary_expression "param_2 + 800" identifier + number_literal) )))) == number_literal) || (parenthesized_expression "(dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)" ( (comma_expression "dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1" (assignment_expression "dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40)" identifier = (binary_expression "*(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40)" (pointer_expression "*(double *)(lVar3 + 0x48)" * (cast_expression "(double *)(lVar3 + 0x48)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x48)" ( (binary_expression "lVar3 + 0x48" identifier + number_literal) )))) - (pointer_expression "*(double *)(param_2 + 0x40)" * (cast_expression "(double *)(param_2 + 0x40)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x40)" ( (binary_expression "param_2 + 0x40" identifier + number_literal) )))))) , (comma_expression "dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1" (assignment_expression "dVar4 = dVar4 + dVar5 * dVar5" identifier = (binary_expression "dVar4 + dVar5 * dVar5" identifier + (binary_expression "dVar5 * dVar5" identifier * identifier))) , (binary_expression "dVar4 <= dVar1" identifier <= identifier))) ))) )) ))) )) (compound_statement "{\n      *(double *)(param_2 + 0x48) = dVar4;\n      *(undefined8 *)(param_2 + 0x70) = *(undefined8 *)(param_3 + 0xb8);\n    }" { (expression_statement "*(double *)(param_2 + 0x48) = dVar4;" (assignment_expression "*(double *)(param_2 + 0x48) = dVar4" (pointer_expression "*(double *)(param_2 + 0x48)" * (cast_expression "(double *)(param_2 + 0x48)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x48)" ( (binary_expression "param_2 + 0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(param_2 + 0x70) = *(undefined8 *)(param_3 + 0xb8);" (assignment_expression "*(undefined8 *)(param_2 + 0x70) = *(undefined8 *)(param_3 + 0xb8)" (pointer_expression "*(undefined8 *)(param_2 + 0x70)" * (cast_expression "(undefined8 *)(param_2 + 0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x70)" ( (binary_expression "param_2 + 0x70" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(param_3 + 0xb8)" * (cast_expression "(undefined8 *)(param_3 + 0xb8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xb8)" ( (binary_expression "param_3 + 0xb8" identifier + number_literal) ))))) ;) })) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) 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 = LIT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == LIT) )))) & LIT) )) + LIT) )))) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) - (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) - (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) , (comma_expression (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * IDENT))) , (binary_expression IDENT <= IDENT))) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) - (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) , (comma_expression (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * IDENT))) , (binary_expression IDENT <= IDENT))) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == 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) )))))) , (comma_expression (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * IDENT))) , (binary_expression IDENT <= IDENT))) ))) )) ))) )) (compound_statement { (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 (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) ))))) ;) })) })) (return_statement return ;) })))
(function_definition "void FUN_00267ca8(long param_1,long param_2,long param_3)\n\n{\n  double dVar1;\n  int iVar2;\n  long lVar3;\n  double dVar4;\n  double dVar5;\n  double dVar6;\n  double dVar7;\n  \n  iVar2 = *(int *)(param_2 + 800);\n  lVar3 = 0;\n  do {\n    if (*(long *)(param_3 + 8 + lVar3 * 8) != 0) {\n      FUN_00267ca8(param_1,param_2);\n    }\n    lVar3 = lVar3 + 1;\n  } while (lVar3 < (long)((-(ulong)(iVar2 == 0) & 0xfffffffffffffff8) + 0x10));\n  if (*(long *)(param_3 + 0x88) != 0) {\n    lVar3 = *(long *)(param_1 + 0x40) + *(long *)(param_3 + 0xb8) * 0x58;\n    dVar5 = DAT_003f9608;\n    dVar6 = DAT_003f9608;\n    if (*(int *)(param_2 + 800) != 0) {\n      dVar5 = DAT_003f9c60 * *(double *)(lVar3 + 0x48);\n      dVar6 = DAT_003f9c60 * *(double *)(param_2 + 0x40);\n    }\n    dVar4 = dVar5 * *(double *)(lVar3 + 0x28) - dVar6 * *(double *)(param_2 + 0x28);\n    dVar4 = dVar4 * dVar4;\n    dVar1 = *(double *)(param_2 + 0x48);\n    if ((((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&\n        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)) &&\n       ((*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)))) {\n      *(double *)(param_2 + 0x48) = dVar4;\n      *(undefined8 *)(param_2 + 0x70) = *(undefined8 *)(param_3 + 0xb8);\n    }\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00267ca8(long param_1,long param_2,long param_3)" (identifier "FUN_00267ca8") (parameter_list "(long param_1,long param_2,long param_3)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) () ")"))) (compound_statement "{\n  double dVar1;\n  int iVar2;\n  long lVar3;\n  double dVar4;\n  double dVar5;\n  double dVar6;\n  double dVar7;\n  \n  iVar2 = *(int *)(param_2 + 800);\n  lVar3 = 0;\n  do {\n    if (*(long *)(param_3 + 8 + lVar3 * 8) != 0) {\n      FUN_00267ca8(param_1,param_2);\n    }\n    lVar3 = lVar3 + 1;\n  } while (lVar3 < (long)((-(ulong)(iVar2 == 0) & 0xfffffffffffffff8) + 0x10));\n  if (*(long *)(param_3 + 0x88) != 0) {\n    lVar3 = *(long *)(param_1 + 0x40) + *(long *)(param_3 + 0xb8) * 0x58;\n    dVar5 = DAT_003f9608;\n    dVar6 = DAT_003f9608;\n    if (*(int *)(param_2 + 800) != 0) {\n      dVar5 = DAT_003f9c60 * *(double *)(lVar3 + 0x48);\n      dVar6 = DAT_003f9c60 * *(double *)(param_2 + 0x40);\n    }\n    dVar4 = dVar5 * *(double *)(lVar3 + 0x28) - dVar6 * *(double *)(param_2 + 0x28);\n    dVar4 = dVar4 * dVar4;\n    dVar1 = *(double *)(param_2 + 0x48);\n    if ((((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&\n        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)) &&\n       ((*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)))) {\n      *(double *)(param_2 + 0x48) = dVar4;\n      *(undefined8 *)(param_2 + 0x70) = *(undefined8 *)(param_3 + 0xb8);\n    }\n  }\n  return;\n}" ({ "{") (declaration "double dVar1;" (primitive_type "double") (identifier "dVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "double dVar4;" (primitive_type "double") (identifier "dVar4") (; ";")) (declaration "double dVar5;" (primitive_type "double") (identifier "dVar5") (; ";")) (declaration "double dVar6;" (primitive_type "double") (identifier "dVar6") (; ";")) (declaration "double dVar7;" (primitive_type "double") (identifier "dVar7") (; ";")) (expression_statement "iVar2 = *(int *)(param_2 + 800);" (assignment_expression "iVar2 = *(int *)(param_2 + 800)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_2 + 800)" (* "*") (cast_expression "(int *)(param_2 + 800)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 800)" (( "(") (binary_expression "param_2 + 800" (identifier "param_2") (+ "+") (number_literal "800")) () ")"))))) (; ";")) (expression_statement "lVar3 = 0;" (assignment_expression "lVar3 = 0" (identifier "lVar3") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n    if (*(long *)(param_3 + 8 + lVar3 * 8) != 0) {\n      FUN_00267ca8(param_1,param_2);\n    }\n    lVar3 = lVar3 + 1;\n  } while (lVar3 < (long)((-(ulong)(iVar2 == 0) & 0xfffffffffffffff8) + 0x10));" (do "do") (compound_statement "{\n    if (*(long *)(param_3 + 8 + lVar3 * 8) != 0) {\n      FUN_00267ca8(param_1,param_2);\n    }\n    lVar3 = lVar3 + 1;\n  }" ({ "{") (if_statement "if (*(long *)(param_3 + 8 + lVar3 * 8) != 0) {\n      FUN_00267ca8(param_1,param_2);\n    }" (if "if") (parenthesized_expression "(*(long *)(param_3 + 8 + lVar3 * 8) != 0)" (( "(") (binary_expression "*(long *)(param_3 + 8 + lVar3 * 8) != 0" (pointer_expression "*(long *)(param_3 + 8 + lVar3 * 8)" (* "*") (cast_expression "(long *)(param_3 + 8 + lVar3 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 8 + lVar3 * 8)" (( "(") (binary_expression "param_3 + 8 + lVar3 * 8" (binary_expression "param_3 + 8" (identifier "param_3") (+ "+") (number_literal "8")) (+ "+") (binary_expression "lVar3 * 8" (identifier "lVar3") (* "*") (number_literal "8"))) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_00267ca8(param_1,param_2);\n    }" ({ "{") (expression_statement "FUN_00267ca8(param_1,param_2);" (call_expression "FUN_00267ca8(param_1,param_2)" (identifier "FUN_00267ca8") (argument_list "(param_1,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") () ")"))) (; ";")) (} "}"))) (expression_statement "lVar3 = lVar3 + 1;" (assignment_expression "lVar3 = lVar3 + 1" (identifier "lVar3") (= "=") (binary_expression "lVar3 + 1" (identifier "lVar3") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar3 < (long)((-(ulong)(iVar2 == 0) & 0xfffffffffffffff8) + 0x10))" (( "(") (binary_expression "lVar3 < (long)((-(ulong)(iVar2 == 0) & 0xfffffffffffffff8) + 0x10)" (identifier "lVar3") (< "<") (cast_expression "(long)((-(ulong)(iVar2 == 0) & 0xfffffffffffffff8) + 0x10)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "((-(ulong)(iVar2 == 0) & 0xfffffffffffffff8) + 0x10)" (( "(") (binary_expression "(-(ulong)(iVar2 == 0) & 0xfffffffffffffff8) + 0x10" (parenthesized_expression "(-(ulong)(iVar2 == 0) & 0xfffffffffffffff8)" (( "(") (binary_expression "-(ulong)(iVar2 == 0) & 0xfffffffffffffff8" (unary_expression "-(ulong)(iVar2 == 0)" (- "-") (call_expression "(ulong)(iVar2 == 0)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")))) (& "&") (number_literal "0xfffffffffffffff8")) () ")")) (+ "+") (number_literal "0x10")) () ")")))) () ")")) (; ";")) (if_statement "if (*(long *)(param_3 + 0x88) != 0) {\n    lVar3 = *(long *)(param_1 + 0x40) + *(long *)(param_3 + 0xb8) * 0x58;\n    dVar5 = DAT_003f9608;\n    dVar6 = DAT_003f9608;\n    if (*(int *)(param_2 + 800) != 0) {\n      dVar5 = DAT_003f9c60 * *(double *)(lVar3 + 0x48);\n      dVar6 = DAT_003f9c60 * *(double *)(param_2 + 0x40);\n    }\n    dVar4 = dVar5 * *(double *)(lVar3 + 0x28) - dVar6 * *(double *)(param_2 + 0x28);\n    dVar4 = dVar4 * dVar4;\n    dVar1 = *(double *)(param_2 + 0x48);\n    if ((((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&\n        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)) &&\n       ((*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)))) {\n      *(double *)(param_2 + 0x48) = dVar4;\n      *(undefined8 *)(param_2 + 0x70) = *(undefined8 *)(param_3 + 0xb8);\n    }\n  }" (if "if") (parenthesized_expression "(*(long *)(param_3 + 0x88) != 0)" (( "(") (binary_expression "*(long *)(param_3 + 0x88) != 0" (pointer_expression "*(long *)(param_3 + 0x88)" (* "*") (cast_expression "(long *)(param_3 + 0x88)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x88)" (( "(") (binary_expression "param_3 + 0x88" (identifier "param_3") (+ "+") (number_literal "0x88")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    lVar3 = *(long *)(param_1 + 0x40) + *(long *)(param_3 + 0xb8) * 0x58;\n    dVar5 = DAT_003f9608;\n    dVar6 = DAT_003f9608;\n    if (*(int *)(param_2 + 800) != 0) {\n      dVar5 = DAT_003f9c60 * *(double *)(lVar3 + 0x48);\n      dVar6 = DAT_003f9c60 * *(double *)(param_2 + 0x40);\n    }\n    dVar4 = dVar5 * *(double *)(lVar3 + 0x28) - dVar6 * *(double *)(param_2 + 0x28);\n    dVar4 = dVar4 * dVar4;\n    dVar1 = *(double *)(param_2 + 0x48);\n    if ((((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&\n        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)) &&\n       ((*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)))) {\n      *(double *)(param_2 + 0x48) = dVar4;\n      *(undefined8 *)(param_2 + 0x70) = *(undefined8 *)(param_3 + 0xb8);\n    }\n  }" ({ "{") (expression_statement "lVar3 = *(long *)(param_1 + 0x40) + *(long *)(param_3 + 0xb8) * 0x58;" (assignment_expression "lVar3 = *(long *)(param_1 + 0x40) + *(long *)(param_3 + 0xb8) * 0x58" (identifier "lVar3") (= "=") (binary_expression "*(long *)(param_1 + 0x40) + *(long *)(param_3 + 0xb8) * 0x58" (pointer_expression "*(long *)(param_1 + 0x40)" (* "*") (cast_expression "(long *)(param_1 + 0x40)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (+ "+") (binary_expression "*(long *)(param_3 + 0xb8) * 0x58" (pointer_expression "*(long *)(param_3 + 0xb8)" (* "*") (cast_expression "(long *)(param_3 + 0xb8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0xb8)" (( "(") (binary_expression "param_3 + 0xb8" (identifier "param_3") (+ "+") (number_literal "0xb8")) () ")")))) (* "*") (number_literal "0x58")))) (; ";")) (expression_statement "dVar5 = DAT_003f9608;" (assignment_expression "dVar5 = DAT_003f9608" (identifier "dVar5") (= "=") (identifier "DAT_003f9608")) (; ";")) (expression_statement "dVar6 = DAT_003f9608;" (assignment_expression "dVar6 = DAT_003f9608" (identifier "dVar6") (= "=") (identifier "DAT_003f9608")) (; ";")) (if_statement "if (*(int *)(param_2 + 800) != 0) {\n      dVar5 = DAT_003f9c60 * *(double *)(lVar3 + 0x48);\n      dVar6 = DAT_003f9c60 * *(double *)(param_2 + 0x40);\n    }" (if "if") (parenthesized_expression "(*(int *)(param_2 + 800) != 0)" (( "(") (binary_expression "*(int *)(param_2 + 800) != 0" (pointer_expression "*(int *)(param_2 + 800)" (* "*") (cast_expression "(int *)(param_2 + 800)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 800)" (( "(") (binary_expression "param_2 + 800" (identifier "param_2") (+ "+") (number_literal "800")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      dVar5 = DAT_003f9c60 * *(double *)(lVar3 + 0x48);\n      dVar6 = DAT_003f9c60 * *(double *)(param_2 + 0x40);\n    }" ({ "{") (expression_statement "dVar5 = DAT_003f9c60 * *(double *)(lVar3 + 0x48);" (assignment_expression "dVar5 = DAT_003f9c60 * *(double *)(lVar3 + 0x48)" (identifier "dVar5") (= "=") (binary_expression "DAT_003f9c60 * *(double *)(lVar3 + 0x48)" (identifier "DAT_003f9c60") (* "*") (pointer_expression "*(double *)(lVar3 + 0x48)" (* "*") (cast_expression "(double *)(lVar3 + 0x48)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x48)" (( "(") (binary_expression "lVar3 + 0x48" (identifier "lVar3") (+ "+") (number_literal "0x48")) () ")")))))) (; ";")) (expression_statement "dVar6 = DAT_003f9c60 * *(double *)(param_2 + 0x40);" (assignment_expression "dVar6 = DAT_003f9c60 * *(double *)(param_2 + 0x40)" (identifier "dVar6") (= "=") (binary_expression "DAT_003f9c60 * *(double *)(param_2 + 0x40)" (identifier "DAT_003f9c60") (* "*") (pointer_expression "*(double *)(param_2 + 0x40)" (* "*") (cast_expression "(double *)(param_2 + 0x40)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x40)" (( "(") (binary_expression "param_2 + 0x40" (identifier "param_2") (+ "+") (number_literal "0x40")) () ")")))))) (; ";")) (} "}"))) (expression_statement "dVar4 = dVar5 * *(double *)(lVar3 + 0x28) - dVar6 * *(double *)(param_2 + 0x28);" (assignment_expression "dVar4 = dVar5 * *(double *)(lVar3 + 0x28) - dVar6 * *(double *)(param_2 + 0x28)" (identifier "dVar4") (= "=") (binary_expression "dVar5 * *(double *)(lVar3 + 0x28) - dVar6 * *(double *)(param_2 + 0x28)" (binary_expression "dVar5 * *(double *)(lVar3 + 0x28)" (identifier "dVar5") (* "*") (pointer_expression "*(double *)(lVar3 + 0x28)" (* "*") (cast_expression "(double *)(lVar3 + 0x28)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x28)" (( "(") (binary_expression "lVar3 + 0x28" (identifier "lVar3") (+ "+") (number_literal "0x28")) () ")"))))) (- "-") (binary_expression "dVar6 * *(double *)(param_2 + 0x28)" (identifier "dVar6") (* "*") (pointer_expression "*(double *)(param_2 + 0x28)" (* "*") (cast_expression "(double *)(param_2 + 0x28)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x28)" (( "(") (binary_expression "param_2 + 0x28" (identifier "param_2") (+ "+") (number_literal "0x28")) () ")"))))))) (; ";")) (expression_statement "dVar4 = dVar4 * dVar4;" (assignment_expression "dVar4 = dVar4 * dVar4" (identifier "dVar4") (= "=") (binary_expression "dVar4 * dVar4" (identifier "dVar4") (* "*") (identifier "dVar4"))) (; ";")) (expression_statement "dVar1 = *(double *)(param_2 + 0x48);" (assignment_expression "dVar1 = *(double *)(param_2 + 0x48)" (identifier "dVar1") (= "=") (pointer_expression "*(double *)(param_2 + 0x48)" (* "*") (cast_expression "(double *)(param_2 + 0x48)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x48)" (( "(") (binary_expression "param_2 + 0x48" (identifier "param_2") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (if_statement "if ((((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&\n        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)) &&\n       ((*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)))) {\n      *(double *)(param_2 + 0x48) = dVar4;\n      *(undefined8 *)(param_2 + 0x70) = *(undefined8 *)(param_3 + 0xb8);\n    }" (if "if") (parenthesized_expression "((((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&\n        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)) &&\n       ((*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1))))" (( "(") (binary_expression "(((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&\n        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)) &&\n       ((*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)))" (parenthesized_expression "(((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&\n        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1))" (( "(") (binary_expression "((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&\n        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)" (parenthesized_expression "((dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1))" (( "(") (binary_expression "(dVar4 <= dVar1) &&\n         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)" (parenthesized_expression "(dVar4 <= dVar1)" (( "(") (binary_expression "dVar4 <= dVar1" (identifier "dVar4") (<= "<=") (identifier "dVar1")) () ")")) (&& "&&") (parenthesized_expression "(dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)" (( "(") (comma_expression "dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),\n         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1" (assignment_expression "dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30)" (identifier "dVar7") (= "=") (binary_expression "dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30)" (binary_expression "dVar5 * *(double *)(lVar3 + 0x30)" (identifier "dVar5") (* "*") (pointer_expression "*(double *)(lVar3 + 0x30)" (* "*") (cast_expression "(double *)(lVar3 + 0x30)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x30)" (( "(") (binary_expression "lVar3 + 0x30" (identifier "lVar3") (+ "+") (number_literal "0x30")) () ")"))))) (- "-") (binary_expression "dVar6 * *(double *)(param_2 + 0x30)" (identifier "dVar6") (* "*") (pointer_expression "*(double *)(param_2 + 0x30)" (* "*") (cast_expression "(double *)(param_2 + 0x30)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x30)" (( "(") (binary_expression "param_2 + 0x30" (identifier "param_2") (+ "+") (number_literal "0x30")) () ")"))))))) (, ",") (comma_expression "dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1" (assignment_expression "dVar4 = dVar4 + dVar7 * dVar7" (identifier "dVar4") (= "=") (binary_expression "dVar4 + dVar7 * dVar7" (identifier "dVar4") (+ "+") (binary_expression "dVar7 * dVar7" (identifier "dVar7") (* "*") (identifier "dVar7")))) (, ",") (binary_expression "dVar4 <= dVar1" (identifier "dVar4") (<= "<=") (identifier "dVar1")))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)" (( "(") (comma_expression "dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1" (assignment_expression "dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38)" (identifier "dVar5") (= "=") (binary_expression "dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38)" (binary_expression "dVar5 * *(double *)(lVar3 + 0x38)" (identifier "dVar5") (* "*") (pointer_expression "*(double *)(lVar3 + 0x38)" (* "*") (cast_expression "(double *)(lVar3 + 0x38)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x38)" (( "(") (binary_expression "lVar3 + 0x38" (identifier "lVar3") (+ "+") (number_literal "0x38")) () ")"))))) (- "-") (binary_expression "dVar6 * *(double *)(param_2 + 0x38)" (identifier "dVar6") (* "*") (pointer_expression "*(double *)(param_2 + 0x38)" (* "*") (cast_expression "(double *)(param_2 + 0x38)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x38)" (( "(") (binary_expression "param_2 + 0x38" (identifier "param_2") (+ "+") (number_literal "0x38")) () ")"))))))) (, ",") (comma_expression "dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1" (assignment_expression "dVar4 = dVar4 + dVar5 * dVar5" (identifier "dVar4") (= "=") (binary_expression "dVar4 + dVar5 * dVar5" (identifier "dVar4") (+ "+") (binary_expression "dVar5 * dVar5" (identifier "dVar5") (* "*") (identifier "dVar5")))) (, ",") (binary_expression "dVar4 <= dVar1" (identifier "dVar4") (<= "<=") (identifier "dVar1")))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)))" (( "(") (parenthesized_expression "(*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1))" (( "(") (binary_expression "*(int *)(param_2 + 800) == 0 ||\n        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)" (binary_expression "*(int *)(param_2 + 800) == 0" (pointer_expression "*(int *)(param_2 + 800)" (* "*") (cast_expression "(int *)(param_2 + 800)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 800)" (( "(") (binary_expression "param_2 + 800" (identifier "param_2") (+ "+") (number_literal "800")) () ")")))) (== "==") (number_literal "0")) (|| "||") (parenthesized_expression "(dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)" (( "(") (comma_expression "dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),\n        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1" (assignment_expression "dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40)" (identifier "dVar5") (= "=") (binary_expression "*(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40)" (pointer_expression "*(double *)(lVar3 + 0x48)" (* "*") (cast_expression "(double *)(lVar3 + 0x48)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x48)" (( "(") (binary_expression "lVar3 + 0x48" (identifier "lVar3") (+ "+") (number_literal "0x48")) () ")")))) (- "-") (pointer_expression "*(double *)(param_2 + 0x40)" (* "*") (cast_expression "(double *)(param_2 + 0x40)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x40)" (( "(") (binary_expression "param_2 + 0x40" (identifier "param_2") (+ "+") (number_literal "0x40")) () ")")))))) (, ",") (comma_expression "dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1" (assignment_expression "dVar4 = dVar4 + dVar5 * dVar5" (identifier "dVar4") (= "=") (binary_expression "dVar4 + dVar5 * dVar5" (identifier "dVar4") (+ "+") (binary_expression "dVar5 * dVar5" (identifier "dVar5") (* "*") (identifier "dVar5")))) (, ",") (binary_expression "dVar4 <= dVar1" (identifier "dVar4") (<= "<=") (identifier "dVar1")))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n      *(double *)(param_2 + 0x48) = dVar4;\n      *(undefined8 *)(param_2 + 0x70) = *(undefined8 *)(param_3 + 0xb8);\n    }" ({ "{") (expression_statement "*(double *)(param_2 + 0x48) = dVar4;" (assignment_expression "*(double *)(param_2 + 0x48) = dVar4" (pointer_expression "*(double *)(param_2 + 0x48)" (* "*") (cast_expression "(double *)(param_2 + 0x48)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x48)" (( "(") (binary_expression "param_2 + 0x48" (identifier "param_2") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (identifier "dVar4")) (; ";")) (expression_statement "*(undefined8 *)(param_2 + 0x70) = *(undefined8 *)(param_3 + 0xb8);" (assignment_expression "*(undefined8 *)(param_2 + 0x70) = *(undefined8 *)(param_3 + 0xb8)" (pointer_expression "*(undefined8 *)(param_2 + 0x70)" (* "*") (cast_expression "(undefined8 *)(param_2 + 0x70)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x70)" (( "(") (binary_expression "param_2 + 0x70" (identifier "param_2") (+ "+") (number_literal "0x70")) () ")")))) (= "=") (pointer_expression "*(undefined8 *)(param_3 + 0xb8)" (* "*") (cast_expression "(undefined8 *)(param_3 + 0xb8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0xb8)" (( "(") (binary_expression "param_3 + 0xb8" (identifier "param_3") (+ "+") (number_literal "0xb8")) () ")"))))) (; ";")) (} "}"))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Enum "GravityType": Some values do not have unique names */
/* WARNING: Enum "DisposeType": Some values do not have unique names */
/* WARNING: Enum "ChannelType": Some values do not have unique names */
/* WARNING: Enum "PixelChannel": Some values do not have unique names */

void function_1(type_1 *image,type_2 *cube_info,type_3 *node_info)

{
  double var_8;
  type_4 var_2;
  size_t sVar3;
  type_5 *pPVar4;
  long var_1;
  double var_7;
  double var_5;
  double var_6;
  double var_9;
  
  var_2 = cube_info->associate_alpha;
  var_1 = 0;
  do {
    if (node_info->child[var_1] != (type_3 *)0x0) {
      function_1(image,cube_info,node_info->child[var_1]);
    }
    var_1 = var_1 + 1;
  } while (var_1 < (long)((-(ulong)(var_2 == var_3) & 0xfffffffffffffff8) + 0x10));
  if (node_info->number_unique != 0) {
    sVar3 = node_info->color_number;
    pPVar4 = image->colormap;
    var_5 = DAT_003f9608;
    var_6 = DAT_003f9608;
    if (cube_info->associate_alpha != var_3) {
      var_5 = var_4 * pPVar4[sVar3].alpha;
      var_6 = var_4 * (cube_info->target).alpha;
    }
    var_7 = var_5 * pPVar4[sVar3].red - var_6 * (cube_info->target).red;
    var_7 = var_7 * var_7;
    var_8 = cube_info->distance;
    if ((((var_7 <= var_8) &&
         (var_9 = var_5 * pPVar4[sVar3].green - var_6 * (cube_info->target).green,
         var_7 = var_7 + var_9 * var_9, var_7 <= var_8)) &&
        (var_5 = var_5 * pPVar4[sVar3].blue - var_6 * (cube_info->target).blue,
        var_7 = var_7 + var_5 * var_5, var_7 <= var_8)) &&
       ((cube_info->associate_alpha == var_3 ||
        (var_5 = pPVar4[sVar3].alpha - (cube_info->target).alpha, var_7 = var_7 + var_5 * var_5,
        var_7 <= var_8)))) {
      cube_info->distance = var_7;
      cube_info->color_number = node_info->color_number;
    }
  }
  return;
}


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

void MASKED(long param_1,long param_2,long param_3)

{
  double dVar1;
  int iVar2;
  long lVar3;
  double dVar4;
  double dVar5;
  double dVar6;
  double dVar7;
  
  iVar2 = *(int *)(param_2 + 800);
  lVar3 = 0;
  do {
    if (*(long *)(param_3 + 8 + lVar3 * 8) != 0) {
      MASKED(param_1,param_2);
    }
    lVar3 = lVar3 + 1;
  } while (lVar3 < (long)((-(ulong)(iVar2 == 0) & 0xfffffffffffffff8) + 0x10));
  if (*(long *)(param_3 + 0x88) != 0) {
    lVar3 = *(long *)(param_1 + 0x40) + *(long *)(param_3 + 0xb8) * 0x58;
    dVar5 = DAT_003f9608;
    dVar6 = DAT_003f9608;
    if (*(int *)(param_2 + 800) != 0) {
      dVar5 = DAT_003f9c60 * *(double *)(lVar3 + 0x48);
      dVar6 = DAT_003f9c60 * *(double *)(param_2 + 0x40);
    }
    dVar4 = dVar5 * *(double *)(lVar3 + 0x28) - dVar6 * *(double *)(param_2 + 0x28);
    dVar4 = dVar4 * dVar4;
    dVar1 = *(double *)(param_2 + 0x48);
    if ((((dVar4 <= dVar1) &&
         (dVar7 = dVar5 * *(double *)(lVar3 + 0x30) - dVar6 * *(double *)(param_2 + 0x30),
         dVar4 = dVar4 + dVar7 * dVar7, dVar4 <= dVar1)) &&
        (dVar5 = dVar5 * *(double *)(lVar3 + 0x38) - dVar6 * *(double *)(param_2 + 0x38),
        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)) &&
       ((*(int *)(param_2 + 800) == 0 ||
        (dVar5 = *(double *)(lVar3 + 0x48) - *(double *)(param_2 + 0x40),
        dVar4 = dVar4 + dVar5 * dVar5, dVar4 <= dVar1)))) {
      *(double *)(param_2 + 0x48) = dVar4;
      *(undefined8 *)(param_2 + 0x70) = *(undefined8 *)(param_3 + 0xb8);
    }
  }
  return;
}

