
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */

void rl_free_keymap(Keymap map)

{
  Keymap map_00;
  rl_command_func_t **pprVar1;
  
  pprVar1 = &map->function;
  if (map != (Keymap)0x0) {
    do {
      while (((KEYMAP_ENTRY *)(pprVar1 + -1))->type != '\x01') {
        if (((KEYMAP_ENTRY *)(pprVar1 + -1))->type == '\x02') {
          xfree(*pprVar1);
        }
        pprVar1 = pprVar1 + 2;
        if (pprVar1 == &map[0x101].function) goto LAB_000e6668;
      }
      map_00 = (Keymap)*pprVar1;
      if (map_00 != (Keymap)0x0) {
        rl_discard_keymap(map_00);
        map_00 = (Keymap)*pprVar1;
      }
      pprVar1 = pprVar1 + 2;
      xfree(map_00);
    } while (pprVar1 != &map[0x101].function);
  }
LAB_000e6668:
  xfree(map);
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void rl_free_keymap(int param_1)

{
  int iVar1;
  int *piVar2;
  
  piVar2 = (int *)(param_1 + 4);
  if (param_1 != 0) {
    do {
      while ((char)piVar2[-1] != '\x01') {
        if ((char)piVar2[-1] == '\x02') {
          xfree(*piVar2);
        }
        piVar2 = piVar2 + 2;
        if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;
      }
      iVar1 = *piVar2;
      if (iVar1 != 0) {
        FUN_000e63b0();
        iVar1 = *piVar2;
      }
      piVar2 = piVar2 + 2;
      xfree(iVar1);
    } while (piVar2 != (int *)(param_1 + 0x80c));
  }
LAB_000e6668:
  xfree(param_1);
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x000312b0
ADD EBX,0x8b9f7
SUB ESP,0xc
MOV EDI,dword ptr [ESP + 0x20]
LEA ESI,[EDI + 0x4]
LEA EBP,[EDI + 0x80c]
TEST EDI,EDI
JNZ 0x000e6640
JMP 0x000e6668
CMP AL,0x2
JNZ 0x000e6639
SUB ESP,0xc
PUSH dword ptr [ESI]
CALL 0x000ad7e0
ADD ESP,0x10
ADD ESI,0x8
CMP ESI,EBP
JZ 0x000e6668
MOVZX EAX,byte ptr [ESI + -0x4]
CMP AL,0x1
JNZ 0x000e6628
MOV EAX,dword ptr [ESI]
TEST EAX,EAX
JZ 0x000e6655
CALL 0x000e63b0
MOV EAX,dword ptr [ESI]
SUB ESP,0xc
ADD ESI,0x8
PUSH EAX
CALL 0x000ad7e0
ADD ESP,0x10
CMP ESI,EBP
JNZ 0x000e6640
SUB ESP,0xc
PUSH EDI
CALL 0x000ad7e0
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid rl_free_keymap(int param_1)\n\n{\n  int iVar1;\n  int *piVar2;\n  \n  piVar2 = (int *)(param_1 + 4);\n  if (param_1 != 0) {\n    do {\n      while ((char)piVar2[-1] != '\x01') {\n        if ((char)piVar2[-1] == '\x02') {\n          xfree(*piVar2);\n        }\n        piVar2 = piVar2 + 2;\n        if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;\n      }\n      iVar1 = *piVar2;\n      if (iVar1 != 0) {\n        FUN_000e63b0();\n        iVar1 = *piVar2;\n      }\n      piVar2 = piVar2 + 2;\n      xfree(iVar1);\n    } while (piVar2 != (int *)(param_1 + 0x80c));\n  }\nLAB_000e6668:\n  xfree(param_1);\n  return;\n}\n\n" comment (function_definition "void rl_free_keymap(int param_1)\n\n{\n  int iVar1;\n  int *piVar2;\n  \n  piVar2 = (int *)(param_1 + 4);\n  if (param_1 != 0) {\n    do {\n      while ((char)piVar2[-1] != '\x01') {\n        if ((char)piVar2[-1] == '\x02') {\n          xfree(*piVar2);\n        }\n        piVar2 = piVar2 + 2;\n        if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;\n      }\n      iVar1 = *piVar2;\n      if (iVar1 != 0) {\n        FUN_000e63b0();\n        iVar1 = *piVar2;\n      }\n      piVar2 = piVar2 + 2;\n      xfree(iVar1);\n    } while (piVar2 != (int *)(param_1 + 0x80c));\n  }\nLAB_000e6668:\n  xfree(param_1);\n  return;\n}" primitive_type (function_declarator "rl_free_keymap(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  \n  piVar2 = (int *)(param_1 + 4);\n  if (param_1 != 0) {\n    do {\n      while ((char)piVar2[-1] != '\x01') {\n        if ((char)piVar2[-1] == '\x02') {\n          xfree(*piVar2);\n        }\n        piVar2 = piVar2 + 2;\n        if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;\n      }\n      iVar1 = *piVar2;\n      if (iVar1 != 0) {\n        FUN_000e63b0();\n        iVar1 = *piVar2;\n      }\n      piVar2 = piVar2 + 2;\n      xfree(iVar1);\n    } while (piVar2 != (int *)(param_1 + 0x80c));\n  }\nLAB_000e6668:\n  xfree(param_1);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (expression_statement "piVar2 = (int *)(param_1 + 4);" (assignment_expression "piVar2 = (int *)(param_1 + 4)" identifier = (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) ;) (if_statement "if (param_1 != 0) {\n    do {\n      while ((char)piVar2[-1] != '\x01') {\n        if ((char)piVar2[-1] == '\x02') {\n          xfree(*piVar2);\n        }\n        piVar2 = piVar2 + 2;\n        if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;\n      }\n      iVar1 = *piVar2;\n      if (iVar1 != 0) {\n        FUN_000e63b0();\n        iVar1 = *piVar2;\n      }\n      piVar2 = piVar2 + 2;\n      xfree(iVar1);\n    } while (piVar2 != (int *)(param_1 + 0x80c));\n  }" if (parenthesized_expression "(param_1 != 0)" ( (binary_expression "param_1 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      while ((char)piVar2[-1] != '\x01') {\n        if ((char)piVar2[-1] == '\x02') {\n          xfree(*piVar2);\n        }\n        piVar2 = piVar2 + 2;\n        if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;\n      }\n      iVar1 = *piVar2;\n      if (iVar1 != 0) {\n        FUN_000e63b0();\n        iVar1 = *piVar2;\n      }\n      piVar2 = piVar2 + 2;\n      xfree(iVar1);\n    } while (piVar2 != (int *)(param_1 + 0x80c));\n  }" { (do_statement "do {\n      while ((char)piVar2[-1] != '\x01') {\n        if ((char)piVar2[-1] == '\x02') {\n          xfree(*piVar2);\n        }\n        piVar2 = piVar2 + 2;\n        if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;\n      }\n      iVar1 = *piVar2;\n      if (iVar1 != 0) {\n        FUN_000e63b0();\n        iVar1 = *piVar2;\n      }\n      piVar2 = piVar2 + 2;\n      xfree(iVar1);\n    } while (piVar2 != (int *)(param_1 + 0x80c));" do (compound_statement "{\n      while ((char)piVar2[-1] != '\x01') {\n        if ((char)piVar2[-1] == '\x02') {\n          xfree(*piVar2);\n        }\n        piVar2 = piVar2 + 2;\n        if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;\n      }\n      iVar1 = *piVar2;\n      if (iVar1 != 0) {\n        FUN_000e63b0();\n        iVar1 = *piVar2;\n      }\n      piVar2 = piVar2 + 2;\n      xfree(iVar1);\n    }" { (while_statement "while ((char)piVar2[-1] != '\x01') {\n        if ((char)piVar2[-1] == '\x02') {\n          xfree(*piVar2);\n        }\n        piVar2 = piVar2 + 2;\n        if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;\n      }" while (parenthesized_expression "((char)piVar2[-1] != '\x01')" ( (binary_expression "(char)piVar2[-1] != '\x01'" (cast_expression "(char)piVar2[-1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar2[-1]" identifier [ number_literal ])) != (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n        if ((char)piVar2[-1] == '\x02') {\n          xfree(*piVar2);\n        }\n        piVar2 = piVar2 + 2;\n        if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;\n      }" { (if_statement "if ((char)piVar2[-1] == '\x02') {\n          xfree(*piVar2);\n        }" if (parenthesized_expression "((char)piVar2[-1] == '\x02')" ( (binary_expression "(char)piVar2[-1] == '\x02'" (cast_expression "(char)piVar2[-1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar2[-1]" identifier [ number_literal ])) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n          xfree(*piVar2);\n        }" { (expression_statement "xfree(*piVar2);" (call_expression "xfree(*piVar2)" identifier (argument_list "(*piVar2)" ( (pointer_expression "*piVar2" * identifier) ))) ;) })) (expression_statement "piVar2 = piVar2 + 2;" (assignment_expression "piVar2 = piVar2 + 2" identifier = (binary_expression "piVar2 + 2" identifier + number_literal)) ;) (if_statement "if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;" if (parenthesized_expression "(piVar2 == (int *)(param_1 + 0x80c))" ( (binary_expression "piVar2 == (int *)(param_1 + 0x80c)" identifier == (cast_expression "(int *)(param_1 + 0x80c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80c)" ( (binary_expression "param_1 + 0x80c" identifier + number_literal) )))) )) (goto_statement "goto LAB_000e6668;" goto statement_identifier ;)) })) (expression_statement "iVar1 = *piVar2;" (assignment_expression "iVar1 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (if_statement "if (iVar1 != 0) {\n        FUN_000e63b0();\n        iVar1 = *piVar2;\n      }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_000e63b0();\n        iVar1 = *piVar2;\n      }" { (expression_statement "FUN_000e63b0();" (call_expression "FUN_000e63b0()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar1 = *piVar2;" (assignment_expression "iVar1 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) })) (expression_statement "piVar2 = piVar2 + 2;" (assignment_expression "piVar2 = piVar2 + 2" identifier = (binary_expression "piVar2 + 2" identifier + number_literal)) ;) (expression_statement "xfree(iVar1);" (call_expression "xfree(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) }) while (parenthesized_expression "(piVar2 != (int *)(param_1 + 0x80c))" ( (binary_expression "piVar2 != (int *)(param_1 + 0x80c)" identifier != (cast_expression "(int *)(param_1 + 0x80c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80c)" ( (binary_expression "param_1 + 0x80c" identifier + number_literal) )))) )) ;) })) (labeled_statement "LAB_000e6668:\n  xfree(param_1);" statement_identifier : (expression_statement "xfree(param_1);" (call_expression "xfree(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;)) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nvoid rl_free_keymap(Keymap map)\n\n{\n  Keymap map_00;\n  rl_command_func_t **pprVar1;\n  \n  pprVar1 = &map->function;\n  if (map != (Keymap)0x0) {\n    do {\n      while (((KEYMAP_ENTRY *)(pprVar1 + -1))->type != '\x01') {\n        if (((KEYMAP_ENTRY *)(pprVar1 + -1))->type == '\x02') {\n          xfree(*pprVar1);\n        }\n        pprVar1 = pprVar1 + 2;\n        if (pprVar1 == &map[0x101].function) goto LAB_000e6668;\n      }\n      map_00 = (Keymap)*pprVar1;\n      if (map_00 != (Keymap)0x0) {\n        rl_discard_keymap(map_00);\n        map_00 = (Keymap)*pprVar1;\n      }\n      pprVar1 = pprVar1 + 2;\n      xfree(map_00);\n    } while (pprVar1 != &map[0x101].function);\n  }\nLAB_000e6668:\n  xfree(map);\n  return;\n}\n\n" comment comment (function_definition "void rl_free_keymap(Keymap map)\n\n{\n  Keymap map_00;\n  rl_command_func_t **pprVar1;\n  \n  pprVar1 = &map->function;\n  if (map != (Keymap)0x0) {\n    do {\n      while (((KEYMAP_ENTRY *)(pprVar1 + -1))->type != '\x01') {\n        if (((KEYMAP_ENTRY *)(pprVar1 + -1))->type == '\x02') {\n          xfree(*pprVar1);\n        }\n        pprVar1 = pprVar1 + 2;\n        if (pprVar1 == &map[0x101].function) goto LAB_000e6668;\n      }\n      map_00 = (Keymap)*pprVar1;\n      if (map_00 != (Keymap)0x0) {\n        rl_discard_keymap(map_00);\n        map_00 = (Keymap)*pprVar1;\n      }\n      pprVar1 = pprVar1 + 2;\n      xfree(map_00);\n    } while (pprVar1 != &map[0x101].function);\n  }\nLAB_000e6668:\n  xfree(map);\n  return;\n}" primitive_type (function_declarator "rl_free_keymap(Keymap map)" identifier (parameter_list "(Keymap map)" ( (parameter_declaration "Keymap map" type_identifier identifier) ))) (compound_statement "{\n  Keymap map_00;\n  rl_command_func_t **pprVar1;\n  \n  pprVar1 = &map->function;\n  if (map != (Keymap)0x0) {\n    do {\n      while (((KEYMAP_ENTRY *)(pprVar1 + -1))->type != '\x01') {\n        if (((KEYMAP_ENTRY *)(pprVar1 + -1))->type == '\x02') {\n          xfree(*pprVar1);\n        }\n        pprVar1 = pprVar1 + 2;\n        if (pprVar1 == &map[0x101].function) goto LAB_000e6668;\n      }\n      map_00 = (Keymap)*pprVar1;\n      if (map_00 != (Keymap)0x0) {\n        rl_discard_keymap(map_00);\n        map_00 = (Keymap)*pprVar1;\n      }\n      pprVar1 = pprVar1 + 2;\n      xfree(map_00);\n    } while (pprVar1 != &map[0x101].function);\n  }\nLAB_000e6668:\n  xfree(map);\n  return;\n}" { (declaration "Keymap map_00;" type_identifier identifier ;) (declaration "rl_command_func_t **pprVar1;" type_identifier (pointer_declarator "**pprVar1" * (pointer_declarator "*pprVar1" * identifier)) ;) (expression_statement "pprVar1 = &map->function;" (assignment_expression "pprVar1 = &map->function" identifier = (pointer_expression "&map->function" & (field_expression "map->function" identifier -> field_identifier))) ;) (if_statement "if (map != (Keymap)0x0) {\n    do {\n      while (((KEYMAP_ENTRY *)(pprVar1 + -1))->type != '\x01') {\n        if (((KEYMAP_ENTRY *)(pprVar1 + -1))->type == '\x02') {\n          xfree(*pprVar1);\n        }\n        pprVar1 = pprVar1 + 2;\n        if (pprVar1 == &map[0x101].function) goto LAB_000e6668;\n      }\n      map_00 = (Keymap)*pprVar1;\n      if (map_00 != (Keymap)0x0) {\n        rl_discard_keymap(map_00);\n        map_00 = (Keymap)*pprVar1;\n      }\n      pprVar1 = pprVar1 + 2;\n      xfree(map_00);\n    } while (pprVar1 != &map[0x101].function);\n  }" if (parenthesized_expression "(map != (Keymap)0x0)" ( (binary_expression "map != (Keymap)0x0" identifier != (cast_expression "(Keymap)0x0" ( (type_descriptor "Keymap" type_identifier) ) number_literal)) )) (compound_statement "{\n    do {\n      while (((KEYMAP_ENTRY *)(pprVar1 + -1))->type != '\x01') {\n        if (((KEYMAP_ENTRY *)(pprVar1 + -1))->type == '\x02') {\n          xfree(*pprVar1);\n        }\n        pprVar1 = pprVar1 + 2;\n        if (pprVar1 == &map[0x101].function) goto LAB_000e6668;\n      }\n      map_00 = (Keymap)*pprVar1;\n      if (map_00 != (Keymap)0x0) {\n        rl_discard_keymap(map_00);\n        map_00 = (Keymap)*pprVar1;\n      }\n      pprVar1 = pprVar1 + 2;\n      xfree(map_00);\n    } while (pprVar1 != &map[0x101].function);\n  }" { (do_statement "do {\n      while (((KEYMAP_ENTRY *)(pprVar1 + -1))->type != '\x01') {\n        if (((KEYMAP_ENTRY *)(pprVar1 + -1))->type == '\x02') {\n          xfree(*pprVar1);\n        }\n        pprVar1 = pprVar1 + 2;\n        if (pprVar1 == &map[0x101].function) goto LAB_000e6668;\n      }\n      map_00 = (Keymap)*pprVar1;\n      if (map_00 != (Keymap)0x0) {\n        rl_discard_keymap(map_00);\n        map_00 = (Keymap)*pprVar1;\n      }\n      pprVar1 = pprVar1 + 2;\n      xfree(map_00);\n    } while (pprVar1 != &map[0x101].function);" do (compound_statement "{\n      while (((KEYMAP_ENTRY *)(pprVar1 + -1))->type != '\x01') {\n        if (((KEYMAP_ENTRY *)(pprVar1 + -1))->type == '\x02') {\n          xfree(*pprVar1);\n        }\n        pprVar1 = pprVar1 + 2;\n        if (pprVar1 == &map[0x101].function) goto LAB_000e6668;\n      }\n      map_00 = (Keymap)*pprVar1;\n      if (map_00 != (Keymap)0x0) {\n        rl_discard_keymap(map_00);\n        map_00 = (Keymap)*pprVar1;\n      }\n      pprVar1 = pprVar1 + 2;\n      xfree(map_00);\n    }" { (while_statement "while (((KEYMAP_ENTRY *)(pprVar1 + -1))->type != '\x01') {\n        if (((KEYMAP_ENTRY *)(pprVar1 + -1))->type == '\x02') {\n          xfree(*pprVar1);\n        }\n        pprVar1 = pprVar1 + 2;\n        if (pprVar1 == &map[0x101].function) goto LAB_000e6668;\n      }" while (parenthesized_expression "(((KEYMAP_ENTRY *)(pprVar1 + -1))->type != '\x01')" ( (binary_expression "((KEYMAP_ENTRY *)(pprVar1 + -1))->type != '\x01'" (field_expression "((KEYMAP_ENTRY *)(pprVar1 + -1))->type" (parenthesized_expression "((KEYMAP_ENTRY *)(pprVar1 + -1))" ( (cast_expression "(KEYMAP_ENTRY *)(pprVar1 + -1)" ( (type_descriptor "KEYMAP_ENTRY *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pprVar1 + -1)" ( (binary_expression "pprVar1 + -1" identifier + number_literal) ))) )) -> field_identifier) != (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n        if (((KEYMAP_ENTRY *)(pprVar1 + -1))->type == '\x02') {\n          xfree(*pprVar1);\n        }\n        pprVar1 = pprVar1 + 2;\n        if (pprVar1 == &map[0x101].function) goto LAB_000e6668;\n      }" { (if_statement "if (((KEYMAP_ENTRY *)(pprVar1 + -1))->type == '\x02') {\n          xfree(*pprVar1);\n        }" if (parenthesized_expression "(((KEYMAP_ENTRY *)(pprVar1 + -1))->type == '\x02')" ( (binary_expression "((KEYMAP_ENTRY *)(pprVar1 + -1))->type == '\x02'" (field_expression "((KEYMAP_ENTRY *)(pprVar1 + -1))->type" (parenthesized_expression "((KEYMAP_ENTRY *)(pprVar1 + -1))" ( (cast_expression "(KEYMAP_ENTRY *)(pprVar1 + -1)" ( (type_descriptor "KEYMAP_ENTRY *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pprVar1 + -1)" ( (binary_expression "pprVar1 + -1" identifier + number_literal) ))) )) -> field_identifier) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n          xfree(*pprVar1);\n        }" { (expression_statement "xfree(*pprVar1);" (call_expression "xfree(*pprVar1)" identifier (argument_list "(*pprVar1)" ( (pointer_expression "*pprVar1" * identifier) ))) ;) })) (expression_statement "pprVar1 = pprVar1 + 2;" (assignment_expression "pprVar1 = pprVar1 + 2" identifier = (binary_expression "pprVar1 + 2" identifier + number_literal)) ;) (if_statement "if (pprVar1 == &map[0x101].function) goto LAB_000e6668;" if (parenthesized_expression "(pprVar1 == &map[0x101].function)" ( (binary_expression "pprVar1 == &map[0x101].function" identifier == (pointer_expression "&map[0x101].function" & (field_expression "map[0x101].function" (subscript_expression "map[0x101]" identifier [ number_literal ]) . field_identifier))) )) (goto_statement "goto LAB_000e6668;" goto statement_identifier ;)) })) (expression_statement "map_00 = (Keymap)*pprVar1;" (assignment_expression "map_00 = (Keymap)*pprVar1" identifier = (binary_expression "(Keymap)*pprVar1" (parenthesized_expression "(Keymap)" ( identifier )) * identifier)) ;) (if_statement "if (map_00 != (Keymap)0x0) {\n        rl_discard_keymap(map_00);\n        map_00 = (Keymap)*pprVar1;\n      }" if (parenthesized_expression "(map_00 != (Keymap)0x0)" ( (binary_expression "map_00 != (Keymap)0x0" identifier != (cast_expression "(Keymap)0x0" ( (type_descriptor "Keymap" type_identifier) ) number_literal)) )) (compound_statement "{\n        rl_discard_keymap(map_00);\n        map_00 = (Keymap)*pprVar1;\n      }" { (expression_statement "rl_discard_keymap(map_00);" (call_expression "rl_discard_keymap(map_00)" identifier (argument_list "(map_00)" ( identifier ))) ;) (expression_statement "map_00 = (Keymap)*pprVar1;" (assignment_expression "map_00 = (Keymap)*pprVar1" identifier = (binary_expression "(Keymap)*pprVar1" (parenthesized_expression "(Keymap)" ( identifier )) * identifier)) ;) })) (expression_statement "pprVar1 = pprVar1 + 2;" (assignment_expression "pprVar1 = pprVar1 + 2" identifier = (binary_expression "pprVar1 + 2" identifier + number_literal)) ;) (expression_statement "xfree(map_00);" (call_expression "xfree(map_00)" identifier (argument_list "(map_00)" ( identifier ))) ;) }) while (parenthesized_expression "(pprVar1 != &map[0x101].function)" ( (binary_expression "pprVar1 != &map[0x101].function" identifier != (pointer_expression "&map[0x101].function" & (field_expression "map[0x101].function" (subscript_expression "map[0x101]" identifier [ number_literal ]) . field_identifier))) )) ;) })) (labeled_statement "LAB_000e6668:\n  xfree(map);" statement_identifier : (expression_statement "xfree(map);" (call_expression "xfree(map)" identifier (argument_list "(map)" ( identifier ))) ;)) (return_statement "return;" return ;) })))
(translation_unit "void rl_free_keymap(int param_1)\n\n{\n  int iVar1;\n  int *piVar2;\n  \n  piVar2 = (int *)(param_1 + 4);\n  if (param_1 != 0) {\n    do {\n      while ((char)piVar2[-1] != '\x01') {\n        if ((char)piVar2[-1] == '\x02') {\n          xfree(*piVar2);\n        }\n        piVar2 = piVar2 + 2;\n        if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;\n      }\n      iVar1 = *piVar2;\n      if (iVar1 != 0) {\n        FUN_000e63b0();\n        iVar1 = *piVar2;\n      }\n      piVar2 = piVar2 + 2;\n      xfree(iVar1);\n    } while (piVar2 != (int *)(param_1 + 0x80c));\n  }\nLAB_000e6668:\n  xfree(param_1);\n  return;\n}\n\n" (function_definition "void rl_free_keymap(int param_1)\n\n{\n  int iVar1;\n  int *piVar2;\n  \n  piVar2 = (int *)(param_1 + 4);\n  if (param_1 != 0) {\n    do {\n      while ((char)piVar2[-1] != '\x01') {\n        if ((char)piVar2[-1] == '\x02') {\n          xfree(*piVar2);\n        }\n        piVar2 = piVar2 + 2;\n        if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;\n      }\n      iVar1 = *piVar2;\n      if (iVar1 != 0) {\n        FUN_000e63b0();\n        iVar1 = *piVar2;\n      }\n      piVar2 = piVar2 + 2;\n      xfree(iVar1);\n    } while (piVar2 != (int *)(param_1 + 0x80c));\n  }\nLAB_000e6668:\n  xfree(param_1);\n  return;\n}" primitive_type (function_declarator "rl_free_keymap(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  \n  piVar2 = (int *)(param_1 + 4);\n  if (param_1 != 0) {\n    do {\n      while ((char)piVar2[-1] != '\x01') {\n        if ((char)piVar2[-1] == '\x02') {\n          xfree(*piVar2);\n        }\n        piVar2 = piVar2 + 2;\n        if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;\n      }\n      iVar1 = *piVar2;\n      if (iVar1 != 0) {\n        FUN_000e63b0();\n        iVar1 = *piVar2;\n      }\n      piVar2 = piVar2 + 2;\n      xfree(iVar1);\n    } while (piVar2 != (int *)(param_1 + 0x80c));\n  }\nLAB_000e6668:\n  xfree(param_1);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (expression_statement "piVar2 = (int *)(param_1 + 4);" (assignment_expression "piVar2 = (int *)(param_1 + 4)" identifier = (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) ;) (if_statement "if (param_1 != 0) {\n    do {\n      while ((char)piVar2[-1] != '\x01') {\n        if ((char)piVar2[-1] == '\x02') {\n          xfree(*piVar2);\n        }\n        piVar2 = piVar2 + 2;\n        if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;\n      }\n      iVar1 = *piVar2;\n      if (iVar1 != 0) {\n        FUN_000e63b0();\n        iVar1 = *piVar2;\n      }\n      piVar2 = piVar2 + 2;\n      xfree(iVar1);\n    } while (piVar2 != (int *)(param_1 + 0x80c));\n  }" if (parenthesized_expression "(param_1 != 0)" ( (binary_expression "param_1 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      while ((char)piVar2[-1] != '\x01') {\n        if ((char)piVar2[-1] == '\x02') {\n          xfree(*piVar2);\n        }\n        piVar2 = piVar2 + 2;\n        if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;\n      }\n      iVar1 = *piVar2;\n      if (iVar1 != 0) {\n        FUN_000e63b0();\n        iVar1 = *piVar2;\n      }\n      piVar2 = piVar2 + 2;\n      xfree(iVar1);\n    } while (piVar2 != (int *)(param_1 + 0x80c));\n  }" { (do_statement "do {\n      while ((char)piVar2[-1] != '\x01') {\n        if ((char)piVar2[-1] == '\x02') {\n          xfree(*piVar2);\n        }\n        piVar2 = piVar2 + 2;\n        if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;\n      }\n      iVar1 = *piVar2;\n      if (iVar1 != 0) {\n        FUN_000e63b0();\n        iVar1 = *piVar2;\n      }\n      piVar2 = piVar2 + 2;\n      xfree(iVar1);\n    } while (piVar2 != (int *)(param_1 + 0x80c));" do (compound_statement "{\n      while ((char)piVar2[-1] != '\x01') {\n        if ((char)piVar2[-1] == '\x02') {\n          xfree(*piVar2);\n        }\n        piVar2 = piVar2 + 2;\n        if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;\n      }\n      iVar1 = *piVar2;\n      if (iVar1 != 0) {\n        FUN_000e63b0();\n        iVar1 = *piVar2;\n      }\n      piVar2 = piVar2 + 2;\n      xfree(iVar1);\n    }" { (while_statement "while ((char)piVar2[-1] != '\x01') {\n        if ((char)piVar2[-1] == '\x02') {\n          xfree(*piVar2);\n        }\n        piVar2 = piVar2 + 2;\n        if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;\n      }" while (parenthesized_expression "((char)piVar2[-1] != '\x01')" ( (binary_expression "(char)piVar2[-1] != '\x01'" (cast_expression "(char)piVar2[-1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar2[-1]" identifier [ number_literal ])) != (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n        if ((char)piVar2[-1] == '\x02') {\n          xfree(*piVar2);\n        }\n        piVar2 = piVar2 + 2;\n        if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;\n      }" { (if_statement "if ((char)piVar2[-1] == '\x02') {\n          xfree(*piVar2);\n        }" if (parenthesized_expression "((char)piVar2[-1] == '\x02')" ( (binary_expression "(char)piVar2[-1] == '\x02'" (cast_expression "(char)piVar2[-1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar2[-1]" identifier [ number_literal ])) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n          xfree(*piVar2);\n        }" { (expression_statement "xfree(*piVar2);" (call_expression "xfree(*piVar2)" identifier (argument_list "(*piVar2)" ( (pointer_expression "*piVar2" * identifier) ))) ;) })) (expression_statement "piVar2 = piVar2 + 2;" (assignment_expression "piVar2 = piVar2 + 2" identifier = (binary_expression "piVar2 + 2" identifier + number_literal)) ;) (if_statement "if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;" if (parenthesized_expression "(piVar2 == (int *)(param_1 + 0x80c))" ( (binary_expression "piVar2 == (int *)(param_1 + 0x80c)" identifier == (cast_expression "(int *)(param_1 + 0x80c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80c)" ( (binary_expression "param_1 + 0x80c" identifier + number_literal) )))) )) (goto_statement "goto LAB_000e6668;" goto statement_identifier ;)) })) (expression_statement "iVar1 = *piVar2;" (assignment_expression "iVar1 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (if_statement "if (iVar1 != 0) {\n        FUN_000e63b0();\n        iVar1 = *piVar2;\n      }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_000e63b0();\n        iVar1 = *piVar2;\n      }" { (expression_statement "FUN_000e63b0();" (call_expression "FUN_000e63b0()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar1 = *piVar2;" (assignment_expression "iVar1 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) })) (expression_statement "piVar2 = piVar2 + 2;" (assignment_expression "piVar2 = piVar2 + 2" identifier = (binary_expression "piVar2 + 2" identifier + number_literal)) ;) (expression_statement "xfree(iVar1);" (call_expression "xfree(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) }) while (parenthesized_expression "(piVar2 != (int *)(param_1 + 0x80c))" ( (binary_expression "piVar2 != (int *)(param_1 + 0x80c)" identifier != (cast_expression "(int *)(param_1 + 0x80c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80c)" ( (binary_expression "param_1 + 0x80c" identifier + number_literal) )))) )) ;) })) (labeled_statement "LAB_000e6668:\n  xfree(param_1);" statement_identifier : (expression_statement "xfree(param_1);" (call_expression "xfree(param_1)" 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 { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) != (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * IDENT) ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (return_statement return ;) })))
(function_definition "void rl_free_keymap(int param_1)\n\n{\n  int iVar1;\n  int *piVar2;\n  \n  piVar2 = (int *)(param_1 + 4);\n  if (param_1 != 0) {\n    do {\n      while ((char)piVar2[-1] != '\x01') {\n        if ((char)piVar2[-1] == '\x02') {\n          xfree(*piVar2);\n        }\n        piVar2 = piVar2 + 2;\n        if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;\n      }\n      iVar1 = *piVar2;\n      if (iVar1 != 0) {\n        FUN_000e63b0();\n        iVar1 = *piVar2;\n      }\n      piVar2 = piVar2 + 2;\n      xfree(iVar1);\n    } while (piVar2 != (int *)(param_1 + 0x80c));\n  }\nLAB_000e6668:\n  xfree(param_1);\n  return;\n}" (primitive_type "void") (function_declarator "rl_free_keymap(int param_1)" (identifier "rl_free_keymap") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  \n  piVar2 = (int *)(param_1 + 4);\n  if (param_1 != 0) {\n    do {\n      while ((char)piVar2[-1] != '\x01') {\n        if ((char)piVar2[-1] == '\x02') {\n          xfree(*piVar2);\n        }\n        piVar2 = piVar2 + 2;\n        if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;\n      }\n      iVar1 = *piVar2;\n      if (iVar1 != 0) {\n        FUN_000e63b0();\n        iVar1 = *piVar2;\n      }\n      piVar2 = piVar2 + 2;\n      xfree(iVar1);\n    } while (piVar2 != (int *)(param_1 + 0x80c));\n  }\nLAB_000e6668:\n  xfree(param_1);\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (expression_statement "piVar2 = (int *)(param_1 + 4);" (assignment_expression "piVar2 = (int *)(param_1 + 4)" (identifier "piVar2") (= "=") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (; ";")) (if_statement "if (param_1 != 0) {\n    do {\n      while ((char)piVar2[-1] != '\x01') {\n        if ((char)piVar2[-1] == '\x02') {\n          xfree(*piVar2);\n        }\n        piVar2 = piVar2 + 2;\n        if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;\n      }\n      iVar1 = *piVar2;\n      if (iVar1 != 0) {\n        FUN_000e63b0();\n        iVar1 = *piVar2;\n      }\n      piVar2 = piVar2 + 2;\n      xfree(iVar1);\n    } while (piVar2 != (int *)(param_1 + 0x80c));\n  }" (if "if") (parenthesized_expression "(param_1 != 0)" (( "(") (binary_expression "param_1 != 0" (identifier "param_1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    do {\n      while ((char)piVar2[-1] != '\x01') {\n        if ((char)piVar2[-1] == '\x02') {\n          xfree(*piVar2);\n        }\n        piVar2 = piVar2 + 2;\n        if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;\n      }\n      iVar1 = *piVar2;\n      if (iVar1 != 0) {\n        FUN_000e63b0();\n        iVar1 = *piVar2;\n      }\n      piVar2 = piVar2 + 2;\n      xfree(iVar1);\n    } while (piVar2 != (int *)(param_1 + 0x80c));\n  }" ({ "{") (do_statement "do {\n      while ((char)piVar2[-1] != '\x01') {\n        if ((char)piVar2[-1] == '\x02') {\n          xfree(*piVar2);\n        }\n        piVar2 = piVar2 + 2;\n        if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;\n      }\n      iVar1 = *piVar2;\n      if (iVar1 != 0) {\n        FUN_000e63b0();\n        iVar1 = *piVar2;\n      }\n      piVar2 = piVar2 + 2;\n      xfree(iVar1);\n    } while (piVar2 != (int *)(param_1 + 0x80c));" (do "do") (compound_statement "{\n      while ((char)piVar2[-1] != '\x01') {\n        if ((char)piVar2[-1] == '\x02') {\n          xfree(*piVar2);\n        }\n        piVar2 = piVar2 + 2;\n        if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;\n      }\n      iVar1 = *piVar2;\n      if (iVar1 != 0) {\n        FUN_000e63b0();\n        iVar1 = *piVar2;\n      }\n      piVar2 = piVar2 + 2;\n      xfree(iVar1);\n    }" ({ "{") (while_statement "while ((char)piVar2[-1] != '\x01') {\n        if ((char)piVar2[-1] == '\x02') {\n          xfree(*piVar2);\n        }\n        piVar2 = piVar2 + 2;\n        if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;\n      }" (while "while") (parenthesized_expression "((char)piVar2[-1] != '\x01')" (( "(") (binary_expression "(char)piVar2[-1] != '\x01'" (cast_expression "(char)piVar2[-1]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "piVar2[-1]" (identifier "piVar2") ([ "[") (number_literal "-1") (] "]"))) (!= "!=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")")) (compound_statement "{\n        if ((char)piVar2[-1] == '\x02') {\n          xfree(*piVar2);\n        }\n        piVar2 = piVar2 + 2;\n        if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;\n      }" ({ "{") (if_statement "if ((char)piVar2[-1] == '\x02') {\n          xfree(*piVar2);\n        }" (if "if") (parenthesized_expression "((char)piVar2[-1] == '\x02')" (( "(") (binary_expression "(char)piVar2[-1] == '\x02'" (cast_expression "(char)piVar2[-1]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "piVar2[-1]" (identifier "piVar2") ([ "[") (number_literal "-1") (] "]"))) (== "==") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) () ")")) (compound_statement "{\n          xfree(*piVar2);\n        }" ({ "{") (expression_statement "xfree(*piVar2);" (call_expression "xfree(*piVar2)" (identifier "xfree") (argument_list "(*piVar2)" (( "(") (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) () ")"))) (; ";")) (} "}"))) (expression_statement "piVar2 = piVar2 + 2;" (assignment_expression "piVar2 = piVar2 + 2" (identifier "piVar2") (= "=") (binary_expression "piVar2 + 2" (identifier "piVar2") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;" (if "if") (parenthesized_expression "(piVar2 == (int *)(param_1 + 0x80c))" (( "(") (binary_expression "piVar2 == (int *)(param_1 + 0x80c)" (identifier "piVar2") (== "==") (cast_expression "(int *)(param_1 + 0x80c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x80c)" (( "(") (binary_expression "param_1 + 0x80c" (identifier "param_1") (+ "+") (number_literal "0x80c")) () ")")))) () ")")) (goto_statement "goto LAB_000e6668;" (goto "goto") (statement_identifier "LAB_000e6668") (; ";"))) (} "}"))) (expression_statement "iVar1 = *piVar2;" (assignment_expression "iVar1 = *piVar2" (identifier "iVar1") (= "=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) (; ";")) (if_statement "if (iVar1 != 0) {\n        FUN_000e63b0();\n        iVar1 = *piVar2;\n      }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_000e63b0();\n        iVar1 = *piVar2;\n      }" ({ "{") (expression_statement "FUN_000e63b0();" (call_expression "FUN_000e63b0()" (identifier "FUN_000e63b0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar1 = *piVar2;" (assignment_expression "iVar1 = *piVar2" (identifier "iVar1") (= "=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) (; ";")) (} "}"))) (expression_statement "piVar2 = piVar2 + 2;" (assignment_expression "piVar2 = piVar2 + 2" (identifier "piVar2") (= "=") (binary_expression "piVar2 + 2" (identifier "piVar2") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "xfree(iVar1);" (call_expression "xfree(iVar1)" (identifier "xfree") (argument_list "(iVar1)" (( "(") (identifier "iVar1") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar2 != (int *)(param_1 + 0x80c))" (( "(") (binary_expression "piVar2 != (int *)(param_1 + 0x80c)" (identifier "piVar2") (!= "!=") (cast_expression "(int *)(param_1 + 0x80c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x80c)" (( "(") (binary_expression "param_1 + 0x80c" (identifier "param_1") (+ "+") (number_literal "0x80c")) () ")")))) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_000e6668:\n  xfree(param_1);" (statement_identifier "LAB_000e6668") (: ":") (expression_statement "xfree(param_1);" (call_expression "xfree(param_1)" (identifier "xfree") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */

void function_1(type_1 var_1)

{
  type_1 var_4;
  type_2 **var_2;
  
  var_2 = &var_1->function;
  if (var_1 != (type_1)0x0) {
    do {
      while (((type_3 *)(var_2 + -1))->type != '\x01') {
        if (((type_3 *)(var_2 + -1))->type == '\x02') {
          var_3(*var_2);
        }
        var_2 = var_2 + 2;
        if (var_2 == &var_1[0x101].function) goto LAB_000e6668;
      }
      var_4 = (type_1)*var_2;
      if (var_4 != (type_1)0x0) {
        var_5(var_4);
        var_4 = (type_1)*var_2;
      }
      var_2 = var_2 + 2;
      var_3(var_4);
    } while (var_2 != &var_1[0x101].function);
  }
LAB_000e6668:
  var_3(var_1);
  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 (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (char_literal (escape_sequence)))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) (return_statement))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void MASKED(int param_1)

{
  int iVar1;
  int *piVar2;
  
  piVar2 = (int *)(param_1 + 4);
  if (param_1 != 0) {
    do {
      while ((char)piVar2[-1] != '\x01') {
        if ((char)piVar2[-1] == '\x02') {
          xfree(*piVar2);
        }
        piVar2 = piVar2 + 2;
        if (piVar2 == (int *)(param_1 + 0x80c)) goto LAB_000e6668;
      }
      iVar1 = *piVar2;
      if (iVar1 != 0) {
        FUN_000e63b0();
        iVar1 = *piVar2;
      }
      piVar2 = piVar2 + 2;
      xfree(iVar1);
    } while (piVar2 != (int *)(param_1 + 0x80c));
  }
LAB_000e6668:
  xfree(param_1);
  return;
}

