
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention -- yet parameter storage is locked */

void free_pushed_string_input(void)

{
  char *pcVar1;
  string_saver *psVar2;
  string_saver *__ptr;
  
  __ptr = pushed_string_list;
  if (pushed_string_list != (STRING_SAVER *)0x0) {
    do {
      psVar2 = __ptr->next;
      if (__ptr->saved_line != (char *)0x0) {
        free(__ptr->saved_line);
      }
      if (__ptr->expander != (alias_t *)0x0) {
        pcVar1 = &__ptr->expander->flags;
        *pcVar1 = *pcVar1 & 0xfd;
      }
      free(__ptr);
      __ptr = psVar2;
    } while (psVar2 != (string_saver *)0x0);
  }
  pushed_string_list = (STRING_SAVER *)0x0;
  return;
}



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

void free_pushed_string_input(void)

{
  byte *pbVar1;
  int *piVar2;
  int *__ptr;
  
  __ptr = pushed_string_list;
  if (pushed_string_list != (int *)0x0) {
    do {
      piVar2 = (int *)*__ptr;
      if ((void *)__ptr[2] != (void *)0x0) {
        free((void *)__ptr[2]);
      }
      if (__ptr[3] != 0) {
        pbVar1 = (byte *)(__ptr[3] + 8);
        *pbVar1 = *pbVar1 & 0xfd;
      }
      free(__ptr);
      __ptr = piVar2;
    } while (piVar2 != (int *)0x0);
  }
  pushed_string_list = (int *)0x0;
  return;
}


