
void free_state(re_dfastate_t *state)

{
  (*(code *)PTR_free_0003e300)((state->non_eps_nodes).elems);
  (*(code *)PTR_free_0003e300)((state->inveclosure).elems);
  if (state->entrance_nodes != &state->nodes) {
    (*(code *)PTR_free_0003e300)(state->entrance_nodes->elems);
    (*(code *)PTR_free_0003e300)(state->entrance_nodes);
  }
  (*(code *)PTR_free_0003e300)((state->nodes).elems);
  (*(code *)PTR_free_0003e300)(state->word_trtable);
  (*(code *)PTR_free_0003e300)(state->trtable);
  (*(code *)PTR_free_0003e300)(state);
  return;
}



void FUN_0001b57c(int param_1)

{
  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x18));
  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x24));
  if (*(int *)(param_1 + 0x28) != param_1 + 4) {
    (*(code *)PTR_free_0003e300)(*(undefined4 *)(*(int *)(param_1 + 0x28) + 8));
    (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x28));
  }
  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0xc));
  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x30));
  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x2c));
  (*(code *)PTR_free_0003e300)(param_1);
  return;
}


lui gp,0x3
addiu gp,gp,-0x54bc
addu gp,gp,t9
addiu sp,sp,-0x20
lw t9,-0x7dc0(gp)
sw s0,0x18(sp)
or s0,a0,zero
sw gp,0x10(sp)
sw ra,0x1c(sp)
jalr t9
_lw a0,0x18(a0)
lw gp,0x10(sp)
lw t9,-0x7dc0(gp)
jalr t9
_lw a0,0x24(s0)
addiu v1,s0,0x4
lw v0,0x28(s0)
beq v0,v1,0x0001b5e8
_lw gp,0x10(sp)
lw t9,-0x7dc0(gp)
jalr t9
_lw a0,0x8(v0)
lw gp,0x10(sp)
lw t9,-0x7dc0(gp)
jalr t9
_lw a0,0x28(s0)
lw gp,0x10(sp)
lw t9,-0x7dc0(gp)
jalr t9
_lw a0,0xc(s0)
lw gp,0x10(sp)
lw t9,-0x7dc0(gp)
jalr t9
_lw a0,0x30(s0)
lw gp,0x10(sp)
lw t9,-0x7dc0(gp)
jalr t9
_lw a0,0x2c(s0)
or a0,s0,zero
lw gp,0x10(sp)
lw ra,0x1c(sp)
lw s0,0x18(sp)
lw t9,-0x7dc0(gp)
jr t9
_addiu sp,sp,0x20
(translation_unit "void FUN_0001b57c(int param_1)\n\n{\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x18));\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x24));\n  if (*(int *)(param_1 + 0x28) != param_1 + 4) {\n    (*(code *)PTR_free_0003e300)(*(undefined4 *)(*(int *)(param_1 + 0x28) + 8));\n    (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x28));\n  }\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0xc));\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x30));\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x2c));\n  (*(code *)PTR_free_0003e300)(param_1);\n  return;\n}\n\n" (function_definition "void FUN_0001b57c(int param_1)\n\n{\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x18));\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x24));\n  if (*(int *)(param_1 + 0x28) != param_1 + 4) {\n    (*(code *)PTR_free_0003e300)(*(undefined4 *)(*(int *)(param_1 + 0x28) + 8));\n    (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x28));\n  }\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0xc));\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x30));\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x2c));\n  (*(code *)PTR_free_0003e300)(param_1);\n  return;\n}" primitive_type (function_declarator "FUN_0001b57c(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x18));\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x24));\n  if (*(int *)(param_1 + 0x28) != param_1 + 4) {\n    (*(code *)PTR_free_0003e300)(*(undefined4 *)(*(int *)(param_1 + 0x28) + 8));\n    (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x28));\n  }\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0xc));\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x30));\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x2c));\n  (*(code *)PTR_free_0003e300)(param_1);\n  return;\n}" { (expression_statement "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x18));" (call_expression "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x18))" (parenthesized_expression "(*(code *)PTR_free_0003e300)" ( (pointer_expression "*(code *)PTR_free_0003e300" * (cast_expression "(code *)PTR_free_0003e300" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(param_1 + 0x18))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x18)" * (cast_expression "(undefined4 *)(param_1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) ))) ;) (expression_statement "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x24));" (call_expression "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x24))" (parenthesized_expression "(*(code *)PTR_free_0003e300)" ( (pointer_expression "*(code *)PTR_free_0003e300" * (cast_expression "(code *)PTR_free_0003e300" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(param_1 + 0x24))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x24)" * (cast_expression "(undefined4 *)(param_1 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) ))) ;) (if_statement "if (*(int *)(param_1 + 0x28) != param_1 + 4) {\n    (*(code *)PTR_free_0003e300)(*(undefined4 *)(*(int *)(param_1 + 0x28) + 8));\n    (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x28));\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x28) != param_1 + 4)" ( (binary_expression "*(int *)(param_1 + 0x28) != param_1 + 4" (pointer_expression "*(int *)(param_1 + 0x28)" * (cast_expression "(int *)(param_1 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) != (binary_expression "param_1 + 4" identifier + number_literal)) )) (compound_statement "{\n    (*(code *)PTR_free_0003e300)(*(undefined4 *)(*(int *)(param_1 + 0x28) + 8));\n    (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x28));\n  }" { (expression_statement "(*(code *)PTR_free_0003e300)(*(undefined4 *)(*(int *)(param_1 + 0x28) + 8));" (call_expression "(*(code *)PTR_free_0003e300)(*(undefined4 *)(*(int *)(param_1 + 0x28) + 8))" (parenthesized_expression "(*(code *)PTR_free_0003e300)" ( (pointer_expression "*(code *)PTR_free_0003e300" * (cast_expression "(code *)PTR_free_0003e300" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(*(int *)(param_1 + 0x28) + 8))" ( (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x28) + 8)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x28) + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x28) + 8)" ( (binary_expression "*(int *)(param_1 + 0x28) + 8" (pointer_expression "*(int *)(param_1 + 0x28)" * (cast_expression "(int *)(param_1 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) + number_literal) )))) ))) ;) (expression_statement "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x28));" (call_expression "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x28))" (parenthesized_expression "(*(code *)PTR_free_0003e300)" ( (pointer_expression "*(code *)PTR_free_0003e300" * (cast_expression "(code *)PTR_free_0003e300" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(param_1 + 0x28))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x28)" * (cast_expression "(undefined4 *)(param_1 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) ))) ;) })) (expression_statement "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0xc));" (call_expression "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0xc))" (parenthesized_expression "(*(code *)PTR_free_0003e300)" ( (pointer_expression "*(code *)PTR_free_0003e300" * (cast_expression "(code *)PTR_free_0003e300" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(param_1 + 0xc))" ( (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x30));" (call_expression "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x30))" (parenthesized_expression "(*(code *)PTR_free_0003e300)" ( (pointer_expression "*(code *)PTR_free_0003e300" * (cast_expression "(code *)PTR_free_0003e300" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(param_1 + 0x30))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x30)" * (cast_expression "(undefined4 *)(param_1 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) ))) ;) (expression_statement "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x2c));" (call_expression "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x2c))" (parenthesized_expression "(*(code *)PTR_free_0003e300)" ( (pointer_expression "*(code *)PTR_free_0003e300" * (cast_expression "(code *)PTR_free_0003e300" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(param_1 + 0x2c))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x2c)" * (cast_expression "(undefined4 *)(param_1 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) ))) ;) (expression_statement "(*(code *)PTR_free_0003e300)(param_1);" (call_expression "(*(code *)PTR_free_0003e300)(param_1)" (parenthesized_expression "(*(code *)PTR_free_0003e300)" ( (pointer_expression "*(code *)PTR_free_0003e300" * (cast_expression "(code *)PTR_free_0003e300" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void free_state(re_dfastate_t *state)\n\n{\n  (*(code *)PTR_free_0003e300)((state->non_eps_nodes).elems);\n  (*(code *)PTR_free_0003e300)((state->inveclosure).elems);\n  if (state->entrance_nodes != &state->nodes) {\n    (*(code *)PTR_free_0003e300)(state->entrance_nodes->elems);\n    (*(code *)PTR_free_0003e300)(state->entrance_nodes);\n  }\n  (*(code *)PTR_free_0003e300)((state->nodes).elems);\n  (*(code *)PTR_free_0003e300)(state->word_trtable);\n  (*(code *)PTR_free_0003e300)(state->trtable);\n  (*(code *)PTR_free_0003e300)(state);\n  return;\n}\n\n" (function_definition "void free_state(re_dfastate_t *state)\n\n{\n  (*(code *)PTR_free_0003e300)((state->non_eps_nodes).elems);\n  (*(code *)PTR_free_0003e300)((state->inveclosure).elems);\n  if (state->entrance_nodes != &state->nodes) {\n    (*(code *)PTR_free_0003e300)(state->entrance_nodes->elems);\n    (*(code *)PTR_free_0003e300)(state->entrance_nodes);\n  }\n  (*(code *)PTR_free_0003e300)((state->nodes).elems);\n  (*(code *)PTR_free_0003e300)(state->word_trtable);\n  (*(code *)PTR_free_0003e300)(state->trtable);\n  (*(code *)PTR_free_0003e300)(state);\n  return;\n}" primitive_type (function_declarator "free_state(re_dfastate_t *state)" identifier (parameter_list "(re_dfastate_t *state)" ( (parameter_declaration "re_dfastate_t *state" type_identifier (pointer_declarator "*state" * identifier)) ))) (compound_statement "{\n  (*(code *)PTR_free_0003e300)((state->non_eps_nodes).elems);\n  (*(code *)PTR_free_0003e300)((state->inveclosure).elems);\n  if (state->entrance_nodes != &state->nodes) {\n    (*(code *)PTR_free_0003e300)(state->entrance_nodes->elems);\n    (*(code *)PTR_free_0003e300)(state->entrance_nodes);\n  }\n  (*(code *)PTR_free_0003e300)((state->nodes).elems);\n  (*(code *)PTR_free_0003e300)(state->word_trtable);\n  (*(code *)PTR_free_0003e300)(state->trtable);\n  (*(code *)PTR_free_0003e300)(state);\n  return;\n}" { (expression_statement "(*(code *)PTR_free_0003e300)((state->non_eps_nodes).elems);" (call_expression "(*(code *)PTR_free_0003e300)((state->non_eps_nodes).elems)" (parenthesized_expression "(*(code *)PTR_free_0003e300)" ( (pointer_expression "*(code *)PTR_free_0003e300" * (cast_expression "(code *)PTR_free_0003e300" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((state->non_eps_nodes).elems)" ( (field_expression "(state->non_eps_nodes).elems" (parenthesized_expression "(state->non_eps_nodes)" ( (field_expression "state->non_eps_nodes" identifier -> field_identifier) )) . field_identifier) ))) ;) (expression_statement "(*(code *)PTR_free_0003e300)((state->inveclosure).elems);" (call_expression "(*(code *)PTR_free_0003e300)((state->inveclosure).elems)" (parenthesized_expression "(*(code *)PTR_free_0003e300)" ( (pointer_expression "*(code *)PTR_free_0003e300" * (cast_expression "(code *)PTR_free_0003e300" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((state->inveclosure).elems)" ( (field_expression "(state->inveclosure).elems" (parenthesized_expression "(state->inveclosure)" ( (field_expression "state->inveclosure" identifier -> field_identifier) )) . field_identifier) ))) ;) (if_statement "if (state->entrance_nodes != &state->nodes) {\n    (*(code *)PTR_free_0003e300)(state->entrance_nodes->elems);\n    (*(code *)PTR_free_0003e300)(state->entrance_nodes);\n  }" if (parenthesized_expression "(state->entrance_nodes != &state->nodes)" ( (binary_expression "state->entrance_nodes != &state->nodes" (field_expression "state->entrance_nodes" identifier -> field_identifier) != (pointer_expression "&state->nodes" & (field_expression "state->nodes" identifier -> field_identifier))) )) (compound_statement "{\n    (*(code *)PTR_free_0003e300)(state->entrance_nodes->elems);\n    (*(code *)PTR_free_0003e300)(state->entrance_nodes);\n  }" { (expression_statement "(*(code *)PTR_free_0003e300)(state->entrance_nodes->elems);" (call_expression "(*(code *)PTR_free_0003e300)(state->entrance_nodes->elems)" (parenthesized_expression "(*(code *)PTR_free_0003e300)" ( (pointer_expression "*(code *)PTR_free_0003e300" * (cast_expression "(code *)PTR_free_0003e300" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(state->entrance_nodes->elems)" ( (field_expression "state->entrance_nodes->elems" (field_expression "state->entrance_nodes" identifier -> field_identifier) -> field_identifier) ))) ;) (expression_statement "(*(code *)PTR_free_0003e300)(state->entrance_nodes);" (call_expression "(*(code *)PTR_free_0003e300)(state->entrance_nodes)" (parenthesized_expression "(*(code *)PTR_free_0003e300)" ( (pointer_expression "*(code *)PTR_free_0003e300" * (cast_expression "(code *)PTR_free_0003e300" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(state->entrance_nodes)" ( (field_expression "state->entrance_nodes" identifier -> field_identifier) ))) ;) })) (expression_statement "(*(code *)PTR_free_0003e300)((state->nodes).elems);" (call_expression "(*(code *)PTR_free_0003e300)((state->nodes).elems)" (parenthesized_expression "(*(code *)PTR_free_0003e300)" ( (pointer_expression "*(code *)PTR_free_0003e300" * (cast_expression "(code *)PTR_free_0003e300" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((state->nodes).elems)" ( (field_expression "(state->nodes).elems" (parenthesized_expression "(state->nodes)" ( (field_expression "state->nodes" identifier -> field_identifier) )) . field_identifier) ))) ;) (expression_statement "(*(code *)PTR_free_0003e300)(state->word_trtable);" (call_expression "(*(code *)PTR_free_0003e300)(state->word_trtable)" (parenthesized_expression "(*(code *)PTR_free_0003e300)" ( (pointer_expression "*(code *)PTR_free_0003e300" * (cast_expression "(code *)PTR_free_0003e300" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(state->word_trtable)" ( (field_expression "state->word_trtable" identifier -> field_identifier) ))) ;) (expression_statement "(*(code *)PTR_free_0003e300)(state->trtable);" (call_expression "(*(code *)PTR_free_0003e300)(state->trtable)" (parenthesized_expression "(*(code *)PTR_free_0003e300)" ( (pointer_expression "*(code *)PTR_free_0003e300" * (cast_expression "(code *)PTR_free_0003e300" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(state->trtable)" ( (field_expression "state->trtable" identifier -> field_identifier) ))) ;) (expression_statement "(*(code *)PTR_free_0003e300)(state);" (call_expression "(*(code *)PTR_free_0003e300)(state)" (parenthesized_expression "(*(code *)PTR_free_0003e300)" ( (pointer_expression "*(code *)PTR_free_0003e300" * (cast_expression "(code *)PTR_free_0003e300" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(state)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0001b57c(int param_1)\n\n{\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x18));\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x24));\n  if (*(int *)(param_1 + 0x28) != param_1 + 4) {\n    (*(code *)PTR_free_0003e300)(*(undefined4 *)(*(int *)(param_1 + 0x28) + 8));\n    (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x28));\n  }\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0xc));\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x30));\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x2c));\n  (*(code *)PTR_free_0003e300)(param_1);\n  return;\n}\n\n" (function_definition "void FUN_0001b57c(int param_1)\n\n{\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x18));\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x24));\n  if (*(int *)(param_1 + 0x28) != param_1 + 4) {\n    (*(code *)PTR_free_0003e300)(*(undefined4 *)(*(int *)(param_1 + 0x28) + 8));\n    (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x28));\n  }\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0xc));\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x30));\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x2c));\n  (*(code *)PTR_free_0003e300)(param_1);\n  return;\n}" primitive_type (function_declarator "FUN_0001b57c(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x18));\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x24));\n  if (*(int *)(param_1 + 0x28) != param_1 + 4) {\n    (*(code *)PTR_free_0003e300)(*(undefined4 *)(*(int *)(param_1 + 0x28) + 8));\n    (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x28));\n  }\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0xc));\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x30));\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x2c));\n  (*(code *)PTR_free_0003e300)(param_1);\n  return;\n}" { (expression_statement "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x18));" (call_expression "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x18))" (parenthesized_expression "(*(code *)PTR_free_0003e300)" ( (pointer_expression "*(code *)PTR_free_0003e300" * (cast_expression "(code *)PTR_free_0003e300" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(param_1 + 0x18))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x18)" * (cast_expression "(undefined4 *)(param_1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) ))) ;) (expression_statement "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x24));" (call_expression "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x24))" (parenthesized_expression "(*(code *)PTR_free_0003e300)" ( (pointer_expression "*(code *)PTR_free_0003e300" * (cast_expression "(code *)PTR_free_0003e300" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(param_1 + 0x24))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x24)" * (cast_expression "(undefined4 *)(param_1 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) ))) ;) (if_statement "if (*(int *)(param_1 + 0x28) != param_1 + 4) {\n    (*(code *)PTR_free_0003e300)(*(undefined4 *)(*(int *)(param_1 + 0x28) + 8));\n    (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x28));\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x28) != param_1 + 4)" ( (binary_expression "*(int *)(param_1 + 0x28) != param_1 + 4" (pointer_expression "*(int *)(param_1 + 0x28)" * (cast_expression "(int *)(param_1 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) != (binary_expression "param_1 + 4" identifier + number_literal)) )) (compound_statement "{\n    (*(code *)PTR_free_0003e300)(*(undefined4 *)(*(int *)(param_1 + 0x28) + 8));\n    (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x28));\n  }" { (expression_statement "(*(code *)PTR_free_0003e300)(*(undefined4 *)(*(int *)(param_1 + 0x28) + 8));" (call_expression "(*(code *)PTR_free_0003e300)(*(undefined4 *)(*(int *)(param_1 + 0x28) + 8))" (parenthesized_expression "(*(code *)PTR_free_0003e300)" ( (pointer_expression "*(code *)PTR_free_0003e300" * (cast_expression "(code *)PTR_free_0003e300" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(*(int *)(param_1 + 0x28) + 8))" ( (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x28) + 8)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x28) + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x28) + 8)" ( (binary_expression "*(int *)(param_1 + 0x28) + 8" (pointer_expression "*(int *)(param_1 + 0x28)" * (cast_expression "(int *)(param_1 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) + number_literal) )))) ))) ;) (expression_statement "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x28));" (call_expression "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x28))" (parenthesized_expression "(*(code *)PTR_free_0003e300)" ( (pointer_expression "*(code *)PTR_free_0003e300" * (cast_expression "(code *)PTR_free_0003e300" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(param_1 + 0x28))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x28)" * (cast_expression "(undefined4 *)(param_1 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) ))) ;) })) (expression_statement "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0xc));" (call_expression "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0xc))" (parenthesized_expression "(*(code *)PTR_free_0003e300)" ( (pointer_expression "*(code *)PTR_free_0003e300" * (cast_expression "(code *)PTR_free_0003e300" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(param_1 + 0xc))" ( (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x30));" (call_expression "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x30))" (parenthesized_expression "(*(code *)PTR_free_0003e300)" ( (pointer_expression "*(code *)PTR_free_0003e300" * (cast_expression "(code *)PTR_free_0003e300" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(param_1 + 0x30))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x30)" * (cast_expression "(undefined4 *)(param_1 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) ))) ;) (expression_statement "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x2c));" (call_expression "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x2c))" (parenthesized_expression "(*(code *)PTR_free_0003e300)" ( (pointer_expression "*(code *)PTR_free_0003e300" * (cast_expression "(code *)PTR_free_0003e300" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(param_1 + 0x2c))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x2c)" * (cast_expression "(undefined4 *)(param_1 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) ))) ;) (expression_statement "(*(code *)PTR_free_0003e300)(param_1);" (call_expression "(*(code *)PTR_free_0003e300)(param_1)" (parenthesized_expression "(*(code *)PTR_free_0003e300)" ( (pointer_expression "*(code *)PTR_free_0003e300" * (cast_expression "(code *)PTR_free_0003e300" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_0001b57c(int param_1)\n\n{\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x18));\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x24));\n  if (*(int *)(param_1 + 0x28) != param_1 + 4) {\n    (*(code *)PTR_free_0003e300)(*(undefined4 *)(*(int *)(param_1 + 0x28) + 8));\n    (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x28));\n  }\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0xc));\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x30));\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x2c));\n  (*(code *)PTR_free_0003e300)(param_1);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0001b57c(int param_1)" (identifier "FUN_0001b57c") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x18));\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x24));\n  if (*(int *)(param_1 + 0x28) != param_1 + 4) {\n    (*(code *)PTR_free_0003e300)(*(undefined4 *)(*(int *)(param_1 + 0x28) + 8));\n    (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x28));\n  }\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0xc));\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x30));\n  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x2c));\n  (*(code *)PTR_free_0003e300)(param_1);\n  return;\n}" ({ "{") (expression_statement "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x18));" (call_expression "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x18))" (parenthesized_expression "(*(code *)PTR_free_0003e300)" (( "(") (pointer_expression "*(code *)PTR_free_0003e300" (* "*") (cast_expression "(code *)PTR_free_0003e300" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0003e300"))) () ")")) (argument_list "(*(undefined4 *)(param_1 + 0x18))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x18)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) () ")"))) (; ";")) (expression_statement "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x24));" (call_expression "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x24))" (parenthesized_expression "(*(code *)PTR_free_0003e300)" (( "(") (pointer_expression "*(code *)PTR_free_0003e300" (* "*") (cast_expression "(code *)PTR_free_0003e300" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0003e300"))) () ")")) (argument_list "(*(undefined4 *)(param_1 + 0x24))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x24)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x24)" (( "(") (binary_expression "param_1 + 0x24" (identifier "param_1") (+ "+") (number_literal "0x24")) () ")")))) () ")"))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x28) != param_1 + 4) {\n    (*(code *)PTR_free_0003e300)(*(undefined4 *)(*(int *)(param_1 + 0x28) + 8));\n    (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x28));\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x28) != param_1 + 4)" (( "(") (binary_expression "*(int *)(param_1 + 0x28) != param_1 + 4" (pointer_expression "*(int *)(param_1 + 0x28)" (* "*") (cast_expression "(int *)(param_1 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (!= "!=") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4"))) () ")")) (compound_statement "{\n    (*(code *)PTR_free_0003e300)(*(undefined4 *)(*(int *)(param_1 + 0x28) + 8));\n    (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x28));\n  }" ({ "{") (expression_statement "(*(code *)PTR_free_0003e300)(*(undefined4 *)(*(int *)(param_1 + 0x28) + 8));" (call_expression "(*(code *)PTR_free_0003e300)(*(undefined4 *)(*(int *)(param_1 + 0x28) + 8))" (parenthesized_expression "(*(code *)PTR_free_0003e300)" (( "(") (pointer_expression "*(code *)PTR_free_0003e300" (* "*") (cast_expression "(code *)PTR_free_0003e300" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0003e300"))) () ")")) (argument_list "(*(undefined4 *)(*(int *)(param_1 + 0x28) + 8))" (( "(") (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x28) + 8)" (* "*") (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x28) + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x28) + 8)" (( "(") (binary_expression "*(int *)(param_1 + 0x28) + 8" (pointer_expression "*(int *)(param_1 + 0x28)" (* "*") (cast_expression "(int *)(param_1 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "8")) () ")")))) () ")"))) (; ";")) (expression_statement "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x28));" (call_expression "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x28))" (parenthesized_expression "(*(code *)PTR_free_0003e300)" (( "(") (pointer_expression "*(code *)PTR_free_0003e300" (* "*") (cast_expression "(code *)PTR_free_0003e300" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0003e300"))) () ")")) (argument_list "(*(undefined4 *)(param_1 + 0x28))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x28)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) () ")"))) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0xc));" (call_expression "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0xc))" (parenthesized_expression "(*(code *)PTR_free_0003e300)" (( "(") (pointer_expression "*(code *)PTR_free_0003e300" (* "*") (cast_expression "(code *)PTR_free_0003e300" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0003e300"))) () ")")) (argument_list "(*(undefined4 *)(param_1 + 0xc))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (expression_statement "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x30));" (call_expression "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x30))" (parenthesized_expression "(*(code *)PTR_free_0003e300)" (( "(") (pointer_expression "*(code *)PTR_free_0003e300" (* "*") (cast_expression "(code *)PTR_free_0003e300" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0003e300"))) () ")")) (argument_list "(*(undefined4 *)(param_1 + 0x30))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x30)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) () ")"))) (; ";")) (expression_statement "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x2c));" (call_expression "(*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x2c))" (parenthesized_expression "(*(code *)PTR_free_0003e300)" (( "(") (pointer_expression "*(code *)PTR_free_0003e300" (* "*") (cast_expression "(code *)PTR_free_0003e300" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0003e300"))) () ")")) (argument_list "(*(undefined4 *)(param_1 + 0x2c))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")")))) () ")"))) (; ";")) (expression_statement "(*(code *)PTR_free_0003e300)(param_1);" (call_expression "(*(code *)PTR_free_0003e300)(param_1)" (parenthesized_expression "(*(code *)PTR_free_0003e300)" (( "(") (pointer_expression "*(code *)PTR_free_0003e300" (* "*") (cast_expression "(code *)PTR_free_0003e300" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0003e300"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 *state)

{
  (*(type_2 *)PTR_free_0003e300)((state->non_eps_nodes).elems);
  (*(type_2 *)PTR_free_0003e300)((state->inveclosure).elems);
  if (state->entrance_nodes != &state->nodes) {
    (*(type_2 *)PTR_free_0003e300)(state->entrance_nodes->elems);
    (*(type_2 *)PTR_free_0003e300)(state->entrance_nodes);
  }
  (*(type_2 *)PTR_free_0003e300)((state->nodes).elems);
  (*(type_2 *)PTR_free_0003e300)(state->word_trtable);
  (*(type_2 *)PTR_free_0003e300)(state->trtable);
  (*(type_2 *)PTR_free_0003e300)(state);
  return;
}


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

void MASKED(int param_1)

{
  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x18));
  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x24));
  if (*(int *)(param_1 + 0x28) != param_1 + 4) {
    (*(code *)PTR_free_0003e300)(*(undefined4 *)(*(int *)(param_1 + 0x28) + 8));
    (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x28));
  }
  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0xc));
  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x30));
  (*(code *)PTR_free_0003e300)(*(undefined4 *)(param_1 + 0x2c));
  (*(code *)PTR_free_0003e300)(param_1);
  return;
}

