
bfd_boolean
stab_record_variable
          (void *dhandle,stab_handle *info,char *name,debug_type type,debug_var_kind kind,
          bfd_vma val)

{
  stab_pending_var *psVar1;
  bfd_boolean bVar2;
  stab_pending_var *psVar3;
  
  if (((1 < kind - DEBUG_GLOBAL) && (info->within_function != 0)) &&
     ((info->gcc_compiled != 0 || (info->n_opt_found == 0)))) {
    psVar3 = (stab_pending_var *)xmalloc(0x28);
    psVar1 = info->pending;
    *(undefined4 *)&psVar3->field_0x1c = 0;
    psVar3->next = psVar1;
    psVar3->name = name;
    psVar3->type = type;
    psVar3->kind = kind;
    psVar3->val = val;
    info->pending = psVar3;
    return 1;
  }
  bVar2 = debug_record_variable(dhandle,name,type,kind,val);
  return bVar2;
}



undefined8
FUN_0012e770(undefined8 param_1,long param_2,undefined8 param_3,undefined8 param_4,int param_5,
            undefined8 param_6)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  
  if (((1 < param_5 - 1U) && (*(int *)(param_2 + 0x60) != 0)) &&
     ((*(int *)(param_2 + 0x40) != 0 || (*(int *)(param_2 + 0x44) == 0)))) {
    puVar1 = (undefined8 *)xmalloc(0x28);
    uVar2 = *(undefined8 *)(param_2 + 0x78);
    *(undefined4 *)((long)puVar1 + 0x1c) = 0;
    *puVar1 = uVar2;
    puVar1[1] = param_3;
    puVar1[2] = param_4;
    *(int *)(puVar1 + 3) = param_5;
    puVar1[4] = param_6;
    *(undefined8 **)(param_2 + 0x78) = puVar1;
    return 1;
  }
  uVar2 = FUN_0012d410(param_1,param_3,param_4,param_5,param_6);
  return uVar2;
}


