
NodeInfo_conflict *
GetNodeInfo(CubeInfo_conflict *cube_info,size_t id,size_t level,NodeInfo_conflict *parent)

{
  Nodes_conflict *pNVar1;
  NodeInfo_conflict *pNVar2;
  long lVar3;
  _NodeInfo_conflict **pp_Var4;
  byte bVar5;
  
  bVar5 = 0;
  if (cube_info->free_nodes == 0) {
    pNVar1 = (Nodes_conflict *)AcquireMagickMemory(0x10);
    if (pNVar1 == (Nodes_conflict *)0x0) {
      return (NodeInfo_conflict *)0x0;
    }
    pNVar2 = (NodeInfo_conflict *)AcquireQuantumMemory(0x780,0xd0);
    pNVar1->nodes = pNVar2;
    if (pNVar2 == (NodeInfo_conflict *)0x0) {
      return (NodeInfo_conflict *)0x0;
    }
    pNVar1->next = cube_info->node_queue;
    cube_info->node_queue = pNVar1;
    cube_info->next_node = pNVar2;
    cube_info->free_nodes = 0x780;
  }
  cube_info->nodes = cube_info->nodes + 1;
  cube_info->free_nodes = cube_info->free_nodes - 1;
  pNVar2 = cube_info->next_node;
  cube_info->next_node = pNVar2 + 1;
  pp_Var4 = pNVar2->child;
  for (lVar3 = 0x17; lVar3 != 0; lVar3 = lVar3 + -1) {
    *pp_Var4 = (_NodeInfo_conflict *)0x0;
    pp_Var4 = pp_Var4 + (ulong)bVar5 * -2 + 1;
  }
  pNVar2->parent = parent;
  pNVar2->id = id;
  pNVar2->level = level;
  return pNVar2;
}



undefined8 * FUN_00268499(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 *puVar1;
  long *plVar2;
  long lVar3;
  undefined8 *puVar4;
  byte bVar5;
  
  bVar5 = 0;
  if (*(long *)(param_1 + 0x68) == 0) {
    plVar2 = (long *)AcquireMagickMemory(0x10);
    if (plVar2 == (long *)0x0) {
      return (undefined8 *)0x0;
    }
    lVar3 = AcquireQuantumMemory(0x780,0xd0);
    *plVar2 = lVar3;
    if (lVar3 == 0) {
      return (undefined8 *)0x0;
    }
    plVar2[1] = *(long *)(param_1 + 0x80);
    *(long **)(param_1 + 0x80) = plVar2;
    *(long *)(param_1 + 0x78) = lVar3;
    *(undefined8 *)(param_1 + 0x68) = 0x780;
  }
  *(long *)(param_1 + 0x60) = *(long *)(param_1 + 0x60) + 1;
  *(long *)(param_1 + 0x68) = *(long *)(param_1 + 0x68) + -1;
  puVar1 = *(undefined8 **)(param_1 + 0x78);
  *(undefined8 **)(param_1 + 0x78) = puVar1 + 0x1a;
  puVar4 = puVar1 + 1;
  for (lVar3 = 0x17; lVar3 != 0; lVar3 = lVar3 + -1) {
    *puVar4 = 0;
    puVar4 = puVar4 + (ulong)bVar5 * -2 + 1;
  }
  *puVar1 = param_4;
  puVar1[0x18] = param_2;
  puVar1[0x19] = param_3;
  return puVar1;
}


PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
MOV RBX,RDI
MOV R12,RSI
MOV RBP,RDX
MOV R13,RCX
CMP qword ptr [RDI + 0x68],0x0
JNZ 0x00268502
MOV EDI,0x10
CALL 0x00149df0
MOV R14,RAX
TEST RAX,RAX
JZ 0x0026854c
MOV ESI,0xd0
MOV EDI,0x780
CALL 0x0014af40
MOV RDX,RAX
MOV qword ptr [R14],RAX
TEST RAX,RAX
JZ 0x00268540
MOV RAX,qword ptr [RBX + 0x80]
MOV qword ptr [R14 + 0x8],RAX
MOV qword ptr [RBX + 0x80],R14
MOV qword ptr [RBX + 0x78],RDX
MOV qword ptr [RBX + 0x68],0x780
ADD qword ptr [RBX + 0x60],0x1
SUB qword ptr [RBX + 0x68],0x1
MOV RDX,qword ptr [RBX + 0x78]
LEA RAX,[RDX + 0xd0]
MOV qword ptr [RBX + 0x78],RAX
LEA RSI,[RDX + 0x8]
MOV ECX,0x17
MOV EAX,0x0
MOV RDI,RSI
STOSQ.REP RDI
MOV qword ptr [RDX],R13
MOV qword ptr [RDX + 0xc0],R12
MOV qword ptr [RDX + 0xc8],RBP
MOV RAX,RDX
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
MOV EDX,0x0
JMP 0x00268540
(translation_unit "undefined8 * FUN_00268499(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)\n\n{\n  undefined8 *puVar1;\n  long *plVar2;\n  long lVar3;\n  undefined8 *puVar4;\n  byte bVar5;\n  \n  bVar5 = 0;\n  if (*(long *)(param_1 + 0x68) == 0) {\n    plVar2 = (long *)AcquireMagickMemory(0x10);\n    if (plVar2 == (long *)0x0) {\n      return (undefined8 *)0x0;\n    }\n    lVar3 = AcquireQuantumMemory(0x780,0xd0);\n    *plVar2 = lVar3;\n    if (lVar3 == 0) {\n      return (undefined8 *)0x0;\n    }\n    plVar2[1] = *(long *)(param_1 + 0x80);\n    *(long **)(param_1 + 0x80) = plVar2;\n    *(long *)(param_1 + 0x78) = lVar3;\n    *(undefined8 *)(param_1 + 0x68) = 0x780;\n  }\n  *(long *)(param_1 + 0x60) = *(long *)(param_1 + 0x60) + 1;\n  *(long *)(param_1 + 0x68) = *(long *)(param_1 + 0x68) + -1;\n  puVar1 = *(undefined8 **)(param_1 + 0x78);\n  *(undefined8 **)(param_1 + 0x78) = puVar1 + 0x1a;\n  puVar4 = puVar1 + 1;\n  for (lVar3 = 0x17; lVar3 != 0; lVar3 = lVar3 + -1) {\n    *puVar4 = 0;\n    puVar4 = puVar4 + (ulong)bVar5 * -2 + 1;\n  }\n  *puVar1 = param_4;\n  puVar1[0x18] = param_2;\n  puVar1[0x19] = param_3;\n  return puVar1;\n}\n\n" (function_definition "undefined8 * FUN_00268499(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)\n\n{\n  undefined8 *puVar1;\n  long *plVar2;\n  long lVar3;\n  undefined8 *puVar4;\n  byte bVar5;\n  \n  bVar5 = 0;\n  if (*(long *)(param_1 + 0x68) == 0) {\n    plVar2 = (long *)AcquireMagickMemory(0x10);\n    if (plVar2 == (long *)0x0) {\n      return (undefined8 *)0x0;\n    }\n    lVar3 = AcquireQuantumMemory(0x780,0xd0);\n    *plVar2 = lVar3;\n    if (lVar3 == 0) {\n      return (undefined8 *)0x0;\n    }\n    plVar2[1] = *(long *)(param_1 + 0x80);\n    *(long **)(param_1 + 0x80) = plVar2;\n    *(long *)(param_1 + 0x78) = lVar3;\n    *(undefined8 *)(param_1 + 0x68) = 0x780;\n  }\n  *(long *)(param_1 + 0x60) = *(long *)(param_1 + 0x60) + 1;\n  *(long *)(param_1 + 0x68) = *(long *)(param_1 + 0x68) + -1;\n  puVar1 = *(undefined8 **)(param_1 + 0x78);\n  *(undefined8 **)(param_1 + 0x78) = puVar1 + 0x1a;\n  puVar4 = puVar1 + 1;\n  for (lVar3 = 0x17; lVar3 != 0; lVar3 = lVar3 + -1) {\n    *puVar4 = 0;\n    puVar4 = puVar4 + (ulong)bVar5 * -2 + 1;\n  }\n  *puVar1 = param_4;\n  puVar1[0x18] = param_2;\n  puVar1[0x19] = param_3;\n  return puVar1;\n}" type_identifier (pointer_declarator "* FUN_00268499(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)" * (function_declarator "FUN_00268499(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)" identifier (parameter_list "(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) )))) (compound_statement "{\n  undefined8 *puVar1;\n  long *plVar2;\n  long lVar3;\n  undefined8 *puVar4;\n  byte bVar5;\n  \n  bVar5 = 0;\n  if (*(long *)(param_1 + 0x68) == 0) {\n    plVar2 = (long *)AcquireMagickMemory(0x10);\n    if (plVar2 == (long *)0x0) {\n      return (undefined8 *)0x0;\n    }\n    lVar3 = AcquireQuantumMemory(0x780,0xd0);\n    *plVar2 = lVar3;\n    if (lVar3 == 0) {\n      return (undefined8 *)0x0;\n    }\n    plVar2[1] = *(long *)(param_1 + 0x80);\n    *(long **)(param_1 + 0x80) = plVar2;\n    *(long *)(param_1 + 0x78) = lVar3;\n    *(undefined8 *)(param_1 + 0x68) = 0x780;\n  }\n  *(long *)(param_1 + 0x60) = *(long *)(param_1 + 0x60) + 1;\n  *(long *)(param_1 + 0x68) = *(long *)(param_1 + 0x68) + -1;\n  puVar1 = *(undefined8 **)(param_1 + 0x78);\n  *(undefined8 **)(param_1 + 0x78) = puVar1 + 0x1a;\n  puVar4 = puVar1 + 1;\n  for (lVar3 = 0x17; lVar3 != 0; lVar3 = lVar3 + -1) {\n    *puVar4 = 0;\n    puVar4 = puVar4 + (ulong)bVar5 * -2 + 1;\n  }\n  *puVar1 = param_4;\n  puVar1[0x18] = param_2;\n  puVar1[0x19] = param_3;\n  return puVar1;\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "byte bVar5;" type_identifier identifier ;) (expression_statement "bVar5 = 0;" (assignment_expression "bVar5 = 0" identifier = number_literal) ;) (if_statement "if (*(long *)(param_1 + 0x68) == 0) {\n    plVar2 = (long *)AcquireMagickMemory(0x10);\n    if (plVar2 == (long *)0x0) {\n      return (undefined8 *)0x0;\n    }\n    lVar3 = AcquireQuantumMemory(0x780,0xd0);\n    *plVar2 = lVar3;\n    if (lVar3 == 0) {\n      return (undefined8 *)0x0;\n    }\n    plVar2[1] = *(long *)(param_1 + 0x80);\n    *(long **)(param_1 + 0x80) = plVar2;\n    *(long *)(param_1 + 0x78) = lVar3;\n    *(undefined8 *)(param_1 + 0x68) = 0x780;\n  }" if (parenthesized_expression "(*(long *)(param_1 + 0x68) == 0)" ( (binary_expression "*(long *)(param_1 + 0x68) == 0" (pointer_expression "*(long *)(param_1 + 0x68)" * (cast_expression "(long *)(param_1 + 0x68)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    plVar2 = (long *)AcquireMagickMemory(0x10);\n    if (plVar2 == (long *)0x0) {\n      return (undefined8 *)0x0;\n    }\n    lVar3 = AcquireQuantumMemory(0x780,0xd0);\n    *plVar2 = lVar3;\n    if (lVar3 == 0) {\n      return (undefined8 *)0x0;\n    }\n    plVar2[1] = *(long *)(param_1 + 0x80);\n    *(long **)(param_1 + 0x80) = plVar2;\n    *(long *)(param_1 + 0x78) = lVar3;\n    *(undefined8 *)(param_1 + 0x68) = 0x780;\n  }" { (expression_statement "plVar2 = (long *)AcquireMagickMemory(0x10);" (assignment_expression "plVar2 = (long *)AcquireMagickMemory(0x10)" identifier = (cast_expression "(long *)AcquireMagickMemory(0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "AcquireMagickMemory(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (if_statement "if (plVar2 == (long *)0x0) {\n      return (undefined8 *)0x0;\n    }" if (parenthesized_expression "(plVar2 == (long *)0x0)" ( (binary_expression "plVar2 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return (undefined8 *)0x0;\n    }" { (return_statement "return (undefined8 *)0x0;" return (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "lVar3 = AcquireQuantumMemory(0x780,0xd0);" (assignment_expression "lVar3 = AcquireQuantumMemory(0x780,0xd0)" identifier = (call_expression "AcquireQuantumMemory(0x780,0xd0)" identifier (argument_list "(0x780,0xd0)" ( number_literal , number_literal )))) ;) (expression_statement "*plVar2 = lVar3;" (assignment_expression "*plVar2 = lVar3" (pointer_expression "*plVar2" * identifier) = identifier) ;) (if_statement "if (lVar3 == 0) {\n      return (undefined8 *)0x0;\n    }" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return (undefined8 *)0x0;\n    }" { (return_statement "return (undefined8 *)0x0;" return (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "plVar2[1] = *(long *)(param_1 + 0x80);" (assignment_expression "plVar2[1] = *(long *)(param_1 + 0x80)" (subscript_expression "plVar2[1]" identifier [ number_literal ]) = (pointer_expression "*(long *)(param_1 + 0x80)" * (cast_expression "(long *)(param_1 + 0x80)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) ))))) ;) (expression_statement "*(long **)(param_1 + 0x80) = plVar2;" (assignment_expression "*(long **)(param_1 + 0x80) = plVar2" (pointer_expression "*(long **)(param_1 + 0x80)" * (cast_expression "(long **)(param_1 + 0x80)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(long *)(param_1 + 0x78) = lVar3;" (assignment_expression "*(long *)(param_1 + 0x78) = lVar3" (pointer_expression "*(long *)(param_1 + 0x78)" * (cast_expression "(long *)(param_1 + 0x78)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(param_1 + 0x68) = 0x780;" (assignment_expression "*(undefined8 *)(param_1 + 0x68) = 0x780" (pointer_expression "*(undefined8 *)(param_1 + 0x68)" * (cast_expression "(undefined8 *)(param_1 + 0x68)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "*(long *)(param_1 + 0x60) = *(long *)(param_1 + 0x60) + 1;" (assignment_expression "*(long *)(param_1 + 0x60) = *(long *)(param_1 + 0x60) + 1" (pointer_expression "*(long *)(param_1 + 0x60)" * (cast_expression "(long *)(param_1 + 0x60)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) = (binary_expression "*(long *)(param_1 + 0x60) + 1" (pointer_expression "*(long *)(param_1 + 0x60)" * (cast_expression "(long *)(param_1 + 0x60)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(long *)(param_1 + 0x68) = *(long *)(param_1 + 0x68) + -1;" (assignment_expression "*(long *)(param_1 + 0x68) = *(long *)(param_1 + 0x68) + -1" (pointer_expression "*(long *)(param_1 + 0x68)" * (cast_expression "(long *)(param_1 + 0x68)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) )))) = (binary_expression "*(long *)(param_1 + 0x68) + -1" (pointer_expression "*(long *)(param_1 + 0x68)" * (cast_expression "(long *)(param_1 + 0x68)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "puVar1 = *(undefined8 **)(param_1 + 0x78);" (assignment_expression "puVar1 = *(undefined8 **)(param_1 + 0x78)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 0x78)" * (cast_expression "(undefined8 **)(param_1 + 0x78)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 **)(param_1 + 0x78) = puVar1 + 0x1a;" (assignment_expression "*(undefined8 **)(param_1 + 0x78) = puVar1 + 0x1a" (pointer_expression "*(undefined8 **)(param_1 + 0x78)" * (cast_expression "(undefined8 **)(param_1 + 0x78)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) )))) = (binary_expression "puVar1 + 0x1a" identifier + number_literal)) ;) (expression_statement "puVar4 = puVar1 + 1;" (assignment_expression "puVar4 = puVar1 + 1" identifier = (binary_expression "puVar1 + 1" identifier + number_literal)) ;) (for_statement "for (lVar3 = 0x17; lVar3 != 0; lVar3 = lVar3 + -1) {\n    *puVar4 = 0;\n    puVar4 = puVar4 + (ulong)bVar5 * -2 + 1;\n  }" for ( (assignment_expression "lVar3 = 0x17" identifier = number_literal) ; (binary_expression "lVar3 != 0" identifier != number_literal) ; (assignment_expression "lVar3 = lVar3 + -1" identifier = (binary_expression "lVar3 + -1" identifier + number_literal)) ) (compound_statement "{\n    *puVar4 = 0;\n    puVar4 = puVar4 + (ulong)bVar5 * -2 + 1;\n  }" { (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "puVar4 = puVar4 + (ulong)bVar5 * -2 + 1;" (assignment_expression "puVar4 = puVar4 + (ulong)bVar5 * -2 + 1" identifier = (binary_expression "puVar4 + (ulong)bVar5 * -2 + 1" (binary_expression "puVar4 + (ulong)bVar5 * -2" identifier + (binary_expression "(ulong)bVar5 * -2" (cast_expression "(ulong)bVar5" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "*puVar1 = param_4;" (assignment_expression "*puVar1 = param_4" (pointer_expression "*puVar1" * identifier) = identifier) ;) (expression_statement "puVar1[0x18] = param_2;" (assignment_expression "puVar1[0x18] = param_2" (subscript_expression "puVar1[0x18]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[0x19] = param_3;" (assignment_expression "puVar1[0x19] = param_3" (subscript_expression "puVar1[0x19]" identifier [ number_literal ]) = identifier) ;) (return_statement "return puVar1;" return identifier ;) })))
(translation_unit "NodeInfo_conflict *\nGetNodeInfo(CubeInfo_conflict *cube_info,size_t id,size_t level,NodeInfo_conflict *parent)\n\n{\n  Nodes_conflict *pNVar1;\n  NodeInfo_conflict *pNVar2;\n  long lVar3;\n  _NodeInfo_conflict **pp_Var4;\n  byte bVar5;\n  \n  bVar5 = 0;\n  if (cube_info->free_nodes == 0) {\n    pNVar1 = (Nodes_conflict *)AcquireMagickMemory(0x10);\n    if (pNVar1 == (Nodes_conflict *)0x0) {\n      return (NodeInfo_conflict *)0x0;\n    }\n    pNVar2 = (NodeInfo_conflict *)AcquireQuantumMemory(0x780,0xd0);\n    pNVar1->nodes = pNVar2;\n    if (pNVar2 == (NodeInfo_conflict *)0x0) {\n      return (NodeInfo_conflict *)0x0;\n    }\n    pNVar1->next = cube_info->node_queue;\n    cube_info->node_queue = pNVar1;\n    cube_info->next_node = pNVar2;\n    cube_info->free_nodes = 0x780;\n  }\n  cube_info->nodes = cube_info->nodes + 1;\n  cube_info->free_nodes = cube_info->free_nodes - 1;\n  pNVar2 = cube_info->next_node;\n  cube_info->next_node = pNVar2 + 1;\n  pp_Var4 = pNVar2->child;\n  for (lVar3 = 0x17; lVar3 != 0; lVar3 = lVar3 + -1) {\n    *pp_Var4 = (_NodeInfo_conflict *)0x0;\n    pp_Var4 = pp_Var4 + (ulong)bVar5 * -2 + 1;\n  }\n  pNVar2->parent = parent;\n  pNVar2->id = id;\n  pNVar2->level = level;\n  return pNVar2;\n}\n\n" (function_definition "NodeInfo_conflict *\nGetNodeInfo(CubeInfo_conflict *cube_info,size_t id,size_t level,NodeInfo_conflict *parent)\n\n{\n  Nodes_conflict *pNVar1;\n  NodeInfo_conflict *pNVar2;\n  long lVar3;\n  _NodeInfo_conflict **pp_Var4;\n  byte bVar5;\n  \n  bVar5 = 0;\n  if (cube_info->free_nodes == 0) {\n    pNVar1 = (Nodes_conflict *)AcquireMagickMemory(0x10);\n    if (pNVar1 == (Nodes_conflict *)0x0) {\n      return (NodeInfo_conflict *)0x0;\n    }\n    pNVar2 = (NodeInfo_conflict *)AcquireQuantumMemory(0x780,0xd0);\n    pNVar1->nodes = pNVar2;\n    if (pNVar2 == (NodeInfo_conflict *)0x0) {\n      return (NodeInfo_conflict *)0x0;\n    }\n    pNVar1->next = cube_info->node_queue;\n    cube_info->node_queue = pNVar1;\n    cube_info->next_node = pNVar2;\n    cube_info->free_nodes = 0x780;\n  }\n  cube_info->nodes = cube_info->nodes + 1;\n  cube_info->free_nodes = cube_info->free_nodes - 1;\n  pNVar2 = cube_info->next_node;\n  cube_info->next_node = pNVar2 + 1;\n  pp_Var4 = pNVar2->child;\n  for (lVar3 = 0x17; lVar3 != 0; lVar3 = lVar3 + -1) {\n    *pp_Var4 = (_NodeInfo_conflict *)0x0;\n    pp_Var4 = pp_Var4 + (ulong)bVar5 * -2 + 1;\n  }\n  pNVar2->parent = parent;\n  pNVar2->id = id;\n  pNVar2->level = level;\n  return pNVar2;\n}" type_identifier (pointer_declarator "*\nGetNodeInfo(CubeInfo_conflict *cube_info,size_t id,size_t level,NodeInfo_conflict *parent)" * (function_declarator "GetNodeInfo(CubeInfo_conflict *cube_info,size_t id,size_t level,NodeInfo_conflict *parent)" identifier (parameter_list "(CubeInfo_conflict *cube_info,size_t id,size_t level,NodeInfo_conflict *parent)" ( (parameter_declaration "CubeInfo_conflict *cube_info" type_identifier (pointer_declarator "*cube_info" * identifier)) , (parameter_declaration "size_t id" primitive_type identifier) , (parameter_declaration "size_t level" primitive_type identifier) , (parameter_declaration "NodeInfo_conflict *parent" type_identifier (pointer_declarator "*parent" * identifier)) )))) (compound_statement "{\n  Nodes_conflict *pNVar1;\n  NodeInfo_conflict *pNVar2;\n  long lVar3;\n  _NodeInfo_conflict **pp_Var4;\n  byte bVar5;\n  \n  bVar5 = 0;\n  if (cube_info->free_nodes == 0) {\n    pNVar1 = (Nodes_conflict *)AcquireMagickMemory(0x10);\n    if (pNVar1 == (Nodes_conflict *)0x0) {\n      return (NodeInfo_conflict *)0x0;\n    }\n    pNVar2 = (NodeInfo_conflict *)AcquireQuantumMemory(0x780,0xd0);\n    pNVar1->nodes = pNVar2;\n    if (pNVar2 == (NodeInfo_conflict *)0x0) {\n      return (NodeInfo_conflict *)0x0;\n    }\n    pNVar1->next = cube_info->node_queue;\n    cube_info->node_queue = pNVar1;\n    cube_info->next_node = pNVar2;\n    cube_info->free_nodes = 0x780;\n  }\n  cube_info->nodes = cube_info->nodes + 1;\n  cube_info->free_nodes = cube_info->free_nodes - 1;\n  pNVar2 = cube_info->next_node;\n  cube_info->next_node = pNVar2 + 1;\n  pp_Var4 = pNVar2->child;\n  for (lVar3 = 0x17; lVar3 != 0; lVar3 = lVar3 + -1) {\n    *pp_Var4 = (_NodeInfo_conflict *)0x0;\n    pp_Var4 = pp_Var4 + (ulong)bVar5 * -2 + 1;\n  }\n  pNVar2->parent = parent;\n  pNVar2->id = id;\n  pNVar2->level = level;\n  return pNVar2;\n}" { (declaration "Nodes_conflict *pNVar1;" type_identifier (pointer_declarator "*pNVar1" * identifier) ;) (declaration "NodeInfo_conflict *pNVar2;" type_identifier (pointer_declarator "*pNVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "_NodeInfo_conflict **pp_Var4;" type_identifier (pointer_declarator "**pp_Var4" * (pointer_declarator "*pp_Var4" * identifier)) ;) (declaration "byte bVar5;" type_identifier identifier ;) (expression_statement "bVar5 = 0;" (assignment_expression "bVar5 = 0" identifier = number_literal) ;) (if_statement "if (cube_info->free_nodes == 0) {\n    pNVar1 = (Nodes_conflict *)AcquireMagickMemory(0x10);\n    if (pNVar1 == (Nodes_conflict *)0x0) {\n      return (NodeInfo_conflict *)0x0;\n    }\n    pNVar2 = (NodeInfo_conflict *)AcquireQuantumMemory(0x780,0xd0);\n    pNVar1->nodes = pNVar2;\n    if (pNVar2 == (NodeInfo_conflict *)0x0) {\n      return (NodeInfo_conflict *)0x0;\n    }\n    pNVar1->next = cube_info->node_queue;\n    cube_info->node_queue = pNVar1;\n    cube_info->next_node = pNVar2;\n    cube_info->free_nodes = 0x780;\n  }" if (parenthesized_expression "(cube_info->free_nodes == 0)" ( (binary_expression "cube_info->free_nodes == 0" (field_expression "cube_info->free_nodes" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n    pNVar1 = (Nodes_conflict *)AcquireMagickMemory(0x10);\n    if (pNVar1 == (Nodes_conflict *)0x0) {\n      return (NodeInfo_conflict *)0x0;\n    }\n    pNVar2 = (NodeInfo_conflict *)AcquireQuantumMemory(0x780,0xd0);\n    pNVar1->nodes = pNVar2;\n    if (pNVar2 == (NodeInfo_conflict *)0x0) {\n      return (NodeInfo_conflict *)0x0;\n    }\n    pNVar1->next = cube_info->node_queue;\n    cube_info->node_queue = pNVar1;\n    cube_info->next_node = pNVar2;\n    cube_info->free_nodes = 0x780;\n  }" { (expression_statement "pNVar1 = (Nodes_conflict *)AcquireMagickMemory(0x10);" (assignment_expression "pNVar1 = (Nodes_conflict *)AcquireMagickMemory(0x10)" identifier = (cast_expression "(Nodes_conflict *)AcquireMagickMemory(0x10)" ( (type_descriptor "Nodes_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "AcquireMagickMemory(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (if_statement "if (pNVar1 == (Nodes_conflict *)0x0) {\n      return (NodeInfo_conflict *)0x0;\n    }" if (parenthesized_expression "(pNVar1 == (Nodes_conflict *)0x0)" ( (binary_expression "pNVar1 == (Nodes_conflict *)0x0" identifier == (cast_expression "(Nodes_conflict *)0x0" ( (type_descriptor "Nodes_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return (NodeInfo_conflict *)0x0;\n    }" { (return_statement "return (NodeInfo_conflict *)0x0;" return (cast_expression "(NodeInfo_conflict *)0x0" ( (type_descriptor "NodeInfo_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "pNVar2 = (NodeInfo_conflict *)AcquireQuantumMemory(0x780,0xd0);" (assignment_expression "pNVar2 = (NodeInfo_conflict *)AcquireQuantumMemory(0x780,0xd0)" identifier = (cast_expression "(NodeInfo_conflict *)AcquireQuantumMemory(0x780,0xd0)" ( (type_descriptor "NodeInfo_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "AcquireQuantumMemory(0x780,0xd0)" identifier (argument_list "(0x780,0xd0)" ( number_literal , number_literal ))))) ;) (expression_statement "pNVar1->nodes = pNVar2;" (assignment_expression "pNVar1->nodes = pNVar2" (field_expression "pNVar1->nodes" identifier -> field_identifier) = identifier) ;) (if_statement "if (pNVar2 == (NodeInfo_conflict *)0x0) {\n      return (NodeInfo_conflict *)0x0;\n    }" if (parenthesized_expression "(pNVar2 == (NodeInfo_conflict *)0x0)" ( (binary_expression "pNVar2 == (NodeInfo_conflict *)0x0" identifier == (cast_expression "(NodeInfo_conflict *)0x0" ( (type_descriptor "NodeInfo_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return (NodeInfo_conflict *)0x0;\n    }" { (return_statement "return (NodeInfo_conflict *)0x0;" return (cast_expression "(NodeInfo_conflict *)0x0" ( (type_descriptor "NodeInfo_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "pNVar1->next = cube_info->node_queue;" (assignment_expression "pNVar1->next = cube_info->node_queue" (field_expression "pNVar1->next" identifier -> field_identifier) = (field_expression "cube_info->node_queue" identifier -> field_identifier)) ;) (expression_statement "cube_info->node_queue = pNVar1;" (assignment_expression "cube_info->node_queue = pNVar1" (field_expression "cube_info->node_queue" identifier -> field_identifier) = identifier) ;) (expression_statement "cube_info->next_node = pNVar2;" (assignment_expression "cube_info->next_node = pNVar2" (field_expression "cube_info->next_node" identifier -> field_identifier) = identifier) ;) (expression_statement "cube_info->free_nodes = 0x780;" (assignment_expression "cube_info->free_nodes = 0x780" (field_expression "cube_info->free_nodes" identifier -> field_identifier) = number_literal) ;) })) (expression_statement "cube_info->nodes = cube_info->nodes + 1;" (assignment_expression "cube_info->nodes = cube_info->nodes + 1" (field_expression "cube_info->nodes" identifier -> field_identifier) = (binary_expression "cube_info->nodes + 1" (field_expression "cube_info->nodes" identifier -> field_identifier) + number_literal)) ;) (expression_statement "cube_info->free_nodes = cube_info->free_nodes - 1;" (assignment_expression "cube_info->free_nodes = cube_info->free_nodes - 1" (field_expression "cube_info->free_nodes" identifier -> field_identifier) = (binary_expression "cube_info->free_nodes - 1" (field_expression "cube_info->free_nodes" identifier -> field_identifier) - number_literal)) ;) (expression_statement "pNVar2 = cube_info->next_node;" (assignment_expression "pNVar2 = cube_info->next_node" identifier = (field_expression "cube_info->next_node" identifier -> field_identifier)) ;) (expression_statement "cube_info->next_node = pNVar2 + 1;" (assignment_expression "cube_info->next_node = pNVar2 + 1" (field_expression "cube_info->next_node" identifier -> field_identifier) = (binary_expression "pNVar2 + 1" identifier + number_literal)) ;) (expression_statement "pp_Var4 = pNVar2->child;" (assignment_expression "pp_Var4 = pNVar2->child" identifier = (field_expression "pNVar2->child" identifier -> field_identifier)) ;) (for_statement "for (lVar3 = 0x17; lVar3 != 0; lVar3 = lVar3 + -1) {\n    *pp_Var4 = (_NodeInfo_conflict *)0x0;\n    pp_Var4 = pp_Var4 + (ulong)bVar5 * -2 + 1;\n  }" for ( (assignment_expression "lVar3 = 0x17" identifier = number_literal) ; (binary_expression "lVar3 != 0" identifier != number_literal) ; (assignment_expression "lVar3 = lVar3 + -1" identifier = (binary_expression "lVar3 + -1" identifier + number_literal)) ) (compound_statement "{\n    *pp_Var4 = (_NodeInfo_conflict *)0x0;\n    pp_Var4 = pp_Var4 + (ulong)bVar5 * -2 + 1;\n  }" { (expression_statement "*pp_Var4 = (_NodeInfo_conflict *)0x0;" (assignment_expression "*pp_Var4 = (_NodeInfo_conflict *)0x0" (pointer_expression "*pp_Var4" * identifier) = (cast_expression "(_NodeInfo_conflict *)0x0" ( (type_descriptor "_NodeInfo_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pp_Var4 = pp_Var4 + (ulong)bVar5 * -2 + 1;" (assignment_expression "pp_Var4 = pp_Var4 + (ulong)bVar5 * -2 + 1" identifier = (binary_expression "pp_Var4 + (ulong)bVar5 * -2 + 1" (binary_expression "pp_Var4 + (ulong)bVar5 * -2" identifier + (binary_expression "(ulong)bVar5 * -2" (cast_expression "(ulong)bVar5" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "pNVar2->parent = parent;" (assignment_expression "pNVar2->parent = parent" (field_expression "pNVar2->parent" identifier -> field_identifier) = identifier) ;) (expression_statement "pNVar2->id = id;" (assignment_expression "pNVar2->id = id" (field_expression "pNVar2->id" identifier -> field_identifier) = identifier) ;) (expression_statement "pNVar2->level = level;" (assignment_expression "pNVar2->level = level" (field_expression "pNVar2->level" identifier -> field_identifier) = identifier) ;) (return_statement "return pNVar2;" return identifier ;) })))
(translation_unit "undefined8 * FUN_00268499(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)\n\n{\n  undefined8 *puVar1;\n  long *plVar2;\n  long lVar3;\n  undefined8 *puVar4;\n  byte bVar5;\n  \n  bVar5 = 0;\n  if (*(long *)(param_1 + 0x68) == 0) {\n    plVar2 = (long *)AcquireMagickMemory(0x10);\n    if (plVar2 == (long *)0x0) {\n      return (undefined8 *)0x0;\n    }\n    lVar3 = AcquireQuantumMemory(0x780,0xd0);\n    *plVar2 = lVar3;\n    if (lVar3 == 0) {\n      return (undefined8 *)0x0;\n    }\n    plVar2[1] = *(long *)(param_1 + 0x80);\n    *(long **)(param_1 + 0x80) = plVar2;\n    *(long *)(param_1 + 0x78) = lVar3;\n    *(undefined8 *)(param_1 + 0x68) = 0x780;\n  }\n  *(long *)(param_1 + 0x60) = *(long *)(param_1 + 0x60) + 1;\n  *(long *)(param_1 + 0x68) = *(long *)(param_1 + 0x68) + -1;\n  puVar1 = *(undefined8 **)(param_1 + 0x78);\n  *(undefined8 **)(param_1 + 0x78) = puVar1 + 0x1a;\n  puVar4 = puVar1 + 1;\n  for (lVar3 = 0x17; lVar3 != 0; lVar3 = lVar3 + -1) {\n    *puVar4 = 0;\n    puVar4 = puVar4 + (ulong)bVar5 * -2 + 1;\n  }\n  *puVar1 = param_4;\n  puVar1[0x18] = param_2;\n  puVar1[0x19] = param_3;\n  return puVar1;\n}\n\n" (function_definition "undefined8 * FUN_00268499(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)\n\n{\n  undefined8 *puVar1;\n  long *plVar2;\n  long lVar3;\n  undefined8 *puVar4;\n  byte bVar5;\n  \n  bVar5 = 0;\n  if (*(long *)(param_1 + 0x68) == 0) {\n    plVar2 = (long *)AcquireMagickMemory(0x10);\n    if (plVar2 == (long *)0x0) {\n      return (undefined8 *)0x0;\n    }\n    lVar3 = AcquireQuantumMemory(0x780,0xd0);\n    *plVar2 = lVar3;\n    if (lVar3 == 0) {\n      return (undefined8 *)0x0;\n    }\n    plVar2[1] = *(long *)(param_1 + 0x80);\n    *(long **)(param_1 + 0x80) = plVar2;\n    *(long *)(param_1 + 0x78) = lVar3;\n    *(undefined8 *)(param_1 + 0x68) = 0x780;\n  }\n  *(long *)(param_1 + 0x60) = *(long *)(param_1 + 0x60) + 1;\n  *(long *)(param_1 + 0x68) = *(long *)(param_1 + 0x68) + -1;\n  puVar1 = *(undefined8 **)(param_1 + 0x78);\n  *(undefined8 **)(param_1 + 0x78) = puVar1 + 0x1a;\n  puVar4 = puVar1 + 1;\n  for (lVar3 = 0x17; lVar3 != 0; lVar3 = lVar3 + -1) {\n    *puVar4 = 0;\n    puVar4 = puVar4 + (ulong)bVar5 * -2 + 1;\n  }\n  *puVar1 = param_4;\n  puVar1[0x18] = param_2;\n  puVar1[0x19] = param_3;\n  return puVar1;\n}" type_identifier (pointer_declarator "* FUN_00268499(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)" * (function_declarator "FUN_00268499(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)" identifier (parameter_list "(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) )))) (compound_statement "{\n  undefined8 *puVar1;\n  long *plVar2;\n  long lVar3;\n  undefined8 *puVar4;\n  byte bVar5;\n  \n  bVar5 = 0;\n  if (*(long *)(param_1 + 0x68) == 0) {\n    plVar2 = (long *)AcquireMagickMemory(0x10);\n    if (plVar2 == (long *)0x0) {\n      return (undefined8 *)0x0;\n    }\n    lVar3 = AcquireQuantumMemory(0x780,0xd0);\n    *plVar2 = lVar3;\n    if (lVar3 == 0) {\n      return (undefined8 *)0x0;\n    }\n    plVar2[1] = *(long *)(param_1 + 0x80);\n    *(long **)(param_1 + 0x80) = plVar2;\n    *(long *)(param_1 + 0x78) = lVar3;\n    *(undefined8 *)(param_1 + 0x68) = 0x780;\n  }\n  *(long *)(param_1 + 0x60) = *(long *)(param_1 + 0x60) + 1;\n  *(long *)(param_1 + 0x68) = *(long *)(param_1 + 0x68) + -1;\n  puVar1 = *(undefined8 **)(param_1 + 0x78);\n  *(undefined8 **)(param_1 + 0x78) = puVar1 + 0x1a;\n  puVar4 = puVar1 + 1;\n  for (lVar3 = 0x17; lVar3 != 0; lVar3 = lVar3 + -1) {\n    *puVar4 = 0;\n    puVar4 = puVar4 + (ulong)bVar5 * -2 + 1;\n  }\n  *puVar1 = param_4;\n  puVar1[0x18] = param_2;\n  puVar1[0x19] = param_3;\n  return puVar1;\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "byte bVar5;" type_identifier identifier ;) (expression_statement "bVar5 = 0;" (assignment_expression "bVar5 = 0" identifier = number_literal) ;) (if_statement "if (*(long *)(param_1 + 0x68) == 0) {\n    plVar2 = (long *)AcquireMagickMemory(0x10);\n    if (plVar2 == (long *)0x0) {\n      return (undefined8 *)0x0;\n    }\n    lVar3 = AcquireQuantumMemory(0x780,0xd0);\n    *plVar2 = lVar3;\n    if (lVar3 == 0) {\n      return (undefined8 *)0x0;\n    }\n    plVar2[1] = *(long *)(param_1 + 0x80);\n    *(long **)(param_1 + 0x80) = plVar2;\n    *(long *)(param_1 + 0x78) = lVar3;\n    *(undefined8 *)(param_1 + 0x68) = 0x780;\n  }" if (parenthesized_expression "(*(long *)(param_1 + 0x68) == 0)" ( (binary_expression "*(long *)(param_1 + 0x68) == 0" (pointer_expression "*(long *)(param_1 + 0x68)" * (cast_expression "(long *)(param_1 + 0x68)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    plVar2 = (long *)AcquireMagickMemory(0x10);\n    if (plVar2 == (long *)0x0) {\n      return (undefined8 *)0x0;\n    }\n    lVar3 = AcquireQuantumMemory(0x780,0xd0);\n    *plVar2 = lVar3;\n    if (lVar3 == 0) {\n      return (undefined8 *)0x0;\n    }\n    plVar2[1] = *(long *)(param_1 + 0x80);\n    *(long **)(param_1 + 0x80) = plVar2;\n    *(long *)(param_1 + 0x78) = lVar3;\n    *(undefined8 *)(param_1 + 0x68) = 0x780;\n  }" { (expression_statement "plVar2 = (long *)AcquireMagickMemory(0x10);" (assignment_expression "plVar2 = (long *)AcquireMagickMemory(0x10)" identifier = (cast_expression "(long *)AcquireMagickMemory(0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "AcquireMagickMemory(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (if_statement "if (plVar2 == (long *)0x0) {\n      return (undefined8 *)0x0;\n    }" if (parenthesized_expression "(plVar2 == (long *)0x0)" ( (binary_expression "plVar2 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return (undefined8 *)0x0;\n    }" { (return_statement "return (undefined8 *)0x0;" return (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "lVar3 = AcquireQuantumMemory(0x780,0xd0);" (assignment_expression "lVar3 = AcquireQuantumMemory(0x780,0xd0)" identifier = (call_expression "AcquireQuantumMemory(0x780,0xd0)" identifier (argument_list "(0x780,0xd0)" ( number_literal , number_literal )))) ;) (expression_statement "*plVar2 = lVar3;" (assignment_expression "*plVar2 = lVar3" (pointer_expression "*plVar2" * identifier) = identifier) ;) (if_statement "if (lVar3 == 0) {\n      return (undefined8 *)0x0;\n    }" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return (undefined8 *)0x0;\n    }" { (return_statement "return (undefined8 *)0x0;" return (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "plVar2[1] = *(long *)(param_1 + 0x80);" (assignment_expression "plVar2[1] = *(long *)(param_1 + 0x80)" (subscript_expression "plVar2[1]" identifier [ number_literal ]) = (pointer_expression "*(long *)(param_1 + 0x80)" * (cast_expression "(long *)(param_1 + 0x80)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) ))))) ;) (expression_statement "*(long **)(param_1 + 0x80) = plVar2;" (assignment_expression "*(long **)(param_1 + 0x80) = plVar2" (pointer_expression "*(long **)(param_1 + 0x80)" * (cast_expression "(long **)(param_1 + 0x80)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(long *)(param_1 + 0x78) = lVar3;" (assignment_expression "*(long *)(param_1 + 0x78) = lVar3" (pointer_expression "*(long *)(param_1 + 0x78)" * (cast_expression "(long *)(param_1 + 0x78)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(param_1 + 0x68) = 0x780;" (assignment_expression "*(undefined8 *)(param_1 + 0x68) = 0x780" (pointer_expression "*(undefined8 *)(param_1 + 0x68)" * (cast_expression "(undefined8 *)(param_1 + 0x68)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "*(long *)(param_1 + 0x60) = *(long *)(param_1 + 0x60) + 1;" (assignment_expression "*(long *)(param_1 + 0x60) = *(long *)(param_1 + 0x60) + 1" (pointer_expression "*(long *)(param_1 + 0x60)" * (cast_expression "(long *)(param_1 + 0x60)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) = (binary_expression "*(long *)(param_1 + 0x60) + 1" (pointer_expression "*(long *)(param_1 + 0x60)" * (cast_expression "(long *)(param_1 + 0x60)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(long *)(param_1 + 0x68) = *(long *)(param_1 + 0x68) + -1;" (assignment_expression "*(long *)(param_1 + 0x68) = *(long *)(param_1 + 0x68) + -1" (pointer_expression "*(long *)(param_1 + 0x68)" * (cast_expression "(long *)(param_1 + 0x68)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) )))) = (binary_expression "*(long *)(param_1 + 0x68) + -1" (pointer_expression "*(long *)(param_1 + 0x68)" * (cast_expression "(long *)(param_1 + 0x68)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "puVar1 = *(undefined8 **)(param_1 + 0x78);" (assignment_expression "puVar1 = *(undefined8 **)(param_1 + 0x78)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 0x78)" * (cast_expression "(undefined8 **)(param_1 + 0x78)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 **)(param_1 + 0x78) = puVar1 + 0x1a;" (assignment_expression "*(undefined8 **)(param_1 + 0x78) = puVar1 + 0x1a" (pointer_expression "*(undefined8 **)(param_1 + 0x78)" * (cast_expression "(undefined8 **)(param_1 + 0x78)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) )))) = (binary_expression "puVar1 + 0x1a" identifier + number_literal)) ;) (expression_statement "puVar4 = puVar1 + 1;" (assignment_expression "puVar4 = puVar1 + 1" identifier = (binary_expression "puVar1 + 1" identifier + number_literal)) ;) (for_statement "for (lVar3 = 0x17; lVar3 != 0; lVar3 = lVar3 + -1) {\n    *puVar4 = 0;\n    puVar4 = puVar4 + (ulong)bVar5 * -2 + 1;\n  }" for ( (assignment_expression "lVar3 = 0x17" identifier = number_literal) ; (binary_expression "lVar3 != 0" identifier != number_literal) ; (assignment_expression "lVar3 = lVar3 + -1" identifier = (binary_expression "lVar3 + -1" identifier + number_literal)) ) (compound_statement "{\n    *puVar4 = 0;\n    puVar4 = puVar4 + (ulong)bVar5 * -2 + 1;\n  }" { (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "puVar4 = puVar4 + (ulong)bVar5 * -2 + 1;" (assignment_expression "puVar4 = puVar4 + (ulong)bVar5 * -2 + 1" identifier = (binary_expression "puVar4 + (ulong)bVar5 * -2 + 1" (binary_expression "puVar4 + (ulong)bVar5 * -2" identifier + (binary_expression "(ulong)bVar5 * -2" (cast_expression "(ulong)bVar5" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "*puVar1 = param_4;" (assignment_expression "*puVar1 = param_4" (pointer_expression "*puVar1" * identifier) = identifier) ;) (expression_statement "puVar1[0x18] = param_2;" (assignment_expression "puVar1[0x18] = param_2" (subscript_expression "puVar1[0x18]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[0x19] = param_3;" (assignment_expression "puVar1[0x19] = param_3" (subscript_expression "puVar1[0x19]" identifier [ number_literal ]) = identifier) ;) (return_statement "return puVar1;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = 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 = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (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) )))) = LIT) ;) })) (expression_statement (assignment_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 (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (for_statement for ( (assignment_expression IDENT = LIT) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return IDENT ;) })))
(function_definition "undefined8 * FUN_00268499(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)\n\n{\n  undefined8 *puVar1;\n  long *plVar2;\n  long lVar3;\n  undefined8 *puVar4;\n  byte bVar5;\n  \n  bVar5 = 0;\n  if (*(long *)(param_1 + 0x68) == 0) {\n    plVar2 = (long *)AcquireMagickMemory(0x10);\n    if (plVar2 == (long *)0x0) {\n      return (undefined8 *)0x0;\n    }\n    lVar3 = AcquireQuantumMemory(0x780,0xd0);\n    *plVar2 = lVar3;\n    if (lVar3 == 0) {\n      return (undefined8 *)0x0;\n    }\n    plVar2[1] = *(long *)(param_1 + 0x80);\n    *(long **)(param_1 + 0x80) = plVar2;\n    *(long *)(param_1 + 0x78) = lVar3;\n    *(undefined8 *)(param_1 + 0x68) = 0x780;\n  }\n  *(long *)(param_1 + 0x60) = *(long *)(param_1 + 0x60) + 1;\n  *(long *)(param_1 + 0x68) = *(long *)(param_1 + 0x68) + -1;\n  puVar1 = *(undefined8 **)(param_1 + 0x78);\n  *(undefined8 **)(param_1 + 0x78) = puVar1 + 0x1a;\n  puVar4 = puVar1 + 1;\n  for (lVar3 = 0x17; lVar3 != 0; lVar3 = lVar3 + -1) {\n    *puVar4 = 0;\n    puVar4 = puVar4 + (ulong)bVar5 * -2 + 1;\n  }\n  *puVar1 = param_4;\n  puVar1[0x18] = param_2;\n  puVar1[0x19] = param_3;\n  return puVar1;\n}" (type_identifier "undefined8") (pointer_declarator "* FUN_00268499(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)" (* "*") (function_declarator "FUN_00268499(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)" (identifier "FUN_00268499") (parameter_list "(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "undefined8 param_3" (type_identifier "undefined8") (identifier "param_3")) (, ",") (parameter_declaration "undefined8 param_4" (type_identifier "undefined8") (identifier "param_4")) () ")")))) (compound_statement "{\n  undefined8 *puVar1;\n  long *plVar2;\n  long lVar3;\n  undefined8 *puVar4;\n  byte bVar5;\n  \n  bVar5 = 0;\n  if (*(long *)(param_1 + 0x68) == 0) {\n    plVar2 = (long *)AcquireMagickMemory(0x10);\n    if (plVar2 == (long *)0x0) {\n      return (undefined8 *)0x0;\n    }\n    lVar3 = AcquireQuantumMemory(0x780,0xd0);\n    *plVar2 = lVar3;\n    if (lVar3 == 0) {\n      return (undefined8 *)0x0;\n    }\n    plVar2[1] = *(long *)(param_1 + 0x80);\n    *(long **)(param_1 + 0x80) = plVar2;\n    *(long *)(param_1 + 0x78) = lVar3;\n    *(undefined8 *)(param_1 + 0x68) = 0x780;\n  }\n  *(long *)(param_1 + 0x60) = *(long *)(param_1 + 0x60) + 1;\n  *(long *)(param_1 + 0x68) = *(long *)(param_1 + 0x68) + -1;\n  puVar1 = *(undefined8 **)(param_1 + 0x78);\n  *(undefined8 **)(param_1 + 0x78) = puVar1 + 0x1a;\n  puVar4 = puVar1 + 1;\n  for (lVar3 = 0x17; lVar3 != 0; lVar3 = lVar3 + -1) {\n    *puVar4 = 0;\n    puVar4 = puVar4 + (ulong)bVar5 * -2 + 1;\n  }\n  *puVar1 = param_4;\n  puVar1[0x18] = param_2;\n  puVar1[0x19] = param_3;\n  return puVar1;\n}" ({ "{") (declaration "undefined8 *puVar1;" (type_identifier "undefined8") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "long *plVar2;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar2" (* "*") (identifier "plVar2")) (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "undefined8 *puVar4;" (type_identifier "undefined8") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "byte bVar5;" (type_identifier "byte") (identifier "bVar5") (; ";")) (expression_statement "bVar5 = 0;" (assignment_expression "bVar5 = 0" (identifier "bVar5") (= "=") (number_literal "0")) (; ";")) (if_statement "if (*(long *)(param_1 + 0x68) == 0) {\n    plVar2 = (long *)AcquireMagickMemory(0x10);\n    if (plVar2 == (long *)0x0) {\n      return (undefined8 *)0x0;\n    }\n    lVar3 = AcquireQuantumMemory(0x780,0xd0);\n    *plVar2 = lVar3;\n    if (lVar3 == 0) {\n      return (undefined8 *)0x0;\n    }\n    plVar2[1] = *(long *)(param_1 + 0x80);\n    *(long **)(param_1 + 0x80) = plVar2;\n    *(long *)(param_1 + 0x78) = lVar3;\n    *(undefined8 *)(param_1 + 0x68) = 0x780;\n  }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 0x68) == 0)" (( "(") (binary_expression "*(long *)(param_1 + 0x68) == 0" (pointer_expression "*(long *)(param_1 + 0x68)" (* "*") (cast_expression "(long *)(param_1 + 0x68)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x68)" (( "(") (binary_expression "param_1 + 0x68" (identifier "param_1") (+ "+") (number_literal "0x68")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    plVar2 = (long *)AcquireMagickMemory(0x10);\n    if (plVar2 == (long *)0x0) {\n      return (undefined8 *)0x0;\n    }\n    lVar3 = AcquireQuantumMemory(0x780,0xd0);\n    *plVar2 = lVar3;\n    if (lVar3 == 0) {\n      return (undefined8 *)0x0;\n    }\n    plVar2[1] = *(long *)(param_1 + 0x80);\n    *(long **)(param_1 + 0x80) = plVar2;\n    *(long *)(param_1 + 0x78) = lVar3;\n    *(undefined8 *)(param_1 + 0x68) = 0x780;\n  }" ({ "{") (expression_statement "plVar2 = (long *)AcquireMagickMemory(0x10);" (assignment_expression "plVar2 = (long *)AcquireMagickMemory(0x10)" (identifier "plVar2") (= "=") (cast_expression "(long *)AcquireMagickMemory(0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "AcquireMagickMemory(0x10)" (identifier "AcquireMagickMemory") (argument_list "(0x10)" (( "(") (number_literal "0x10") () ")"))))) (; ";")) (if_statement "if (plVar2 == (long *)0x0) {\n      return (undefined8 *)0x0;\n    }" (if "if") (parenthesized_expression "(plVar2 == (long *)0x0)" (( "(") (binary_expression "plVar2 == (long *)0x0" (identifier "plVar2") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      return (undefined8 *)0x0;\n    }" ({ "{") (return_statement "return (undefined8 *)0x0;" (return "return") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "lVar3 = AcquireQuantumMemory(0x780,0xd0);" (assignment_expression "lVar3 = AcquireQuantumMemory(0x780,0xd0)" (identifier "lVar3") (= "=") (call_expression "AcquireQuantumMemory(0x780,0xd0)" (identifier "AcquireQuantumMemory") (argument_list "(0x780,0xd0)" (( "(") (number_literal "0x780") (, ",") (number_literal "0xd0") () ")")))) (; ";")) (expression_statement "*plVar2 = lVar3;" (assignment_expression "*plVar2 = lVar3" (pointer_expression "*plVar2" (* "*") (identifier "plVar2")) (= "=") (identifier "lVar3")) (; ";")) (if_statement "if (lVar3 == 0) {\n      return (undefined8 *)0x0;\n    }" (if "if") (parenthesized_expression "(lVar3 == 0)" (( "(") (binary_expression "lVar3 == 0" (identifier "lVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return (undefined8 *)0x0;\n    }" ({ "{") (return_statement "return (undefined8 *)0x0;" (return "return") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "plVar2[1] = *(long *)(param_1 + 0x80);" (assignment_expression "plVar2[1] = *(long *)(param_1 + 0x80)" (subscript_expression "plVar2[1]" (identifier "plVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (pointer_expression "*(long *)(param_1 + 0x80)" (* "*") (cast_expression "(long *)(param_1 + 0x80)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x80)" (( "(") (binary_expression "param_1 + 0x80" (identifier "param_1") (+ "+") (number_literal "0x80")) () ")"))))) (; ";")) (expression_statement "*(long **)(param_1 + 0x80) = plVar2;" (assignment_expression "*(long **)(param_1 + 0x80) = plVar2" (pointer_expression "*(long **)(param_1 + 0x80)" (* "*") (cast_expression "(long **)(param_1 + 0x80)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x80)" (( "(") (binary_expression "param_1 + 0x80" (identifier "param_1") (+ "+") (number_literal "0x80")) () ")")))) (= "=") (identifier "plVar2")) (; ";")) (expression_statement "*(long *)(param_1 + 0x78) = lVar3;" (assignment_expression "*(long *)(param_1 + 0x78) = lVar3" (pointer_expression "*(long *)(param_1 + 0x78)" (* "*") (cast_expression "(long *)(param_1 + 0x78)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x78)" (( "(") (binary_expression "param_1 + 0x78" (identifier "param_1") (+ "+") (number_literal "0x78")) () ")")))) (= "=") (identifier "lVar3")) (; ";")) (expression_statement "*(undefined8 *)(param_1 + 0x68) = 0x780;" (assignment_expression "*(undefined8 *)(param_1 + 0x68) = 0x780" (pointer_expression "*(undefined8 *)(param_1 + 0x68)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x68)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x68)" (( "(") (binary_expression "param_1 + 0x68" (identifier "param_1") (+ "+") (number_literal "0x68")) () ")")))) (= "=") (number_literal "0x780")) (; ";")) (} "}"))) (expression_statement "*(long *)(param_1 + 0x60) = *(long *)(param_1 + 0x60) + 1;" (assignment_expression "*(long *)(param_1 + 0x60) = *(long *)(param_1 + 0x60) + 1" (pointer_expression "*(long *)(param_1 + 0x60)" (* "*") (cast_expression "(long *)(param_1 + 0x60)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")")))) (= "=") (binary_expression "*(long *)(param_1 + 0x60) + 1" (pointer_expression "*(long *)(param_1 + 0x60)" (* "*") (cast_expression "(long *)(param_1 + 0x60)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(long *)(param_1 + 0x68) = *(long *)(param_1 + 0x68) + -1;" (assignment_expression "*(long *)(param_1 + 0x68) = *(long *)(param_1 + 0x68) + -1" (pointer_expression "*(long *)(param_1 + 0x68)" (* "*") (cast_expression "(long *)(param_1 + 0x68)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x68)" (( "(") (binary_expression "param_1 + 0x68" (identifier "param_1") (+ "+") (number_literal "0x68")) () ")")))) (= "=") (binary_expression "*(long *)(param_1 + 0x68) + -1" (pointer_expression "*(long *)(param_1 + 0x68)" (* "*") (cast_expression "(long *)(param_1 + 0x68)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x68)" (( "(") (binary_expression "param_1 + 0x68" (identifier "param_1") (+ "+") (number_literal "0x68")) () ")")))) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar1 = *(undefined8 **)(param_1 + 0x78);" (assignment_expression "puVar1 = *(undefined8 **)(param_1 + 0x78)" (identifier "puVar1") (= "=") (pointer_expression "*(undefined8 **)(param_1 + 0x78)" (* "*") (cast_expression "(undefined8 **)(param_1 + 0x78)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x78)" (( "(") (binary_expression "param_1 + 0x78" (identifier "param_1") (+ "+") (number_literal "0x78")) () ")"))))) (; ";")) (expression_statement "*(undefined8 **)(param_1 + 0x78) = puVar1 + 0x1a;" (assignment_expression "*(undefined8 **)(param_1 + 0x78) = puVar1 + 0x1a" (pointer_expression "*(undefined8 **)(param_1 + 0x78)" (* "*") (cast_expression "(undefined8 **)(param_1 + 0x78)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x78)" (( "(") (binary_expression "param_1 + 0x78" (identifier "param_1") (+ "+") (number_literal "0x78")) () ")")))) (= "=") (binary_expression "puVar1 + 0x1a" (identifier "puVar1") (+ "+") (number_literal "0x1a"))) (; ";")) (expression_statement "puVar4 = puVar1 + 1;" (assignment_expression "puVar4 = puVar1 + 1" (identifier "puVar4") (= "=") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1"))) (; ";")) (for_statement "for (lVar3 = 0x17; lVar3 != 0; lVar3 = lVar3 + -1) {\n    *puVar4 = 0;\n    puVar4 = puVar4 + (ulong)bVar5 * -2 + 1;\n  }" (for "for") (( "(") (assignment_expression "lVar3 = 0x17" (identifier "lVar3") (= "=") (number_literal "0x17")) (; ";") (binary_expression "lVar3 != 0" (identifier "lVar3") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "lVar3 = lVar3 + -1" (identifier "lVar3") (= "=") (binary_expression "lVar3 + -1" (identifier "lVar3") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n    *puVar4 = 0;\n    puVar4 = puVar4 + (ulong)bVar5 * -2 + 1;\n  }" ({ "{") (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4 = puVar4 + (ulong)bVar5 * -2 + 1;" (assignment_expression "puVar4 = puVar4 + (ulong)bVar5 * -2 + 1" (identifier "puVar4") (= "=") (binary_expression "puVar4 + (ulong)bVar5 * -2 + 1" (binary_expression "puVar4 + (ulong)bVar5 * -2" (identifier "puVar4") (+ "+") (binary_expression "(ulong)bVar5 * -2" (cast_expression "(ulong)bVar5" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar5")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "*puVar1 = param_4;" (assignment_expression "*puVar1 = param_4" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (identifier "param_4")) (; ";")) (expression_statement "puVar1[0x18] = param_2;" (assignment_expression "puVar1[0x18] = param_2" (subscript_expression "puVar1[0x18]" (identifier "puVar1") ([ "[") (number_literal "0x18") (] "]")) (= "=") (identifier "param_2")) (; ";")) (expression_statement "puVar1[0x19] = param_3;" (assignment_expression "puVar1[0x19] = param_3" (subscript_expression "puVar1[0x19]" (identifier "puVar1") ([ "[") (number_literal "0x19") (] "]")) (= "=") (identifier "param_3")) (; ";")) (return_statement "return puVar1;" (return "return") (identifier "puVar1") (; ";")) (} "}")))

type_1 *
function_1(type_2 *cube_info,size_t id,size_t level,type_1 *parent)

{
  type_3 *var_2;
  type_1 *var_4;
  long var_5;
  type_4 **var_6;
  type_5 bVar5;
  
  bVar5 = 0;
  if (cube_info->free_nodes == 0) {
    var_2 = (type_3 *)var_1(0x10);
    if (var_2 == (type_3 *)0x0) {
      return (type_1 *)0x0;
    }
    var_4 = (type_1 *)var_3(0x780,0xd0);
    var_2->nodes = var_4;
    if (var_4 == (type_1 *)0x0) {
      return (type_1 *)0x0;
    }
    var_2->next = cube_info->node_queue;
    cube_info->node_queue = var_2;
    cube_info->next_node = var_4;
    cube_info->free_nodes = 0x780;
  }
  cube_info->nodes = cube_info->nodes + 1;
  cube_info->free_nodes = cube_info->free_nodes - 1;
  var_4 = cube_info->next_node;
  cube_info->next_node = var_4 + 1;
  var_6 = var_4->child;
  for (var_5 = 0x17; var_5 != 0; var_5 = var_5 + -1) {
    *var_6 = (type_4 *)0x0;
    var_6 = var_6 + (type_6)bVar5 * -2 + 1;
  }
  var_4->parent = parent;
  var_4->id = id;
  var_4->level = level;
  return var_4;
}


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

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

{
  undefined8 *puVar1;
  long *plVar2;
  long lVar3;
  undefined8 *puVar4;
  byte bVar5;
  
  bVar5 = 0;
  if (*(long *)(param_1 + 0x68) == 0) {
    plVar2 = (long *)AcquireMagickMemory(0x10);
    if (plVar2 == (long *)0x0) {
      return (undefined8 *)0x0;
    }
    lVar3 = AcquireQuantumMemory(0x780,0xd0);
    *plVar2 = lVar3;
    if (lVar3 == 0) {
      return (undefined8 *)0x0;
    }
    plVar2[1] = *(long *)(param_1 + 0x80);
    *(long **)(param_1 + 0x80) = plVar2;
    *(long *)(param_1 + 0x78) = lVar3;
    *(undefined8 *)(param_1 + 0x68) = 0x780;
  }
  *(long *)(param_1 + 0x60) = *(long *)(param_1 + 0x60) + 1;
  *(long *)(param_1 + 0x68) = *(long *)(param_1 + 0x68) + -1;
  puVar1 = *(undefined8 **)(param_1 + 0x78);
  *(undefined8 **)(param_1 + 0x78) = puVar1 + 0x1a;
  puVar4 = puVar1 + 1;
  for (lVar3 = 0x17; lVar3 != 0; lVar3 = lVar3 + -1) {
    *puVar4 = 0;
    puVar4 = puVar4 + (ulong)bVar5 * -2 + 1;
  }
  *puVar1 = param_4;
  puVar1[0x18] = param_2;
  puVar1[0x19] = param_3;
  return puVar1;
}