JMP 0x00033840
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid free_pushed_string_input(void)\n\n{\n  byte *pbVar1;\n  int *piVar2;\n  int *__ptr;\n  \n  __ptr = pushed_string_list;\n  if (pushed_string_list != (int *)0x0) {\n    do {\n      piVar2 = (int *)*__ptr;\n      if ((void *)__ptr[2] != (void *)0x0) {\n        free((void *)__ptr[2]);\n      }\n      if (__ptr[3] != 0) {\n        pbVar1 = (byte *)(__ptr[3] + 8);\n        *pbVar1 = *pbVar1 & 0xfd;\n      }\n      free(__ptr);\n      __ptr = piVar2;\n    } while (piVar2 != (int *)0x0);\n  }\n  pushed_string_list = (int *)0x0;\n  return;\n}\n\n" comment (function_definition "void free_pushed_string_input(void)\n\n{\n  byte *pbVar1;\n  int *piVar2;\n  int *__ptr;\n  \n  __ptr = pushed_string_list;\n  if (pushed_string_list != (int *)0x0) {\n    do {\n      piVar2 = (int *)*__ptr;\n      if ((void *)__ptr[2] != (void *)0x0) {\n        free((void *)__ptr[2]);\n      }\n      if (__ptr[3] != 0) {\n        pbVar1 = (byte *)(__ptr[3] + 8);\n        *pbVar1 = *pbVar1 & 0xfd;\n      }\n      free(__ptr);\n      __ptr = piVar2;\n    } while (piVar2 != (int *)0x0);\n  }\n  pushed_string_list = (int *)0x0;\n  return;\n}" primitive_type (function_declarator "free_pushed_string_input(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  byte *pbVar1;\n  int *piVar2;\n  int *__ptr;\n  \n  __ptr = pushed_string_list;\n  if (pushed_string_list != (int *)0x0) {\n    do {\n      piVar2 = (int *)*__ptr;\n      if ((void *)__ptr[2] != (void *)0x0) {\n        free((void *)__ptr[2]);\n      }\n      if (__ptr[3] != 0) {\n        pbVar1 = (byte *)(__ptr[3] + 8);\n        *pbVar1 = *pbVar1 & 0xfd;\n      }\n      free(__ptr);\n      __ptr = piVar2;\n    } while (piVar2 != (int *)0x0);\n  }\n  pushed_string_list = (int *)0x0;\n  return;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (expression_statement "__ptr = pushed_string_list;" (assignment_expression "__ptr = pushed_string_list" identifier = identifier) ;) (if_statement "if (pushed_string_list != (int *)0x0) {\n    do {\n      piVar2 = (int *)*__ptr;\n      if ((void *)__ptr[2] != (void *)0x0) {\n        free((void *)__ptr[2]);\n      }\n      if (__ptr[3] != 0) {\n        pbVar1 = (byte *)(__ptr[3] + 8);\n        *pbVar1 = *pbVar1 & 0xfd;\n      }\n      free(__ptr);\n      __ptr = piVar2;\n    } while (piVar2 != (int *)0x0);\n  }" if (parenthesized_expression "(pushed_string_list != (int *)0x0)" ( (binary_expression "pushed_string_list != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    do {\n      piVar2 = (int *)*__ptr;\n      if ((void *)__ptr[2] != (void *)0x0) {\n        free((void *)__ptr[2]);\n      }\n      if (__ptr[3] != 0) {\n        pbVar1 = (byte *)(__ptr[3] + 8);\n        *pbVar1 = *pbVar1 & 0xfd;\n      }\n      free(__ptr);\n      __ptr = piVar2;\n    } while (piVar2 != (int *)0x0);\n  }" { (do_statement "do {\n      piVar2 = (int *)*__ptr;\n      if ((void *)__ptr[2] != (void *)0x0) {\n        free((void *)__ptr[2]);\n      }\n      if (__ptr[3] != 0) {\n        pbVar1 = (byte *)(__ptr[3] + 8);\n        *pbVar1 = *pbVar1 & 0xfd;\n      }\n      free(__ptr);\n      __ptr = piVar2;\n    } while (piVar2 != (int *)0x0);" do (compound_statement "{\n      piVar2 = (int *)*__ptr;\n      if ((void *)__ptr[2] != (void *)0x0) {\n        free((void *)__ptr[2]);\n      }\n      if (__ptr[3] != 0) {\n        pbVar1 = (byte *)(__ptr[3] + 8);\n        *pbVar1 = *pbVar1 & 0xfd;\n      }\n      free(__ptr);\n      __ptr = piVar2;\n    }" { (expression_statement "piVar2 = (int *)*__ptr;" (assignment_expression "piVar2 = (int *)*__ptr" identifier = (cast_expression "(int *)*__ptr" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*__ptr" * identifier))) ;) (if_statement "if ((void *)__ptr[2] != (void *)0x0) {\n        free((void *)__ptr[2]);\n      }" if (parenthesized_expression "((void *)__ptr[2] != (void *)0x0)" ( (binary_expression "(void *)__ptr[2] != (void *)0x0" (cast_expression "(void *)__ptr[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "__ptr[2]" identifier [ number_literal ])) != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free((void *)__ptr[2]);\n      }" { (expression_statement "free((void *)__ptr[2]);" (call_expression "free((void *)__ptr[2])" identifier (argument_list "((void *)__ptr[2])" ( (cast_expression "(void *)__ptr[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "__ptr[2]" identifier [ number_literal ])) ))) ;) })) (if_statement "if (__ptr[3] != 0) {\n        pbVar1 = (byte *)(__ptr[3] + 8);\n        *pbVar1 = *pbVar1 & 0xfd;\n      }" if (parenthesized_expression "(__ptr[3] != 0)" ( (binary_expression "__ptr[3] != 0" (subscript_expression "__ptr[3]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        pbVar1 = (byte *)(__ptr[3] + 8);\n        *pbVar1 = *pbVar1 & 0xfd;\n      }" { (expression_statement "pbVar1 = (byte *)(__ptr[3] + 8);" (assignment_expression "pbVar1 = (byte *)(__ptr[3] + 8)" identifier = (cast_expression "(byte *)(__ptr[3] + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr[3] + 8)" ( (binary_expression "__ptr[3] + 8" (subscript_expression "__ptr[3]" identifier [ number_literal ]) + number_literal) )))) ;) (expression_statement "*pbVar1 = *pbVar1 & 0xfd;" (assignment_expression "*pbVar1 = *pbVar1 & 0xfd" (pointer_expression "*pbVar1" * identifier) = (binary_expression "*pbVar1 & 0xfd" (pointer_expression "*pbVar1" * identifier) & number_literal)) ;) })) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (expression_statement "__ptr = piVar2;" (assignment_expression "__ptr = piVar2" identifier = identifier) ;) }) while (parenthesized_expression "(piVar2 != (int *)0x0)" ( (binary_expression "piVar2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (expression_statement "pushed_string_list = (int *)0x0;" (assignment_expression "pushed_string_list = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (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 -- yet parameter storage is locked */\n\nvoid free_pushed_string_input(void)\n\n{\n  char *pcVar1;\n  string_saver *psVar2;\n  string_saver *__ptr;\n  \n  __ptr = pushed_string_list;\n  if (pushed_string_list != (STRING_SAVER *)0x0) {\n    do {\n      psVar2 = __ptr->next;\n      if (__ptr->saved_line != (char *)0x0) {\n        free(__ptr->saved_line);\n      }\n      if (__ptr->expander != (alias_t *)0x0) {\n        pcVar1 = &__ptr->expander->flags;\n        *pcVar1 = *pcVar1 & 0xfd;\n      }\n      free(__ptr);\n      __ptr = psVar2;\n    } while (psVar2 != (string_saver *)0x0);\n  }\n  pushed_string_list = (STRING_SAVER *)0x0;\n  return;\n}\n\n" comment comment (function_definition "void free_pushed_string_input(void)\n\n{\n  char *pcVar1;\n  string_saver *psVar2;\n  string_saver *__ptr;\n  \n  __ptr = pushed_string_list;\n  if (pushed_string_list != (STRING_SAVER *)0x0) {\n    do {\n      psVar2 = __ptr->next;\n      if (__ptr->saved_line != (char *)0x0) {\n        free(__ptr->saved_line);\n      }\n      if (__ptr->expander != (alias_t *)0x0) {\n        pcVar1 = &__ptr->expander->flags;\n        *pcVar1 = *pcVar1 & 0xfd;\n      }\n      free(__ptr);\n      __ptr = psVar2;\n    } while (psVar2 != (string_saver *)0x0);\n  }\n  pushed_string_list = (STRING_SAVER *)0x0;\n  return;\n}" primitive_type (function_declarator "free_pushed_string_input(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  char *pcVar1;\n  string_saver *psVar2;\n  string_saver *__ptr;\n  \n  __ptr = pushed_string_list;\n  if (pushed_string_list != (STRING_SAVER *)0x0) {\n    do {\n      psVar2 = __ptr->next;\n      if (__ptr->saved_line != (char *)0x0) {\n        free(__ptr->saved_line);\n      }\n      if (__ptr->expander != (alias_t *)0x0) {\n        pcVar1 = &__ptr->expander->flags;\n        *pcVar1 = *pcVar1 & 0xfd;\n      }\n      free(__ptr);\n      __ptr = psVar2;\n    } while (psVar2 != (string_saver *)0x0);\n  }\n  pushed_string_list = (STRING_SAVER *)0x0;\n  return;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "string_saver *psVar2;" type_identifier (pointer_declarator "*psVar2" * identifier) ;) (declaration "string_saver *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (expression_statement "__ptr = pushed_string_list;" (assignment_expression "__ptr = pushed_string_list" identifier = identifier) ;) (if_statement "if (pushed_string_list != (STRING_SAVER *)0x0) {\n    do {\n      psVar2 = __ptr->next;\n      if (__ptr->saved_line != (char *)0x0) {\n        free(__ptr->saved_line);\n      }\n      if (__ptr->expander != (alias_t *)0x0) {\n        pcVar1 = &__ptr->expander->flags;\n        *pcVar1 = *pcVar1 & 0xfd;\n      }\n      free(__ptr);\n      __ptr = psVar2;\n    } while (psVar2 != (string_saver *)0x0);\n  }" if (parenthesized_expression "(pushed_string_list != (STRING_SAVER *)0x0)" ( (binary_expression "pushed_string_list != (STRING_SAVER *)0x0" identifier != (cast_expression "(STRING_SAVER *)0x0" ( (type_descriptor "STRING_SAVER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    do {\n      psVar2 = __ptr->next;\n      if (__ptr->saved_line != (char *)0x0) {\n        free(__ptr->saved_line);\n      }\n      if (__ptr->expander != (alias_t *)0x0) {\n        pcVar1 = &__ptr->expander->flags;\n        *pcVar1 = *pcVar1 & 0xfd;\n      }\n      free(__ptr);\n      __ptr = psVar2;\n    } while (psVar2 != (string_saver *)0x0);\n  }" { (do_statement "do {\n      psVar2 = __ptr->next;\n      if (__ptr->saved_line != (char *)0x0) {\n        free(__ptr->saved_line);\n      }\n      if (__ptr->expander != (alias_t *)0x0) {\n        pcVar1 = &__ptr->expander->flags;\n        *pcVar1 = *pcVar1 & 0xfd;\n      }\n      free(__ptr);\n      __ptr = psVar2;\n    } while (psVar2 != (string_saver *)0x0);" do (compound_statement "{\n      psVar2 = __ptr->next;\n      if (__ptr->saved_line != (char *)0x0) {\n        free(__ptr->saved_line);\n      }\n      if (__ptr->expander != (alias_t *)0x0) {\n        pcVar1 = &__ptr->expander->flags;\n        *pcVar1 = *pcVar1 & 0xfd;\n      }\n      free(__ptr);\n      __ptr = psVar2;\n    }" { (expression_statement "psVar2 = __ptr->next;" (assignment_expression "psVar2 = __ptr->next" identifier = (field_expression "__ptr->next" identifier -> field_identifier)) ;) (if_statement "if (__ptr->saved_line != (char *)0x0) {\n        free(__ptr->saved_line);\n      }" if (parenthesized_expression "(__ptr->saved_line != (char *)0x0)" ( (binary_expression "__ptr->saved_line != (char *)0x0" (field_expression "__ptr->saved_line" identifier -> field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(__ptr->saved_line);\n      }" { (expression_statement "free(__ptr->saved_line);" (call_expression "free(__ptr->saved_line)" identifier (argument_list "(__ptr->saved_line)" ( (field_expression "__ptr->saved_line" identifier -> field_identifier) ))) ;) })) (if_statement "if (__ptr->expander != (alias_t *)0x0) {\n        pcVar1 = &__ptr->expander->flags;\n        *pcVar1 = *pcVar1 & 0xfd;\n      }" if (parenthesized_expression "(__ptr->expander != (alias_t *)0x0)" ( (binary_expression "__ptr->expander != (alias_t *)0x0" (field_expression "__ptr->expander" identifier -> field_identifier) != (cast_expression "(alias_t *)0x0" ( (type_descriptor "alias_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pcVar1 = &__ptr->expander->flags;\n        *pcVar1 = *pcVar1 & 0xfd;\n      }" { (expression_statement "pcVar1 = &__ptr->expander->flags;" (assignment_expression "pcVar1 = &__ptr->expander->flags" identifier = (pointer_expression "&__ptr->expander->flags" & (field_expression "__ptr->expander->flags" (field_expression "__ptr->expander" identifier -> field_identifier) -> field_identifier))) ;) (expression_statement "*pcVar1 = *pcVar1 & 0xfd;" (assignment_expression "*pcVar1 = *pcVar1 & 0xfd" (pointer_expression "*pcVar1" * identifier) = (binary_expression "*pcVar1 & 0xfd" (pointer_expression "*pcVar1" * identifier) & number_literal)) ;) })) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (expression_statement "__ptr = psVar2;" (assignment_expression "__ptr = psVar2" identifier = identifier) ;) }) while (parenthesized_expression "(psVar2 != (string_saver *)0x0)" ( (binary_expression "psVar2 != (string_saver *)0x0" identifier != (cast_expression "(string_saver *)0x0" ( (type_descriptor "string_saver *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (expression_statement "pushed_string_list = (STRING_SAVER *)0x0;" (assignment_expression "pushed_string_list = (STRING_SAVER *)0x0" identifier = (cast_expression "(STRING_SAVER *)0x0" ( (type_descriptor "STRING_SAVER *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (return_statement "return;" return ;) })))
(translation_unit "void free_pushed_string_input(void)\n\n{\n  byte *pbVar1;\n  int *piVar2;\n  int *__ptr;\n  \n  __ptr = pushed_string_list;\n  if (pushed_string_list != (int *)0x0) {\n    do {\n      piVar2 = (int *)*__ptr;\n      if ((void *)__ptr[2] != (void *)0x0) {\n        free((void *)__ptr[2]);\n      }\n      if (__ptr[3] != 0) {\n        pbVar1 = (byte *)(__ptr[3] + 8);\n        *pbVar1 = *pbVar1 & 0xfd;\n      }\n      free(__ptr);\n      __ptr = piVar2;\n    } while (piVar2 != (int *)0x0);\n  }\n  pushed_string_list = (int *)0x0;\n  return;\n}\n\n" (function_definition "void free_pushed_string_input(void)\n\n{\n  byte *pbVar1;\n  int *piVar2;\n  int *__ptr;\n  \n  __ptr = pushed_string_list;\n  if (pushed_string_list != (int *)0x0) {\n    do {\n      piVar2 = (int *)*__ptr;\n      if ((void *)__ptr[2] != (void *)0x0) {\n        free((void *)__ptr[2]);\n      }\n      if (__ptr[3] != 0) {\n        pbVar1 = (byte *)(__ptr[3] + 8);\n        *pbVar1 = *pbVar1 & 0xfd;\n      }\n      free(__ptr);\n      __ptr = piVar2;\n    } while (piVar2 != (int *)0x0);\n  }\n  pushed_string_list = (int *)0x0;\n  return;\n}" primitive_type (function_declarator "free_pushed_string_input(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  byte *pbVar1;\n  int *piVar2;\n  int *__ptr;\n  \n  __ptr = pushed_string_list;\n  if (pushed_string_list != (int *)0x0) {\n    do {\n      piVar2 = (int *)*__ptr;\n      if ((void *)__ptr[2] != (void *)0x0) {\n        free((void *)__ptr[2]);\n      }\n      if (__ptr[3] != 0) {\n        pbVar1 = (byte *)(__ptr[3] + 8);\n        *pbVar1 = *pbVar1 & 0xfd;\n      }\n      free(__ptr);\n      __ptr = piVar2;\n    } while (piVar2 != (int *)0x0);\n  }\n  pushed_string_list = (int *)0x0;\n  return;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (expression_statement "__ptr = pushed_string_list;" (assignment_expression "__ptr = pushed_string_list" identifier = identifier) ;) (if_statement "if (pushed_string_list != (int *)0x0) {\n    do {\n      piVar2 = (int *)*__ptr;\n      if ((void *)__ptr[2] != (void *)0x0) {\n        free((void *)__ptr[2]);\n      }\n      if (__ptr[3] != 0) {\n        pbVar1 = (byte *)(__ptr[3] + 8);\n        *pbVar1 = *pbVar1 & 0xfd;\n      }\n      free(__ptr);\n      __ptr = piVar2;\n    } while (piVar2 != (int *)0x0);\n  }" if (parenthesized_expression "(pushed_string_list != (int *)0x0)" ( (binary_expression "pushed_string_list != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    do {\n      piVar2 = (int *)*__ptr;\n      if ((void *)__ptr[2] != (void *)0x0) {\n        free((void *)__ptr[2]);\n      }\n      if (__ptr[3] != 0) {\n        pbVar1 = (byte *)(__ptr[3] + 8);\n        *pbVar1 = *pbVar1 & 0xfd;\n      }\n      free(__ptr);\n      __ptr = piVar2;\n    } while (piVar2 != (int *)0x0);\n  }" { (do_statement "do {\n      piVar2 = (int *)*__ptr;\n      if ((void *)__ptr[2] != (void *)0x0) {\n        free((void *)__ptr[2]);\n      }\n      if (__ptr[3] != 0) {\n        pbVar1 = (byte *)(__ptr[3] + 8);\n        *pbVar1 = *pbVar1 & 0xfd;\n      }\n      free(__ptr);\n      __ptr = piVar2;\n    } while (piVar2 != (int *)0x0);" do (compound_statement "{\n      piVar2 = (int *)*__ptr;\n      if ((void *)__ptr[2] != (void *)0x0) {\n        free((void *)__ptr[2]);\n      }\n      if (__ptr[3] != 0) {\n        pbVar1 = (byte *)(__ptr[3] + 8);\n        *pbVar1 = *pbVar1 & 0xfd;\n      }\n      free(__ptr);\n      __ptr = piVar2;\n    }" { (expression_statement "piVar2 = (int *)*__ptr;" (assignment_expression "piVar2 = (int *)*__ptr" identifier = (cast_expression "(int *)*__ptr" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*__ptr" * identifier))) ;) (if_statement "if ((void *)__ptr[2] != (void *)0x0) {\n        free((void *)__ptr[2]);\n      }" if (parenthesized_expression "((void *)__ptr[2] != (void *)0x0)" ( (binary_expression "(void *)__ptr[2] != (void *)0x0" (cast_expression "(void *)__ptr[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "__ptr[2]" identifier [ number_literal ])) != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free((void *)__ptr[2]);\n      }" { (expression_statement "free((void *)__ptr[2]);" (call_expression "free((void *)__ptr[2])" identifier (argument_list "((void *)__ptr[2])" ( (cast_expression "(void *)__ptr[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "__ptr[2]" identifier [ number_literal ])) ))) ;) })) (if_statement "if (__ptr[3] != 0) {\n        pbVar1 = (byte *)(__ptr[3] + 8);\n        *pbVar1 = *pbVar1 & 0xfd;\n      }" if (parenthesized_expression "(__ptr[3] != 0)" ( (binary_expression "__ptr[3] != 0" (subscript_expression "__ptr[3]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        pbVar1 = (byte *)(__ptr[3] + 8);\n        *pbVar1 = *pbVar1 & 0xfd;\n      }" { (expression_statement "pbVar1 = (byte *)(__ptr[3] + 8);" (assignment_expression "pbVar1 = (byte *)(__ptr[3] + 8)" identifier = (cast_expression "(byte *)(__ptr[3] + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr[3] + 8)" ( (binary_expression "__ptr[3] + 8" (subscript_expression "__ptr[3]" identifier [ number_literal ]) + number_literal) )))) ;) (expression_statement "*pbVar1 = *pbVar1 & 0xfd;" (assignment_expression "*pbVar1 = *pbVar1 & 0xfd" (pointer_expression "*pbVar1" * identifier) = (binary_expression "*pbVar1 & 0xfd" (pointer_expression "*pbVar1" * identifier) & number_literal)) ;) })) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (expression_statement "__ptr = piVar2;" (assignment_expression "__ptr = piVar2" identifier = identifier) ;) }) while (parenthesized_expression "(piVar2 != (int *)0x0)" ( (binary_expression "piVar2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (expression_statement "pushed_string_list = (int *)0x0;" (assignment_expression "pushed_string_list = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) & LIT)) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (return_statement return ;) })))
(function_definition "void free_pushed_string_input(void)\n\n{\n  byte *pbVar1;\n  int *piVar2;\n  int *__ptr;\n  \n  __ptr = pushed_string_list;\n  if (pushed_string_list != (int *)0x0) {\n    do {\n      piVar2 = (int *)*__ptr;\n      if ((void *)__ptr[2] != (void *)0x0) {\n        free((void *)__ptr[2]);\n      }\n      if (__ptr[3] != 0) {\n        pbVar1 = (byte *)(__ptr[3] + 8);\n        *pbVar1 = *pbVar1 & 0xfd;\n      }\n      free(__ptr);\n      __ptr = piVar2;\n    } while (piVar2 != (int *)0x0);\n  }\n  pushed_string_list = (int *)0x0;\n  return;\n}" (primitive_type "void") (function_declarator "free_pushed_string_input(void)" (identifier "free_pushed_string_input") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  byte *pbVar1;\n  int *piVar2;\n  int *__ptr;\n  \n  __ptr = pushed_string_list;\n  if (pushed_string_list != (int *)0x0) {\n    do {\n      piVar2 = (int *)*__ptr;\n      if ((void *)__ptr[2] != (void *)0x0) {\n        free((void *)__ptr[2]);\n      }\n      if (__ptr[3] != 0) {\n        pbVar1 = (byte *)(__ptr[3] + 8);\n        *pbVar1 = *pbVar1 & 0xfd;\n      }\n      free(__ptr);\n      __ptr = piVar2;\n    } while (piVar2 != (int *)0x0);\n  }\n  pushed_string_list = (int *)0x0;\n  return;\n}" ({ "{") (declaration "byte *pbVar1;" (type_identifier "byte") (pointer_declarator "*pbVar1" (* "*") (identifier "pbVar1")) (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "int *__ptr;" (primitive_type "int") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (expression_statement "__ptr = pushed_string_list;" (assignment_expression "__ptr = pushed_string_list" (identifier "__ptr") (= "=") (identifier "pushed_string_list")) (; ";")) (if_statement "if (pushed_string_list != (int *)0x0) {\n    do {\n      piVar2 = (int *)*__ptr;\n      if ((void *)__ptr[2] != (void *)0x0) {\n        free((void *)__ptr[2]);\n      }\n      if (__ptr[3] != 0) {\n        pbVar1 = (byte *)(__ptr[3] + 8);\n        *pbVar1 = *pbVar1 & 0xfd;\n      }\n      free(__ptr);\n      __ptr = piVar2;\n    } while (piVar2 != (int *)0x0);\n  }" (if "if") (parenthesized_expression "(pushed_string_list != (int *)0x0)" (( "(") (binary_expression "pushed_string_list != (int *)0x0" (identifier "pushed_string_list") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    do {\n      piVar2 = (int *)*__ptr;\n      if ((void *)__ptr[2] != (void *)0x0) {\n        free((void *)__ptr[2]);\n      }\n      if (__ptr[3] != 0) {\n        pbVar1 = (byte *)(__ptr[3] + 8);\n        *pbVar1 = *pbVar1 & 0xfd;\n      }\n      free(__ptr);\n      __ptr = piVar2;\n    } while (piVar2 != (int *)0x0);\n  }" ({ "{") (do_statement "do {\n      piVar2 = (int *)*__ptr;\n      if ((void *)__ptr[2] != (void *)0x0) {\n        free((void *)__ptr[2]);\n      }\n      if (__ptr[3] != 0) {\n        pbVar1 = (byte *)(__ptr[3] + 8);\n        *pbVar1 = *pbVar1 & 0xfd;\n      }\n      free(__ptr);\n      __ptr = piVar2;\n    } while (piVar2 != (int *)0x0);" (do "do") (compound_statement "{\n      piVar2 = (int *)*__ptr;\n      if ((void *)__ptr[2] != (void *)0x0) {\n        free((void *)__ptr[2]);\n      }\n      if (__ptr[3] != 0) {\n        pbVar1 = (byte *)(__ptr[3] + 8);\n        *pbVar1 = *pbVar1 & 0xfd;\n      }\n      free(__ptr);\n      __ptr = piVar2;\n    }" ({ "{") (expression_statement "piVar2 = (int *)*__ptr;" (assignment_expression "piVar2 = (int *)*__ptr" (identifier "piVar2") (= "=") (cast_expression "(int *)*__ptr" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*__ptr" (* "*") (identifier "__ptr")))) (; ";")) (if_statement "if ((void *)__ptr[2] != (void *)0x0) {\n        free((void *)__ptr[2]);\n      }" (if "if") (parenthesized_expression "((void *)__ptr[2] != (void *)0x0)" (( "(") (binary_expression "(void *)__ptr[2] != (void *)0x0" (cast_expression "(void *)__ptr[2]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "__ptr[2]" (identifier "__ptr") ([ "[") (number_literal "2") (] "]"))) (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        free((void *)__ptr[2]);\n      }" ({ "{") (expression_statement "free((void *)__ptr[2]);" (call_expression "free((void *)__ptr[2])" (identifier "free") (argument_list "((void *)__ptr[2])" (( "(") (cast_expression "(void *)__ptr[2]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "__ptr[2]" (identifier "__ptr") ([ "[") (number_literal "2") (] "]"))) () ")"))) (; ";")) (} "}"))) (if_statement "if (__ptr[3] != 0) {\n        pbVar1 = (byte *)(__ptr[3] + 8);\n        *pbVar1 = *pbVar1 & 0xfd;\n      }" (if "if") (parenthesized_expression "(__ptr[3] != 0)" (( "(") (binary_expression "__ptr[3] != 0" (subscript_expression "__ptr[3]" (identifier "__ptr") ([ "[") (number_literal "3") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        pbVar1 = (byte *)(__ptr[3] + 8);\n        *pbVar1 = *pbVar1 & 0xfd;\n      }" ({ "{") (expression_statement "pbVar1 = (byte *)(__ptr[3] + 8);" (assignment_expression "pbVar1 = (byte *)(__ptr[3] + 8)" (identifier "pbVar1") (= "=") (cast_expression "(byte *)(__ptr[3] + 8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(__ptr[3] + 8)" (( "(") (binary_expression "__ptr[3] + 8" (subscript_expression "__ptr[3]" (identifier "__ptr") ([ "[") (number_literal "3") (] "]")) (+ "+") (number_literal "8")) () ")")))) (; ";")) (expression_statement "*pbVar1 = *pbVar1 & 0xfd;" (assignment_expression "*pbVar1 = *pbVar1 & 0xfd" (pointer_expression "*pbVar1" (* "*") (identifier "pbVar1")) (= "=") (binary_expression "*pbVar1 & 0xfd" (pointer_expression "*pbVar1" (* "*") (identifier "pbVar1")) (& "&") (number_literal "0xfd"))) (; ";")) (} "}"))) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (expression_statement "__ptr = piVar2;" (assignment_expression "__ptr = piVar2" (identifier "__ptr") (= "=") (identifier "piVar2")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar2 != (int *)0x0)" (( "(") (binary_expression "piVar2 != (int *)0x0" (identifier "piVar2") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (} "}"))) (expression_statement "pushed_string_list = (int *)0x0;" (assignment_expression "pushed_string_list = (int *)0x0" (identifier "pushed_string_list") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention -- yet parameter storage is locked */

void function_1(void)

{
  char *pcVar1;
  type_1 *var_3;
  type_1 *__ptr;
  
  __ptr = var_1;
  if (var_1 != (type_2 *)0x0) {
    do {
      var_3 = __ptr->next;
      if (__ptr->saved_line != (char *)0x0) {
        var_2(__ptr->saved_line);
      }
      if (__ptr->expander != (type_3 *)0x0) {
        pcVar1 = &__ptr->expander->flags;
        *pcVar1 = *pcVar1 & 0xfd;
      }
      var_2(__ptr);
      __ptr = var_3;
    } while (var_3 != (type_1 *)0x0);
  }
  var_1 = (type_2 *)0x0;
  return;
}


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

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

void MASKED(void)

{
  byte *pbVar1;
  int *piVar2;
  int *__ptr;
  
  __ptr = pushed_string_list;
  if (pushed_string_list != (int *)0x0) {
    do {
      piVar2 = (int *)*__ptr;
      if ((void *)__ptr[2] != (void *)0x0) {
        free((void *)__ptr[2]);
      }
      if (__ptr[3] != 0) {
        pbVar1 = (byte *)(__ptr[3] + 8);
        *pbVar1 = *pbVar1 & 0xfd;
      }
      free(__ptr);
      __ptr = piVar2;
    } while (piVar2 != (int *)0x0);
  }
  pushed_string_list = (int *)0x0;
  return;
}