PUSH R14
MOV R14,RDX
MOV RDX,RCX
MOV ECX,R8D
SUB R8D,0x1
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
CMP R8D,0x1
JBE 0x0012e7f0
MOV R10D,dword ptr [RSI + 0x60]
TEST R10D,R10D
JZ 0x0012e7f0
MOV R8D,dword ptr [RSI + 0x40]
TEST R8D,R8D
JNZ 0x0012e7a4
MOV EAX,dword ptr [RSI + 0x44]
TEST EAX,EAX
JNZ 0x0012e7f0
MOV RBX,RSI
MOV EDI,0x28
MOV R13,RDX
MOV R12,R9
MOV EBP,ECX
CALL 0x00107350
MOV RDX,qword ptr [RBX + 0x78]
MOV dword ptr [RAX + 0x1c],0x0
MOV qword ptr [RAX],RDX
MOV qword ptr [RAX + 0x8],R14
MOV qword ptr [RAX + 0x10],R13
MOV dword ptr [RAX + 0x18],EBP
MOV qword ptr [RAX + 0x20],R12
MOV qword ptr [RBX + 0x78],RAX
MOV EAX,0x1
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
POP RBX
MOV RSI,R14
POP RBP
MOV R8,R9
POP R12
POP R13
POP R14
JMP 0x0012d410
(translation_unit "undefined8\nFUN_0012e770(undefined8 param_1,long param_2,undefined8 param_3,undefined8 param_4,int param_5,\n            undefined8 param_6)\n\n{\n  undefined8 *puVar1;\n  undefined8 uVar2;\n  \n  if (((1 < param_5 - 1U) && (*(int *)(param_2 + 0x60) != 0)) &&\n     ((*(int *)(param_2 + 0x40) != 0 || (*(int *)(param_2 + 0x44) == 0)))) {\n    puVar1 = (undefined8 *)xmalloc(0x28);\n    uVar2 = *(undefined8 *)(param_2 + 0x78);\n    *(undefined4 *)((long)puVar1 + 0x1c) = 0;\n    *puVar1 = uVar2;\n    puVar1[1] = param_3;\n    puVar1[2] = param_4;\n    *(int *)(puVar1 + 3) = param_5;\n    puVar1[4] = param_6;\n    *(undefined8 **)(param_2 + 0x78) = puVar1;\n    return 1;\n  }\n  uVar2 = FUN_0012d410(param_1,param_3,param_4,param_5,param_6);\n  return uVar2;\n}\n\n" (function_definition "undefined8\nFUN_0012e770(undefined8 param_1,long param_2,undefined8 param_3,undefined8 param_4,int param_5,\n            undefined8 param_6)\n\n{\n  undefined8 *puVar1;\n  undefined8 uVar2;\n  \n  if (((1 < param_5 - 1U) && (*(int *)(param_2 + 0x60) != 0)) &&\n     ((*(int *)(param_2 + 0x40) != 0 || (*(int *)(param_2 + 0x44) == 0)))) {\n    puVar1 = (undefined8 *)xmalloc(0x28);\n    uVar2 = *(undefined8 *)(param_2 + 0x78);\n    *(undefined4 *)((long)puVar1 + 0x1c) = 0;\n    *puVar1 = uVar2;\n    puVar1[1] = param_3;\n    puVar1[2] = param_4;\n    *(int *)(puVar1 + 3) = param_5;\n    puVar1[4] = param_6;\n    *(undefined8 **)(param_2 + 0x78) = puVar1;\n    return 1;\n  }\n  uVar2 = FUN_0012d410(param_1,param_3,param_4,param_5,param_6);\n  return uVar2;\n}" type_identifier (function_declarator "FUN_0012e770(undefined8 param_1,long param_2,undefined8 param_3,undefined8 param_4,int param_5,\n            undefined8 param_6)" identifier (parameter_list "(undefined8 param_1,long param_2,undefined8 param_3,undefined8 param_4,int param_5,\n            undefined8 param_6)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "undefined8 param_6" type_identifier identifier) ))) (compound_statement "{\n  undefined8 *puVar1;\n  undefined8 uVar2;\n  \n  if (((1 < param_5 - 1U) && (*(int *)(param_2 + 0x60) != 0)) &&\n     ((*(int *)(param_2 + 0x40) != 0 || (*(int *)(param_2 + 0x44) == 0)))) {\n    puVar1 = (undefined8 *)xmalloc(0x28);\n    uVar2 = *(undefined8 *)(param_2 + 0x78);\n    *(undefined4 *)((long)puVar1 + 0x1c) = 0;\n    *puVar1 = uVar2;\n    puVar1[1] = param_3;\n    puVar1[2] = param_4;\n    *(int *)(puVar1 + 3) = param_5;\n    puVar1[4] = param_6;\n    *(undefined8 **)(param_2 + 0x78) = puVar1;\n    return 1;\n  }\n  uVar2 = FUN_0012d410(param_1,param_3,param_4,param_5,param_6);\n  return uVar2;\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (if_statement "if (((1 < param_5 - 1U) && (*(int *)(param_2 + 0x60) != 0)) &&\n     ((*(int *)(param_2 + 0x40) != 0 || (*(int *)(param_2 + 0x44) == 0)))) {\n    puVar1 = (undefined8 *)xmalloc(0x28);\n    uVar2 = *(undefined8 *)(param_2 + 0x78);\n    *(undefined4 *)((long)puVar1 + 0x1c) = 0;\n    *puVar1 = uVar2;\n    puVar1[1] = param_3;\n    puVar1[2] = param_4;\n    *(int *)(puVar1 + 3) = param_5;\n    puVar1[4] = param_6;\n    *(undefined8 **)(param_2 + 0x78) = puVar1;\n    return 1;\n  }" if (parenthesized_expression "(((1 < param_5 - 1U) && (*(int *)(param_2 + 0x60) != 0)) &&\n     ((*(int *)(param_2 + 0x40) != 0 || (*(int *)(param_2 + 0x44) == 0))))" ( (binary_expression "((1 < param_5 - 1U) && (*(int *)(param_2 + 0x60) != 0)) &&\n     ((*(int *)(param_2 + 0x40) != 0 || (*(int *)(param_2 + 0x44) == 0)))" (parenthesized_expression "((1 < param_5 - 1U) && (*(int *)(param_2 + 0x60) != 0))" ( (binary_expression "(1 < param_5 - 1U) && (*(int *)(param_2 + 0x60) != 0)" (parenthesized_expression "(1 < param_5 - 1U)" ( (binary_expression "1 < param_5 - 1U" number_literal < (binary_expression "param_5 - 1U" identifier - number_literal)) )) && (parenthesized_expression "(*(int *)(param_2 + 0x60) != 0)" ( (binary_expression "*(int *)(param_2 + 0x60) != 0" (pointer_expression "*(int *)(param_2 + 0x60)" * (cast_expression "(int *)(param_2 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x60)" ( (binary_expression "param_2 + 0x60" identifier + number_literal) )))) != number_literal) ))) )) && (parenthesized_expression "((*(int *)(param_2 + 0x40) != 0 || (*(int *)(param_2 + 0x44) == 0)))" ( (parenthesized_expression "(*(int *)(param_2 + 0x40) != 0 || (*(int *)(param_2 + 0x44) == 0))" ( (binary_expression "*(int *)(param_2 + 0x40) != 0 || (*(int *)(param_2 + 0x44) == 0)" (binary_expression "*(int *)(param_2 + 0x40) != 0" (pointer_expression "*(int *)(param_2 + 0x40)" * (cast_expression "(int *)(param_2 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x40)" ( (binary_expression "param_2 + 0x40" identifier + number_literal) )))) != number_literal) || (parenthesized_expression "(*(int *)(param_2 + 0x44) == 0)" ( (binary_expression "*(int *)(param_2 + 0x44) == 0" (pointer_expression "*(int *)(param_2 + 0x44)" * (cast_expression "(int *)(param_2 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x44)" ( (binary_expression "param_2 + 0x44" identifier + number_literal) )))) == number_literal) ))) )) ))) )) (compound_statement "{\n    puVar1 = (undefined8 *)xmalloc(0x28);\n    uVar2 = *(undefined8 *)(param_2 + 0x78);\n    *(undefined4 *)((long)puVar1 + 0x1c) = 0;\n    *puVar1 = uVar2;\n    puVar1[1] = param_3;\n    puVar1[2] = param_4;\n    *(int *)(puVar1 + 3) = param_5;\n    puVar1[4] = param_6;\n    *(undefined8 **)(param_2 + 0x78) = puVar1;\n    return 1;\n  }" { (expression_statement "puVar1 = (undefined8 *)xmalloc(0x28);" (assignment_expression "puVar1 = (undefined8 *)xmalloc(0x28)" identifier = (cast_expression "(undefined8 *)xmalloc(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) (expression_statement "uVar2 = *(undefined8 *)(param_2 + 0x78);" (assignment_expression "uVar2 = *(undefined8 *)(param_2 + 0x78)" identifier = (pointer_expression "*(undefined8 *)(param_2 + 0x78)" * (cast_expression "(undefined8 *)(param_2 + 0x78)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x78)" ( (binary_expression "param_2 + 0x78" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((long)puVar1 + 0x1c) = 0;" (assignment_expression "*(undefined4 *)((long)puVar1 + 0x1c) = 0" (pointer_expression "*(undefined4 *)((long)puVar1 + 0x1c)" * (cast_expression "(undefined4 *)((long)puVar1 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar1 + 0x1c)" ( (binary_expression "(long)puVar1 + 0x1c" (cast_expression "(long)puVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*puVar1 = uVar2;" (assignment_expression "*puVar1 = uVar2" (pointer_expression "*puVar1" * identifier) = identifier) ;) (expression_statement "puVar1[1] = param_3;" (assignment_expression "puVar1[1] = param_3" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[2] = param_4;" (assignment_expression "puVar1[2] = param_4" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(int *)(puVar1 + 3) = param_5;" (assignment_expression "*(int *)(puVar1 + 3) = param_5" (pointer_expression "*(int *)(puVar1 + 3)" * (cast_expression "(int *)(puVar1 + 3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 3)" ( (binary_expression "puVar1 + 3" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar1[4] = param_6;" (assignment_expression "puVar1[4] = param_6" (subscript_expression "puVar1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined8 **)(param_2 + 0x78) = puVar1;" (assignment_expression "*(undefined8 **)(param_2 + 0x78) = puVar1" (pointer_expression "*(undefined8 **)(param_2 + 0x78)" * (cast_expression "(undefined8 **)(param_2 + 0x78)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x78)" ( (binary_expression "param_2 + 0x78" identifier + number_literal) )))) = identifier) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "uVar2 = FUN_0012d410(param_1,param_3,param_4,param_5,param_6);" (assignment_expression "uVar2 = FUN_0012d410(param_1,param_3,param_4,param_5,param_6)" identifier = (call_expression "FUN_0012d410(param_1,param_3,param_4,param_5,param_6)" identifier (argument_list "(param_1,param_3,param_4,param_5,param_6)" ( identifier , identifier , identifier , identifier , identifier )))) ;) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit "bfd_boolean\nstab_record_variable\n          (void *dhandle,stab_handle *info,char *name,debug_type type,debug_var_kind kind,\n          bfd_vma val)\n\n{\n  stab_pending_var *psVar1;\n  bfd_boolean bVar2;\n  stab_pending_var *psVar3;\n  \n  if (((1 < kind - DEBUG_GLOBAL) && (info->within_function != 0)) &&\n     ((info->gcc_compiled != 0 || (info->n_opt_found == 0)))) {\n    psVar3 = (stab_pending_var *)xmalloc(0x28);\n    psVar1 = info->pending;\n    *(undefined4 *)&psVar3->field_0x1c = 0;\n    psVar3->next = psVar1;\n    psVar3->name = name;\n    psVar3->type = type;\n    psVar3->kind = kind;\n    psVar3->val = val;\n    info->pending = psVar3;\n    return 1;\n  }\n  bVar2 = debug_record_variable(dhandle,name,type,kind,val);\n  return bVar2;\n}\n\n" (function_definition "bfd_boolean\nstab_record_variable\n          (void *dhandle,stab_handle *info,char *name,debug_type type,debug_var_kind kind,\n          bfd_vma val)\n\n{\n  stab_pending_var *psVar1;\n  bfd_boolean bVar2;\n  stab_pending_var *psVar3;\n  \n  if (((1 < kind - DEBUG_GLOBAL) && (info->within_function != 0)) &&\n     ((info->gcc_compiled != 0 || (info->n_opt_found == 0)))) {\n    psVar3 = (stab_pending_var *)xmalloc(0x28);\n    psVar1 = info->pending;\n    *(undefined4 *)&psVar3->field_0x1c = 0;\n    psVar3->next = psVar1;\n    psVar3->name = name;\n    psVar3->type = type;\n    psVar3->kind = kind;\n    psVar3->val = val;\n    info->pending = psVar3;\n    return 1;\n  }\n  bVar2 = debug_record_variable(dhandle,name,type,kind,val);\n  return bVar2;\n}" type_identifier (function_declarator "stab_record_variable\n          (void *dhandle,stab_handle *info,char *name,debug_type type,debug_var_kind kind,\n          bfd_vma val)" identifier (parameter_list "(void *dhandle,stab_handle *info,char *name,debug_type type,debug_var_kind kind,\n          bfd_vma val)" ( (parameter_declaration "void *dhandle" primitive_type (pointer_declarator "*dhandle" * identifier)) , (parameter_declaration "stab_handle *info" type_identifier (pointer_declarator "*info" * identifier)) , (parameter_declaration "char *name" primitive_type (pointer_declarator "*name" * identifier)) , (parameter_declaration "debug_type type" type_identifier identifier) , (parameter_declaration "debug_var_kind kind" type_identifier identifier) , (parameter_declaration "bfd_vma val" type_identifier identifier) ))) (compound_statement "{\n  stab_pending_var *psVar1;\n  bfd_boolean bVar2;\n  stab_pending_var *psVar3;\n  \n  if (((1 < kind - DEBUG_GLOBAL) && (info->within_function != 0)) &&\n     ((info->gcc_compiled != 0 || (info->n_opt_found == 0)))) {\n    psVar3 = (stab_pending_var *)xmalloc(0x28);\n    psVar1 = info->pending;\n    *(undefined4 *)&psVar3->field_0x1c = 0;\n    psVar3->next = psVar1;\n    psVar3->name = name;\n    psVar3->type = type;\n    psVar3->kind = kind;\n    psVar3->val = val;\n    info->pending = psVar3;\n    return 1;\n  }\n  bVar2 = debug_record_variable(dhandle,name,type,kind,val);\n  return bVar2;\n}" { (declaration "stab_pending_var *psVar1;" type_identifier (pointer_declarator "*psVar1" * identifier) ;) (declaration "bfd_boolean bVar2;" type_identifier identifier ;) (declaration "stab_pending_var *psVar3;" type_identifier (pointer_declarator "*psVar3" * identifier) ;) (if_statement "if (((1 < kind - DEBUG_GLOBAL) && (info->within_function != 0)) &&\n     ((info->gcc_compiled != 0 || (info->n_opt_found == 0)))) {\n    psVar3 = (stab_pending_var *)xmalloc(0x28);\n    psVar1 = info->pending;\n    *(undefined4 *)&psVar3->field_0x1c = 0;\n    psVar3->next = psVar1;\n    psVar3->name = name;\n    psVar3->type = type;\n    psVar3->kind = kind;\n    psVar3->val = val;\n    info->pending = psVar3;\n    return 1;\n  }" if (parenthesized_expression "(((1 < kind - DEBUG_GLOBAL) && (info->within_function != 0)) &&\n     ((info->gcc_compiled != 0 || (info->n_opt_found == 0))))" ( (binary_expression "((1 < kind - DEBUG_GLOBAL) && (info->within_function != 0)) &&\n     ((info->gcc_compiled != 0 || (info->n_opt_found == 0)))" (parenthesized_expression "((1 < kind - DEBUG_GLOBAL) && (info->within_function != 0))" ( (binary_expression "(1 < kind - DEBUG_GLOBAL) && (info->within_function != 0)" (parenthesized_expression "(1 < kind - DEBUG_GLOBAL)" ( (binary_expression "1 < kind - DEBUG_GLOBAL" number_literal < (binary_expression "kind - DEBUG_GLOBAL" identifier - identifier)) )) && (parenthesized_expression "(info->within_function != 0)" ( (binary_expression "info->within_function != 0" (field_expression "info->within_function" identifier -> field_identifier) != number_literal) ))) )) && (parenthesized_expression "((info->gcc_compiled != 0 || (info->n_opt_found == 0)))" ( (parenthesized_expression "(info->gcc_compiled != 0 || (info->n_opt_found == 0))" ( (binary_expression "info->gcc_compiled != 0 || (info->n_opt_found == 0)" (binary_expression "info->gcc_compiled != 0" (field_expression "info->gcc_compiled" identifier -> field_identifier) != number_literal) || (parenthesized_expression "(info->n_opt_found == 0)" ( (binary_expression "info->n_opt_found == 0" (field_expression "info->n_opt_found" identifier -> field_identifier) == number_literal) ))) )) ))) )) (compound_statement "{\n    psVar3 = (stab_pending_var *)xmalloc(0x28);\n    psVar1 = info->pending;\n    *(undefined4 *)&psVar3->field_0x1c = 0;\n    psVar3->next = psVar1;\n    psVar3->name = name;\n    psVar3->type = type;\n    psVar3->kind = kind;\n    psVar3->val = val;\n    info->pending = psVar3;\n    return 1;\n  }" { (expression_statement "psVar3 = (stab_pending_var *)xmalloc(0x28);" (assignment_expression "psVar3 = (stab_pending_var *)xmalloc(0x28)" identifier = (cast_expression "(stab_pending_var *)xmalloc(0x28)" ( (type_descriptor "stab_pending_var *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) (expression_statement "psVar1 = info->pending;" (assignment_expression "psVar1 = info->pending" identifier = (field_expression "info->pending" identifier -> field_identifier)) ;) (expression_statement "*(undefined4 *)&psVar3->field_0x1c = 0;" (assignment_expression "*(undefined4 *)&psVar3->field_0x1c = 0" (pointer_expression "*(undefined4 *)&psVar3->field_0x1c" * (cast_expression "(undefined4 *)&psVar3->field_0x1c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&psVar3->field_0x1c" & (field_expression "psVar3->field_0x1c" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "psVar3->next = psVar1;" (assignment_expression "psVar3->next = psVar1" (field_expression "psVar3->next" identifier -> field_identifier) = identifier) ;) (expression_statement "psVar3->name = name;" (assignment_expression "psVar3->name = name" (field_expression "psVar3->name" identifier -> field_identifier) = identifier) ;) (expression_statement "psVar3->type = type;" (assignment_expression "psVar3->type = type" (field_expression "psVar3->type" identifier -> field_identifier) = identifier) ;) (expression_statement "psVar3->kind = kind;" (assignment_expression "psVar3->kind = kind" (field_expression "psVar3->kind" identifier -> field_identifier) = identifier) ;) (expression_statement "psVar3->val = val;" (assignment_expression "psVar3->val = val" (field_expression "psVar3->val" identifier -> field_identifier) = identifier) ;) (expression_statement "info->pending = psVar3;" (assignment_expression "info->pending = psVar3" (field_expression "info->pending" identifier -> field_identifier) = identifier) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "bVar2 = debug_record_variable(dhandle,name,type,kind,val);" (assignment_expression "bVar2 = debug_record_variable(dhandle,name,type,kind,val)" identifier = (call_expression "debug_record_variable(dhandle,name,type,kind,val)" identifier (argument_list "(dhandle,name,type,kind,val)" ( identifier , identifier , identifier , identifier , identifier )))) ;) (return_statement "return bVar2;" return identifier ;) })))
(translation_unit "undefined8\nFUN_0012e770(undefined8 param_1,long param_2,undefined8 param_3,undefined8 param_4,int param_5,\n            undefined8 param_6)\n\n{\n  undefined8 *puVar1;\n  undefined8 uVar2;\n  \n  if (((1 < param_5 - 1U) && (*(int *)(param_2 + 0x60) != 0)) &&\n     ((*(int *)(param_2 + 0x40) != 0 || (*(int *)(param_2 + 0x44) == 0)))) {\n    puVar1 = (undefined8 *)xmalloc(0x28);\n    uVar2 = *(undefined8 *)(param_2 + 0x78);\n    *(undefined4 *)((long)puVar1 + 0x1c) = 0;\n    *puVar1 = uVar2;\n    puVar1[1] = param_3;\n    puVar1[2] = param_4;\n    *(int *)(puVar1 + 3) = param_5;\n    puVar1[4] = param_6;\n    *(undefined8 **)(param_2 + 0x78) = puVar1;\n    return 1;\n  }\n  uVar2 = FUN_0012d410(param_1,param_3,param_4,param_5,param_6);\n  return uVar2;\n}\n\n" (function_definition "undefined8\nFUN_0012e770(undefined8 param_1,long param_2,undefined8 param_3,undefined8 param_4,int param_5,\n            undefined8 param_6)\n\n{\n  undefined8 *puVar1;\n  undefined8 uVar2;\n  \n  if (((1 < param_5 - 1U) && (*(int *)(param_2 + 0x60) != 0)) &&\n     ((*(int *)(param_2 + 0x40) != 0 || (*(int *)(param_2 + 0x44) == 0)))) {\n    puVar1 = (undefined8 *)xmalloc(0x28);\n    uVar2 = *(undefined8 *)(param_2 + 0x78);\n    *(undefined4 *)((long)puVar1 + 0x1c) = 0;\n    *puVar1 = uVar2;\n    puVar1[1] = param_3;\n    puVar1[2] = param_4;\n    *(int *)(puVar1 + 3) = param_5;\n    puVar1[4] = param_6;\n    *(undefined8 **)(param_2 + 0x78) = puVar1;\n    return 1;\n  }\n  uVar2 = FUN_0012d410(param_1,param_3,param_4,param_5,param_6);\n  return uVar2;\n}" type_identifier (function_declarator "FUN_0012e770(undefined8 param_1,long param_2,undefined8 param_3,undefined8 param_4,int param_5,\n            undefined8 param_6)" identifier (parameter_list "(undefined8 param_1,long param_2,undefined8 param_3,undefined8 param_4,int param_5,\n            undefined8 param_6)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "undefined8 param_6" type_identifier identifier) ))) (compound_statement "{\n  undefined8 *puVar1;\n  undefined8 uVar2;\n  \n  if (((1 < param_5 - 1U) && (*(int *)(param_2 + 0x60) != 0)) &&\n     ((*(int *)(param_2 + 0x40) != 0 || (*(int *)(param_2 + 0x44) == 0)))) {\n    puVar1 = (undefined8 *)xmalloc(0x28);\n    uVar2 = *(undefined8 *)(param_2 + 0x78);\n    *(undefined4 *)((long)puVar1 + 0x1c) = 0;\n    *puVar1 = uVar2;\n    puVar1[1] = param_3;\n    puVar1[2] = param_4;\n    *(int *)(puVar1 + 3) = param_5;\n    puVar1[4] = param_6;\n    *(undefined8 **)(param_2 + 0x78) = puVar1;\n    return 1;\n  }\n  uVar2 = FUN_0012d410(param_1,param_3,param_4,param_5,param_6);\n  return uVar2;\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (if_statement "if (((1 < param_5 - 1U) && (*(int *)(param_2 + 0x60) != 0)) &&\n     ((*(int *)(param_2 + 0x40) != 0 || (*(int *)(param_2 + 0x44) == 0)))) {\n    puVar1 = (undefined8 *)xmalloc(0x28);\n    uVar2 = *(undefined8 *)(param_2 + 0x78);\n    *(undefined4 *)((long)puVar1 + 0x1c) = 0;\n    *puVar1 = uVar2;\n    puVar1[1] = param_3;\n    puVar1[2] = param_4;\n    *(int *)(puVar1 + 3) = param_5;\n    puVar1[4] = param_6;\n    *(undefined8 **)(param_2 + 0x78) = puVar1;\n    return 1;\n  }" if (parenthesized_expression "(((1 < param_5 - 1U) && (*(int *)(param_2 + 0x60) != 0)) &&\n     ((*(int *)(param_2 + 0x40) != 0 || (*(int *)(param_2 + 0x44) == 0))))" ( (binary_expression "((1 < param_5 - 1U) && (*(int *)(param_2 + 0x60) != 0)) &&\n     ((*(int *)(param_2 + 0x40) != 0 || (*(int *)(param_2 + 0x44) == 0)))" (parenthesized_expression "((1 < param_5 - 1U) && (*(int *)(param_2 + 0x60) != 0))" ( (binary_expression "(1 < param_5 - 1U) && (*(int *)(param_2 + 0x60) != 0)" (parenthesized_expression "(1 < param_5 - 1U)" ( (binary_expression "1 < param_5 - 1U" number_literal < (binary_expression "param_5 - 1U" identifier - number_literal)) )) && (parenthesized_expression "(*(int *)(param_2 + 0x60) != 0)" ( (binary_expression "*(int *)(param_2 + 0x60) != 0" (pointer_expression "*(int *)(param_2 + 0x60)" * (cast_expression "(int *)(param_2 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x60)" ( (binary_expression "param_2 + 0x60" identifier + number_literal) )))) != number_literal) ))) )) && (parenthesized_expression "((*(int *)(param_2 + 0x40) != 0 || (*(int *)(param_2 + 0x44) == 0)))" ( (parenthesized_expression "(*(int *)(param_2 + 0x40) != 0 || (*(int *)(param_2 + 0x44) == 0))" ( (binary_expression "*(int *)(param_2 + 0x40) != 0 || (*(int *)(param_2 + 0x44) == 0)" (binary_expression "*(int *)(param_2 + 0x40) != 0" (pointer_expression "*(int *)(param_2 + 0x40)" * (cast_expression "(int *)(param_2 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x40)" ( (binary_expression "param_2 + 0x40" identifier + number_literal) )))) != number_literal) || (parenthesized_expression "(*(int *)(param_2 + 0x44) == 0)" ( (binary_expression "*(int *)(param_2 + 0x44) == 0" (pointer_expression "*(int *)(param_2 + 0x44)" * (cast_expression "(int *)(param_2 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x44)" ( (binary_expression "param_2 + 0x44" identifier + number_literal) )))) == number_literal) ))) )) ))) )) (compound_statement "{\n    puVar1 = (undefined8 *)xmalloc(0x28);\n    uVar2 = *(undefined8 *)(param_2 + 0x78);\n    *(undefined4 *)((long)puVar1 + 0x1c) = 0;\n    *puVar1 = uVar2;\n    puVar1[1] = param_3;\n    puVar1[2] = param_4;\n    *(int *)(puVar1 + 3) = param_5;\n    puVar1[4] = param_6;\n    *(undefined8 **)(param_2 + 0x78) = puVar1;\n    return 1;\n  }" { (expression_statement "puVar1 = (undefined8 *)xmalloc(0x28);" (assignment_expression "puVar1 = (undefined8 *)xmalloc(0x28)" identifier = (cast_expression "(undefined8 *)xmalloc(0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) (expression_statement "uVar2 = *(undefined8 *)(param_2 + 0x78);" (assignment_expression "uVar2 = *(undefined8 *)(param_2 + 0x78)" identifier = (pointer_expression "*(undefined8 *)(param_2 + 0x78)" * (cast_expression "(undefined8 *)(param_2 + 0x78)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x78)" ( (binary_expression "param_2 + 0x78" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((long)puVar1 + 0x1c) = 0;" (assignment_expression "*(undefined4 *)((long)puVar1 + 0x1c) = 0" (pointer_expression "*(undefined4 *)((long)puVar1 + 0x1c)" * (cast_expression "(undefined4 *)((long)puVar1 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar1 + 0x1c)" ( (binary_expression "(long)puVar1 + 0x1c" (cast_expression "(long)puVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*puVar1 = uVar2;" (assignment_expression "*puVar1 = uVar2" (pointer_expression "*puVar1" * identifier) = identifier) ;) (expression_statement "puVar1[1] = param_3;" (assignment_expression "puVar1[1] = param_3" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[2] = param_4;" (assignment_expression "puVar1[2] = param_4" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(int *)(puVar1 + 3) = param_5;" (assignment_expression "*(int *)(puVar1 + 3) = param_5" (pointer_expression "*(int *)(puVar1 + 3)" * (cast_expression "(int *)(puVar1 + 3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 3)" ( (binary_expression "puVar1 + 3" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar1[4] = param_6;" (assignment_expression "puVar1[4] = param_6" (subscript_expression "puVar1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined8 **)(param_2 + 0x78) = puVar1;" (assignment_expression "*(undefined8 **)(param_2 + 0x78) = puVar1" (pointer_expression "*(undefined8 **)(param_2 + 0x78)" * (cast_expression "(undefined8 **)(param_2 + 0x78)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x78)" ( (binary_expression "param_2 + 0x78" identifier + number_literal) )))) = identifier) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "uVar2 = FUN_0012d410(param_1,param_3,param_4,param_5,param_6);" (assignment_expression "uVar2 = FUN_0012d410(param_1,param_3,param_4,param_5,param_6)" identifier = (call_expression "FUN_0012d410(param_1,param_3,param_4,param_5,param_6)" identifier (argument_list "(param_1,param_3,param_4,param_5,param_6)" ( identifier , identifier , identifier , identifier , identifier )))) ;) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) && (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 ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) 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) ;) (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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT )))) ;) (return_statement return IDENT ;) })))
(function_definition "undefined8\nFUN_0012e770(undefined8 param_1,long param_2,undefined8 param_3,undefined8 param_4,int param_5,\n            undefined8 param_6)\n\n{\n  undefined8 *puVar1;\n  undefined8 uVar2;\n  \n  if (((1 < param_5 - 1U) && (*(int *)(param_2 + 0x60) != 0)) &&\n     ((*(int *)(param_2 + 0x40) != 0 || (*(int *)(param_2 + 0x44) == 0)))) {\n    puVar1 = (undefined8 *)xmalloc(0x28);\n    uVar2 = *(undefined8 *)(param_2 + 0x78);\n    *(undefined4 *)((long)puVar1 + 0x1c) = 0;\n    *puVar1 = uVar2;\n    puVar1[1] = param_3;\n    puVar1[2] = param_4;\n    *(int *)(puVar1 + 3) = param_5;\n    puVar1[4] = param_6;\n    *(undefined8 **)(param_2 + 0x78) = puVar1;\n    return 1;\n  }\n  uVar2 = FUN_0012d410(param_1,param_3,param_4,param_5,param_6);\n  return uVar2;\n}" (type_identifier "undefined8") (function_declarator "FUN_0012e770(undefined8 param_1,long param_2,undefined8 param_3,undefined8 param_4,int param_5,\n            undefined8 param_6)" (identifier "FUN_0012e770") (parameter_list "(undefined8 param_1,long param_2,undefined8 param_3,undefined8 param_4,int param_5,\n            undefined8 param_6)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (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")) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) (, ",") (parameter_declaration "undefined8 param_6" (type_identifier "undefined8") (identifier "param_6")) () ")"))) (compound_statement "{\n  undefined8 *puVar1;\n  undefined8 uVar2;\n  \n  if (((1 < param_5 - 1U) && (*(int *)(param_2 + 0x60) != 0)) &&\n     ((*(int *)(param_2 + 0x40) != 0 || (*(int *)(param_2 + 0x44) == 0)))) {\n    puVar1 = (undefined8 *)xmalloc(0x28);\n    uVar2 = *(undefined8 *)(param_2 + 0x78);\n    *(undefined4 *)((long)puVar1 + 0x1c) = 0;\n    *puVar1 = uVar2;\n    puVar1[1] = param_3;\n    puVar1[2] = param_4;\n    *(int *)(puVar1 + 3) = param_5;\n    puVar1[4] = param_6;\n    *(undefined8 **)(param_2 + 0x78) = puVar1;\n    return 1;\n  }\n  uVar2 = FUN_0012d410(param_1,param_3,param_4,param_5,param_6);\n  return uVar2;\n}" ({ "{") (declaration "undefined8 *puVar1;" (type_identifier "undefined8") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (if_statement "if (((1 < param_5 - 1U) && (*(int *)(param_2 + 0x60) != 0)) &&\n     ((*(int *)(param_2 + 0x40) != 0 || (*(int *)(param_2 + 0x44) == 0)))) {\n    puVar1 = (undefined8 *)xmalloc(0x28);\n    uVar2 = *(undefined8 *)(param_2 + 0x78);\n    *(undefined4 *)((long)puVar1 + 0x1c) = 0;\n    *puVar1 = uVar2;\n    puVar1[1] = param_3;\n    puVar1[2] = param_4;\n    *(int *)(puVar1 + 3) = param_5;\n    puVar1[4] = param_6;\n    *(undefined8 **)(param_2 + 0x78) = puVar1;\n    return 1;\n  }" (if "if") (parenthesized_expression "(((1 < param_5 - 1U) && (*(int *)(param_2 + 0x60) != 0)) &&\n     ((*(int *)(param_2 + 0x40) != 0 || (*(int *)(param_2 + 0x44) == 0))))" (( "(") (binary_expression "((1 < param_5 - 1U) && (*(int *)(param_2 + 0x60) != 0)) &&\n     ((*(int *)(param_2 + 0x40) != 0 || (*(int *)(param_2 + 0x44) == 0)))" (parenthesized_expression "((1 < param_5 - 1U) && (*(int *)(param_2 + 0x60) != 0))" (( "(") (binary_expression "(1 < param_5 - 1U) && (*(int *)(param_2 + 0x60) != 0)" (parenthesized_expression "(1 < param_5 - 1U)" (( "(") (binary_expression "1 < param_5 - 1U" (number_literal "1") (< "<") (binary_expression "param_5 - 1U" (identifier "param_5") (- "-") (number_literal "1U"))) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(param_2 + 0x60) != 0)" (( "(") (binary_expression "*(int *)(param_2 + 0x60) != 0" (pointer_expression "*(int *)(param_2 + 0x60)" (* "*") (cast_expression "(int *)(param_2 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x60)" (( "(") (binary_expression "param_2 + 0x60" (identifier "param_2") (+ "+") (number_literal "0x60")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((*(int *)(param_2 + 0x40) != 0 || (*(int *)(param_2 + 0x44) == 0)))" (( "(") (parenthesized_expression "(*(int *)(param_2 + 0x40) != 0 || (*(int *)(param_2 + 0x44) == 0))" (( "(") (binary_expression "*(int *)(param_2 + 0x40) != 0 || (*(int *)(param_2 + 0x44) == 0)" (binary_expression "*(int *)(param_2 + 0x40) != 0" (pointer_expression "*(int *)(param_2 + 0x40)" (* "*") (cast_expression "(int *)(param_2 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x40)" (( "(") (binary_expression "param_2 + 0x40" (identifier "param_2") (+ "+") (number_literal "0x40")) () ")")))) (!= "!=") (number_literal "0")) (|| "||") (parenthesized_expression "(*(int *)(param_2 + 0x44) == 0)" (( "(") (binary_expression "*(int *)(param_2 + 0x44) == 0" (pointer_expression "*(int *)(param_2 + 0x44)" (* "*") (cast_expression "(int *)(param_2 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x44)" (( "(") (binary_expression "param_2 + 0x44" (identifier "param_2") (+ "+") (number_literal "0x44")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n    puVar1 = (undefined8 *)xmalloc(0x28);\n    uVar2 = *(undefined8 *)(param_2 + 0x78);\n    *(undefined4 *)((long)puVar1 + 0x1c) = 0;\n    *puVar1 = uVar2;\n    puVar1[1] = param_3;\n    puVar1[2] = param_4;\n    *(int *)(puVar1 + 3) = param_5;\n    puVar1[4] = param_6;\n    *(undefined8 **)(param_2 + 0x78) = puVar1;\n    return 1;\n  }" ({ "{") (expression_statement "puVar1 = (undefined8 *)xmalloc(0x28);" (assignment_expression "puVar1 = (undefined8 *)xmalloc(0x28)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)xmalloc(0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(0x28)" (identifier "xmalloc") (argument_list "(0x28)" (( "(") (number_literal "0x28") () ")"))))) (; ";")) (expression_statement "uVar2 = *(undefined8 *)(param_2 + 0x78);" (assignment_expression "uVar2 = *(undefined8 *)(param_2 + 0x78)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined8 *)(param_2 + 0x78)" (* "*") (cast_expression "(undefined8 *)(param_2 + 0x78)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x78)" (( "(") (binary_expression "param_2 + 0x78" (identifier "param_2") (+ "+") (number_literal "0x78")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)((long)puVar1 + 0x1c) = 0;" (assignment_expression "*(undefined4 *)((long)puVar1 + 0x1c) = 0" (pointer_expression "*(undefined4 *)((long)puVar1 + 0x1c)" (* "*") (cast_expression "(undefined4 *)((long)puVar1 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar1 + 0x1c)" (( "(") (binary_expression "(long)puVar1 + 0x1c" (cast_expression "(long)puVar1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar1")) (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar1 = uVar2;" (assignment_expression "*puVar1 = uVar2" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "puVar1[1] = param_3;" (assignment_expression "puVar1[1] = param_3" (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "param_3")) (; ";")) (expression_statement "puVar1[2] = param_4;" (assignment_expression "puVar1[2] = param_4" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "param_4")) (; ";")) (expression_statement "*(int *)(puVar1 + 3) = param_5;" (assignment_expression "*(int *)(puVar1 + 3) = param_5" (pointer_expression "*(int *)(puVar1 + 3)" (* "*") (cast_expression "(int *)(puVar1 + 3)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + 3)" (( "(") (binary_expression "puVar1 + 3" (identifier "puVar1") (+ "+") (number_literal "3")) () ")")))) (= "=") (identifier "param_5")) (; ";")) (expression_statement "puVar1[4] = param_6;" (assignment_expression "puVar1[4] = param_6" (subscript_expression "puVar1[4]" (identifier "puVar1") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "param_6")) (; ";")) (expression_statement "*(undefined8 **)(param_2 + 0x78) = puVar1;" (assignment_expression "*(undefined8 **)(param_2 + 0x78) = puVar1" (pointer_expression "*(undefined8 **)(param_2 + 0x78)" (* "*") (cast_expression "(undefined8 **)(param_2 + 0x78)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x78)" (( "(") (binary_expression "param_2 + 0x78" (identifier "param_2") (+ "+") (number_literal "0x78")) () ")")))) (= "=") (identifier "puVar1")) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "uVar2 = FUN_0012d410(param_1,param_3,param_4,param_5,param_6);" (assignment_expression "uVar2 = FUN_0012d410(param_1,param_3,param_4,param_5,param_6)" (identifier "uVar2") (= "=") (call_expression "FUN_0012d410(param_1,param_3,param_4,param_5,param_6)" (identifier "FUN_0012d410") (argument_list "(param_1,param_3,param_4,param_5,param_6)" (( "(") (identifier "param_1") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "param_5") (, ",") (identifier "param_6") () ")")))) (; ";")) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}")))

type_1
function_1
          (void *dhandle,type_2 *info,char *name,type_3 type,type_4 var_1,
          type_5 val)

{
  type_6 *psVar1;
  type_1 bVar2;
  type_6 *psVar3;
  
  if (((1 < var_1 - var_2) && (info->within_function != 0)) &&
     ((info->gcc_compiled != 0 || (info->n_opt_found == 0)))) {
    psVar3 = (type_6 *)var_3(0x28);
    psVar1 = info->pending;
    *(type_7 *)&psVar3->field_0x1c = 0;
    psVar3->next = psVar1;
    psVar3->name = name;
    psVar3->type = type;
    psVar3->var_1 = var_1;
    psVar3->val = val;
    info->pending = psVar3;
    return 1;
  }
  bVar2 = var_4(dhandle,name,type,var_1,val);
  return bVar2;
}


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

undefined8
MASKED(undefined8 param_1,long param_2,undefined8 param_3,undefined8 param_4,int param_5,
            undefined8 param_6)

{
  undefined8 *puVar1;
  undefined8 uVar2;
  
  if (((1 < param_5 - 1U) && (*(int *)(param_2 + 0x60) != 0)) &&
     ((*(int *)(param_2 + 0x40) != 0 || (*(int *)(param_2 + 0x44) == 0)))) {
    puVar1 = (undefined8 *)xmalloc(0x28);
    uVar2 = *(undefined8 *)(param_2 + 0x78);
    *(undefined4 *)((long)puVar1 + 0x1c) = 0;
    *puVar1 = uVar2;
    puVar1[1] = param_3;
    puVar1[2] = param_4;
    *(int *)(puVar1 + 3) = param_5;
    puVar1[4] = param_6;
    *(undefined8 **)(param_2 + 0x78) = puVar1;
    return 1;
  }
  uVar2 = FUN_0012d410(param_1,param_3,param_4,param_5,param_6);
  return uVar2;
}

