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

void ldemul_list_emulation_options(FILE *f)

{
  bool bVar1;
  char *__format;
  undefined **ppuVar2;
  undefined *puVar3;
  
  bVar1 = false;
  ppuVar2 = &ld_emulations;
  puVar3 = ld_emulations;
  if (ld_emulations != (undefined *)0x0) {
    do {
      if (*(int *)(puVar3 + 0x58) != 0) {
        fprintf((FILE *)f,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));
        (**(code **)(puVar3 + 0x58))(f);
        bVar1 = true;
      }
      ppuVar2 = ppuVar2 + 1;
      puVar3 = *ppuVar2;
    } while (*ppuVar2 != (undefined *)0x0);
    if (bVar1) {
      return;
    }
  }
  __format = (char *)dcgettext(0,"  no emulation specific options.\n",5);
  fprintf((FILE *)f,__format);
  return;
}



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

void FUN_00031a90(FILE *param_1)

{
  bool bVar1;
  char *__format;
  undefined **ppuVar2;
  undefined *puVar3;
  
  bVar1 = false;
  ppuVar2 = &PTR_PTR_FUN_000933a0;
  puVar3 = PTR_PTR_FUN_000933a0;
  if (PTR_PTR_FUN_000933a0 != (undefined *)0x0) {
    do {
      if (*(int *)(puVar3 + 0x58) != 0) {
        fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));
        (**(code **)(puVar3 + 0x58))(param_1);
        bVar1 = true;
      }
      ppuVar2 = ppuVar2 + 1;
      puVar3 = *ppuVar2;
    } while (*ppuVar2 != (undefined *)0x0);
    if (bVar1) {
      return;
    }
  }
  __format = (char *)dcgettext(0,"  no emulation specific options.\n",5);
  fprintf(param_1,__format);
  return;
}


PUSH EBP
XOR EAX,EAX
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00015a30
ADD EBX,0x61565
SUB ESP,0x1c
MOV EDI,dword ptr [ESP + 0x30]
MOV ESI,dword ptr [EBX + 0x3a0]
LEA EDX,[EBX + 0xfffbd486]
LEA EBP,[EBX + 0x3a0]
MOV dword ptr [ESP + 0xc],EDX
TEST ESI,ESI
JZ 0x00031b08
LEA ESI,[ESI]
MOV EDX,dword ptr [ESI + 0x58]
TEST EDX,EDX
JZ 0x00031aed
SUB ESP,0x4
PUSH dword ptr [ESI + 0x2c]
PUSH dword ptr [ESP + 0x14]
PUSH EDI
CALL 0x00014740
MOV dword ptr [ESP],EDI
CALL dword ptr [ESI + 0x58]
ADD ESP,0x10
MOV EAX,0x1
ADD EBP,0x4
MOV ESI,dword ptr [EBP]
TEST ESI,ESI
JNZ 0x00031ac8
TEST EAX,EAX
JZ 0x00031b08
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x4
LEA EAX,[EBX + 0xfffbd4b4]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000142e0
POP ECX
POP ESI
PUSH EAX
PUSH EDI
CALL 0x00014740
ADD ESP,0x10
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 FUN_00031a90(FILE *param_1)\n\n{\n  bool bVar1;\n  char *__format;\n  undefined **ppuVar2;\n  undefined *puVar3;\n  \n  bVar1 = false;\n  ppuVar2 = &PTR_PTR_FUN_000933a0;\n  puVar3 = PTR_PTR_FUN_000933a0;\n  if (PTR_PTR_FUN_000933a0 != (undefined *)0x0) {\n    do {\n      if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(param_1);\n        bVar1 = true;\n      }\n      ppuVar2 = ppuVar2 + 1;\n      puVar3 = *ppuVar2;\n    } while (*ppuVar2 != (undefined *)0x0);\n    if (bVar1) {\n      return;\n    }\n  }\n  __format = (char *)dcgettext(0,"  no emulation specific options.\n",5);\n  fprintf(param_1,__format);\n  return;\n}\n\n" comment (function_definition "void FUN_00031a90(FILE *param_1)\n\n{\n  bool bVar1;\n  char *__format;\n  undefined **ppuVar2;\n  undefined *puVar3;\n  \n  bVar1 = false;\n  ppuVar2 = &PTR_PTR_FUN_000933a0;\n  puVar3 = PTR_PTR_FUN_000933a0;\n  if (PTR_PTR_FUN_000933a0 != (undefined *)0x0) {\n    do {\n      if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(param_1);\n        bVar1 = true;\n      }\n      ppuVar2 = ppuVar2 + 1;\n      puVar3 = *ppuVar2;\n    } while (*ppuVar2 != (undefined *)0x0);\n    if (bVar1) {\n      return;\n    }\n  }\n  __format = (char *)dcgettext(0,"  no emulation specific options.\n",5);\n  fprintf(param_1,__format);\n  return;\n}" primitive_type (function_declarator "FUN_00031a90(FILE *param_1)" identifier (parameter_list "(FILE *param_1)" ( (parameter_declaration "FILE *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  bool bVar1;\n  char *__format;\n  undefined **ppuVar2;\n  undefined *puVar3;\n  \n  bVar1 = false;\n  ppuVar2 = &PTR_PTR_FUN_000933a0;\n  puVar3 = PTR_PTR_FUN_000933a0;\n  if (PTR_PTR_FUN_000933a0 != (undefined *)0x0) {\n    do {\n      if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(param_1);\n        bVar1 = true;\n      }\n      ppuVar2 = ppuVar2 + 1;\n      puVar3 = *ppuVar2;\n    } while (*ppuVar2 != (undefined *)0x0);\n    if (bVar1) {\n      return;\n    }\n  }\n  __format = (char *)dcgettext(0,"  no emulation specific options.\n",5);\n  fprintf(param_1,__format);\n  return;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "char *__format;" primitive_type (pointer_declarator "*__format" * identifier) ;) (declaration "undefined **ppuVar2;" type_identifier (pointer_declarator "**ppuVar2" * (pointer_declarator "*ppuVar2" * identifier)) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (expression_statement "ppuVar2 = &PTR_PTR_FUN_000933a0;" (assignment_expression "ppuVar2 = &PTR_PTR_FUN_000933a0" identifier = (pointer_expression "&PTR_PTR_FUN_000933a0" & identifier)) ;) (expression_statement "puVar3 = PTR_PTR_FUN_000933a0;" (assignment_expression "puVar3 = PTR_PTR_FUN_000933a0" identifier = identifier) ;) (if_statement "if (PTR_PTR_FUN_000933a0 != (undefined *)0x0) {\n    do {\n      if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(param_1);\n        bVar1 = true;\n      }\n      ppuVar2 = ppuVar2 + 1;\n      puVar3 = *ppuVar2;\n    } while (*ppuVar2 != (undefined *)0x0);\n    if (bVar1) {\n      return;\n    }\n  }" if (parenthesized_expression "(PTR_PTR_FUN_000933a0 != (undefined *)0x0)" ( (binary_expression "PTR_PTR_FUN_000933a0 != (undefined *)0x0" identifier != (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    do {\n      if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(param_1);\n        bVar1 = true;\n      }\n      ppuVar2 = ppuVar2 + 1;\n      puVar3 = *ppuVar2;\n    } while (*ppuVar2 != (undefined *)0x0);\n    if (bVar1) {\n      return;\n    }\n  }" { (do_statement "do {\n      if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(param_1);\n        bVar1 = true;\n      }\n      ppuVar2 = ppuVar2 + 1;\n      puVar3 = *ppuVar2;\n    } while (*ppuVar2 != (undefined *)0x0);" do (compound_statement "{\n      if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(param_1);\n        bVar1 = true;\n      }\n      ppuVar2 = ppuVar2 + 1;\n      puVar3 = *ppuVar2;\n    }" { (if_statement "if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(param_1);\n        bVar1 = true;\n      }" if (parenthesized_expression "(*(int *)(puVar3 + 0x58) != 0)" ( (binary_expression "*(int *)(puVar3 + 0x58) != 0" (pointer_expression "*(int *)(puVar3 + 0x58)" * (cast_expression "(int *)(puVar3 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x58)" ( (binary_expression "puVar3 + 0x58" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(param_1);\n        bVar1 = true;\n      }" { (expression_statement "fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));" (call_expression "fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c))" identifier (argument_list "(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c))" ( identifier , (string_literal ""%s: \n"" " string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(puVar3 + 0x2c)" * (cast_expression "(undefined4 *)(puVar3 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x2c)" ( (binary_expression "puVar3 + 0x2c" identifier + number_literal) )))) ))) ;) (expression_statement "(**(code **)(puVar3 + 0x58))(param_1);" (call_expression "(**(code **)(puVar3 + 0x58))(param_1)" (parenthesized_expression "(**(code **)(puVar3 + 0x58))" ( (pointer_expression "**(code **)(puVar3 + 0x58)" * (pointer_expression "*(code **)(puVar3 + 0x58)" * (cast_expression "(code **)(puVar3 + 0x58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x58)" ( (binary_expression "puVar3 + 0x58" identifier + number_literal) ))))) )) (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) })) (expression_statement "ppuVar2 = ppuVar2 + 1;" (assignment_expression "ppuVar2 = ppuVar2 + 1" identifier = (binary_expression "ppuVar2 + 1" identifier + number_literal)) ;) (expression_statement "puVar3 = *ppuVar2;" (assignment_expression "puVar3 = *ppuVar2" identifier = (pointer_expression "*ppuVar2" * identifier)) ;) }) while (parenthesized_expression "(*ppuVar2 != (undefined *)0x0)" ( (binary_expression "*ppuVar2 != (undefined *)0x0" (pointer_expression "*ppuVar2" * identifier) != (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (if_statement "if (bVar1) {\n      return;\n    }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) })) (expression_statement "__format = (char *)dcgettext(0,"  no emulation specific options.\n",5);" (assignment_expression "__format = (char *)dcgettext(0,"  no emulation specific options.\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"  no emulation specific options.\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"  no emulation specific options.\n",5)" identifier (argument_list "(0,"  no emulation specific options.\n",5)" ( number_literal , (string_literal ""  no emulation specific options.\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "fprintf(param_1,__format);" (call_expression "fprintf(param_1,__format)" identifier (argument_list "(param_1,__format)" ( identifier , 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 ldemul_list_emulation_options(FILE *f)\n\n{\n  bool bVar1;\n  char *__format;\n  undefined **ppuVar2;\n  undefined *puVar3;\n  \n  bVar1 = false;\n  ppuVar2 = &ld_emulations;\n  puVar3 = ld_emulations;\n  if (ld_emulations != (undefined *)0x0) {\n    do {\n      if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf((FILE *)f,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(f);\n        bVar1 = true;\n      }\n      ppuVar2 = ppuVar2 + 1;\n      puVar3 = *ppuVar2;\n    } while (*ppuVar2 != (undefined *)0x0);\n    if (bVar1) {\n      return;\n    }\n  }\n  __format = (char *)dcgettext(0,"  no emulation specific options.\n",5);\n  fprintf((FILE *)f,__format);\n  return;\n}\n\n" comment comment (function_definition "void ldemul_list_emulation_options(FILE *f)\n\n{\n  bool bVar1;\n  char *__format;\n  undefined **ppuVar2;\n  undefined *puVar3;\n  \n  bVar1 = false;\n  ppuVar2 = &ld_emulations;\n  puVar3 = ld_emulations;\n  if (ld_emulations != (undefined *)0x0) {\n    do {\n      if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf((FILE *)f,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(f);\n        bVar1 = true;\n      }\n      ppuVar2 = ppuVar2 + 1;\n      puVar3 = *ppuVar2;\n    } while (*ppuVar2 != (undefined *)0x0);\n    if (bVar1) {\n      return;\n    }\n  }\n  __format = (char *)dcgettext(0,"  no emulation specific options.\n",5);\n  fprintf((FILE *)f,__format);\n  return;\n}" primitive_type (function_declarator "ldemul_list_emulation_options(FILE *f)" identifier (parameter_list "(FILE *f)" ( (parameter_declaration "FILE *f" type_identifier (pointer_declarator "*f" * identifier)) ))) (compound_statement "{\n  bool bVar1;\n  char *__format;\n  undefined **ppuVar2;\n  undefined *puVar3;\n  \n  bVar1 = false;\n  ppuVar2 = &ld_emulations;\n  puVar3 = ld_emulations;\n  if (ld_emulations != (undefined *)0x0) {\n    do {\n      if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf((FILE *)f,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(f);\n        bVar1 = true;\n      }\n      ppuVar2 = ppuVar2 + 1;\n      puVar3 = *ppuVar2;\n    } while (*ppuVar2 != (undefined *)0x0);\n    if (bVar1) {\n      return;\n    }\n  }\n  __format = (char *)dcgettext(0,"  no emulation specific options.\n",5);\n  fprintf((FILE *)f,__format);\n  return;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "char *__format;" primitive_type (pointer_declarator "*__format" * identifier) ;) (declaration "undefined **ppuVar2;" type_identifier (pointer_declarator "**ppuVar2" * (pointer_declarator "*ppuVar2" * identifier)) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (expression_statement "ppuVar2 = &ld_emulations;" (assignment_expression "ppuVar2 = &ld_emulations" identifier = (pointer_expression "&ld_emulations" & identifier)) ;) (expression_statement "puVar3 = ld_emulations;" (assignment_expression "puVar3 = ld_emulations" identifier = identifier) ;) (if_statement "if (ld_emulations != (undefined *)0x0) {\n    do {\n      if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf((FILE *)f,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(f);\n        bVar1 = true;\n      }\n      ppuVar2 = ppuVar2 + 1;\n      puVar3 = *ppuVar2;\n    } while (*ppuVar2 != (undefined *)0x0);\n    if (bVar1) {\n      return;\n    }\n  }" if (parenthesized_expression "(ld_emulations != (undefined *)0x0)" ( (binary_expression "ld_emulations != (undefined *)0x0" identifier != (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    do {\n      if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf((FILE *)f,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(f);\n        bVar1 = true;\n      }\n      ppuVar2 = ppuVar2 + 1;\n      puVar3 = *ppuVar2;\n    } while (*ppuVar2 != (undefined *)0x0);\n    if (bVar1) {\n      return;\n    }\n  }" { (do_statement "do {\n      if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf((FILE *)f,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(f);\n        bVar1 = true;\n      }\n      ppuVar2 = ppuVar2 + 1;\n      puVar3 = *ppuVar2;\n    } while (*ppuVar2 != (undefined *)0x0);" do (compound_statement "{\n      if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf((FILE *)f,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(f);\n        bVar1 = true;\n      }\n      ppuVar2 = ppuVar2 + 1;\n      puVar3 = *ppuVar2;\n    }" { (if_statement "if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf((FILE *)f,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(f);\n        bVar1 = true;\n      }" if (parenthesized_expression "(*(int *)(puVar3 + 0x58) != 0)" ( (binary_expression "*(int *)(puVar3 + 0x58) != 0" (pointer_expression "*(int *)(puVar3 + 0x58)" * (cast_expression "(int *)(puVar3 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x58)" ( (binary_expression "puVar3 + 0x58" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        fprintf((FILE *)f,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(f);\n        bVar1 = true;\n      }" { (expression_statement "fprintf((FILE *)f,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));" (call_expression "fprintf((FILE *)f,"%s: \n",*(undefined4 *)(puVar3 + 0x2c))" identifier (argument_list "((FILE *)f,"%s: \n",*(undefined4 *)(puVar3 + 0x2c))" ( (cast_expression "(FILE *)f" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""%s: \n"" " string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(puVar3 + 0x2c)" * (cast_expression "(undefined4 *)(puVar3 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x2c)" ( (binary_expression "puVar3 + 0x2c" identifier + number_literal) )))) ))) ;) (expression_statement "(**(code **)(puVar3 + 0x58))(f);" (call_expression "(**(code **)(puVar3 + 0x58))(f)" (parenthesized_expression "(**(code **)(puVar3 + 0x58))" ( (pointer_expression "**(code **)(puVar3 + 0x58)" * (pointer_expression "*(code **)(puVar3 + 0x58)" * (cast_expression "(code **)(puVar3 + 0x58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x58)" ( (binary_expression "puVar3 + 0x58" identifier + number_literal) ))))) )) (argument_list "(f)" ( identifier ))) ;) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) })) (expression_statement "ppuVar2 = ppuVar2 + 1;" (assignment_expression "ppuVar2 = ppuVar2 + 1" identifier = (binary_expression "ppuVar2 + 1" identifier + number_literal)) ;) (expression_statement "puVar3 = *ppuVar2;" (assignment_expression "puVar3 = *ppuVar2" identifier = (pointer_expression "*ppuVar2" * identifier)) ;) }) while (parenthesized_expression "(*ppuVar2 != (undefined *)0x0)" ( (binary_expression "*ppuVar2 != (undefined *)0x0" (pointer_expression "*ppuVar2" * identifier) != (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (if_statement "if (bVar1) {\n      return;\n    }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) })) (expression_statement "__format = (char *)dcgettext(0,"  no emulation specific options.\n",5);" (assignment_expression "__format = (char *)dcgettext(0,"  no emulation specific options.\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"  no emulation specific options.\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"  no emulation specific options.\n",5)" identifier (argument_list "(0,"  no emulation specific options.\n",5)" ( number_literal , (string_literal ""  no emulation specific options.\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "fprintf((FILE *)f,__format);" (call_expression "fprintf((FILE *)f,__format)" identifier (argument_list "((FILE *)f,__format)" ( (cast_expression "(FILE *)f" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00031a90(FILE *param_1)\n\n{\n  bool bVar1;\n  char *__format;\n  undefined **ppuVar2;\n  undefined *puVar3;\n  \n  bVar1 = false;\n  ppuVar2 = &PTR_PTR_FUN_000933a0;\n  puVar3 = PTR_PTR_FUN_000933a0;\n  if (PTR_PTR_FUN_000933a0 != (undefined *)0x0) {\n    do {\n      if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(param_1);\n        bVar1 = true;\n      }\n      ppuVar2 = ppuVar2 + 1;\n      puVar3 = *ppuVar2;\n    } while (*ppuVar2 != (undefined *)0x0);\n    if (bVar1) {\n      return;\n    }\n  }\n  __format = (char *)dcgettext(0,"  no emulation specific options.\n",5);\n  fprintf(param_1,__format);\n  return;\n}\n\n" (function_definition "void FUN_00031a90(FILE *param_1)\n\n{\n  bool bVar1;\n  char *__format;\n  undefined **ppuVar2;\n  undefined *puVar3;\n  \n  bVar1 = false;\n  ppuVar2 = &PTR_PTR_FUN_000933a0;\n  puVar3 = PTR_PTR_FUN_000933a0;\n  if (PTR_PTR_FUN_000933a0 != (undefined *)0x0) {\n    do {\n      if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(param_1);\n        bVar1 = true;\n      }\n      ppuVar2 = ppuVar2 + 1;\n      puVar3 = *ppuVar2;\n    } while (*ppuVar2 != (undefined *)0x0);\n    if (bVar1) {\n      return;\n    }\n  }\n  __format = (char *)dcgettext(0,"  no emulation specific options.\n",5);\n  fprintf(param_1,__format);\n  return;\n}" primitive_type (function_declarator "FUN_00031a90(FILE *param_1)" identifier (parameter_list "(FILE *param_1)" ( (parameter_declaration "FILE *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  bool bVar1;\n  char *__format;\n  undefined **ppuVar2;\n  undefined *puVar3;\n  \n  bVar1 = false;\n  ppuVar2 = &PTR_PTR_FUN_000933a0;\n  puVar3 = PTR_PTR_FUN_000933a0;\n  if (PTR_PTR_FUN_000933a0 != (undefined *)0x0) {\n    do {\n      if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(param_1);\n        bVar1 = true;\n      }\n      ppuVar2 = ppuVar2 + 1;\n      puVar3 = *ppuVar2;\n    } while (*ppuVar2 != (undefined *)0x0);\n    if (bVar1) {\n      return;\n    }\n  }\n  __format = (char *)dcgettext(0,"  no emulation specific options.\n",5);\n  fprintf(param_1,__format);\n  return;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "char *__format;" primitive_type (pointer_declarator "*__format" * identifier) ;) (declaration "undefined **ppuVar2;" type_identifier (pointer_declarator "**ppuVar2" * (pointer_declarator "*ppuVar2" * identifier)) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (expression_statement "ppuVar2 = &PTR_PTR_FUN_000933a0;" (assignment_expression "ppuVar2 = &PTR_PTR_FUN_000933a0" identifier = (pointer_expression "&PTR_PTR_FUN_000933a0" & identifier)) ;) (expression_statement "puVar3 = PTR_PTR_FUN_000933a0;" (assignment_expression "puVar3 = PTR_PTR_FUN_000933a0" identifier = identifier) ;) (if_statement "if (PTR_PTR_FUN_000933a0 != (undefined *)0x0) {\n    do {\n      if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(param_1);\n        bVar1 = true;\n      }\n      ppuVar2 = ppuVar2 + 1;\n      puVar3 = *ppuVar2;\n    } while (*ppuVar2 != (undefined *)0x0);\n    if (bVar1) {\n      return;\n    }\n  }" if (parenthesized_expression "(PTR_PTR_FUN_000933a0 != (undefined *)0x0)" ( (binary_expression "PTR_PTR_FUN_000933a0 != (undefined *)0x0" identifier != (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    do {\n      if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(param_1);\n        bVar1 = true;\n      }\n      ppuVar2 = ppuVar2 + 1;\n      puVar3 = *ppuVar2;\n    } while (*ppuVar2 != (undefined *)0x0);\n    if (bVar1) {\n      return;\n    }\n  }" { (do_statement "do {\n      if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(param_1);\n        bVar1 = true;\n      }\n      ppuVar2 = ppuVar2 + 1;\n      puVar3 = *ppuVar2;\n    } while (*ppuVar2 != (undefined *)0x0);" do (compound_statement "{\n      if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(param_1);\n        bVar1 = true;\n      }\n      ppuVar2 = ppuVar2 + 1;\n      puVar3 = *ppuVar2;\n    }" { (if_statement "if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(param_1);\n        bVar1 = true;\n      }" if (parenthesized_expression "(*(int *)(puVar3 + 0x58) != 0)" ( (binary_expression "*(int *)(puVar3 + 0x58) != 0" (pointer_expression "*(int *)(puVar3 + 0x58)" * (cast_expression "(int *)(puVar3 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x58)" ( (binary_expression "puVar3 + 0x58" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(param_1);\n        bVar1 = true;\n      }" { (expression_statement "fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));" (call_expression "fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c))" identifier (argument_list "(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c))" ( identifier , (string_literal ""%s: \n"" " string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(puVar3 + 0x2c)" * (cast_expression "(undefined4 *)(puVar3 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x2c)" ( (binary_expression "puVar3 + 0x2c" identifier + number_literal) )))) ))) ;) (expression_statement "(**(code **)(puVar3 + 0x58))(param_1);" (call_expression "(**(code **)(puVar3 + 0x58))(param_1)" (parenthesized_expression "(**(code **)(puVar3 + 0x58))" ( (pointer_expression "**(code **)(puVar3 + 0x58)" * (pointer_expression "*(code **)(puVar3 + 0x58)" * (cast_expression "(code **)(puVar3 + 0x58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x58)" ( (binary_expression "puVar3 + 0x58" identifier + number_literal) ))))) )) (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) })) (expression_statement "ppuVar2 = ppuVar2 + 1;" (assignment_expression "ppuVar2 = ppuVar2 + 1" identifier = (binary_expression "ppuVar2 + 1" identifier + number_literal)) ;) (expression_statement "puVar3 = *ppuVar2;" (assignment_expression "puVar3 = *ppuVar2" identifier = (pointer_expression "*ppuVar2" * identifier)) ;) }) while (parenthesized_expression "(*ppuVar2 != (undefined *)0x0)" ( (binary_expression "*ppuVar2 != (undefined *)0x0" (pointer_expression "*ppuVar2" * identifier) != (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (if_statement "if (bVar1) {\n      return;\n    }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) })) (expression_statement "__format = (char *)dcgettext(0,"  no emulation specific options.\n",5);" (assignment_expression "__format = (char *)dcgettext(0,"  no emulation specific options.\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"  no emulation specific options.\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"  no emulation specific options.\n",5)" identifier (argument_list "(0,"  no emulation specific options.\n",5)" ( number_literal , (string_literal ""  no emulation specific options.\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "fprintf(param_1,__format);" (call_expression "fprintf(param_1,__format)" identifier (argument_list "(param_1,__format)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & 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 { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (return_statement return ;) })) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_00031a90(FILE *param_1)\n\n{\n  bool bVar1;\n  char *__format;\n  undefined **ppuVar2;\n  undefined *puVar3;\n  \n  bVar1 = false;\n  ppuVar2 = &PTR_PTR_FUN_000933a0;\n  puVar3 = PTR_PTR_FUN_000933a0;\n  if (PTR_PTR_FUN_000933a0 != (undefined *)0x0) {\n    do {\n      if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(param_1);\n        bVar1 = true;\n      }\n      ppuVar2 = ppuVar2 + 1;\n      puVar3 = *ppuVar2;\n    } while (*ppuVar2 != (undefined *)0x0);\n    if (bVar1) {\n      return;\n    }\n  }\n  __format = (char *)dcgettext(0,"  no emulation specific options.\n",5);\n  fprintf(param_1,__format);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00031a90(FILE *param_1)" (identifier "FUN_00031a90") (parameter_list "(FILE *param_1)" (( "(") (parameter_declaration "FILE *param_1" (type_identifier "FILE") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  bool bVar1;\n  char *__format;\n  undefined **ppuVar2;\n  undefined *puVar3;\n  \n  bVar1 = false;\n  ppuVar2 = &PTR_PTR_FUN_000933a0;\n  puVar3 = PTR_PTR_FUN_000933a0;\n  if (PTR_PTR_FUN_000933a0 != (undefined *)0x0) {\n    do {\n      if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(param_1);\n        bVar1 = true;\n      }\n      ppuVar2 = ppuVar2 + 1;\n      puVar3 = *ppuVar2;\n    } while (*ppuVar2 != (undefined *)0x0);\n    if (bVar1) {\n      return;\n    }\n  }\n  __format = (char *)dcgettext(0,"  no emulation specific options.\n",5);\n  fprintf(param_1,__format);\n  return;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "char *__format;" (primitive_type "char") (pointer_declarator "*__format" (* "*") (identifier "__format")) (; ";")) (declaration "undefined **ppuVar2;" (type_identifier "undefined") (pointer_declarator "**ppuVar2" (* "*") (pointer_declarator "*ppuVar2" (* "*") (identifier "ppuVar2"))) (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" (identifier "bVar1") (= "=") (false "false")) (; ";")) (expression_statement "ppuVar2 = &PTR_PTR_FUN_000933a0;" (assignment_expression "ppuVar2 = &PTR_PTR_FUN_000933a0" (identifier "ppuVar2") (= "=") (pointer_expression "&PTR_PTR_FUN_000933a0" (& "&") (identifier "PTR_PTR_FUN_000933a0"))) (; ";")) (expression_statement "puVar3 = PTR_PTR_FUN_000933a0;" (assignment_expression "puVar3 = PTR_PTR_FUN_000933a0" (identifier "puVar3") (= "=") (identifier "PTR_PTR_FUN_000933a0")) (; ";")) (if_statement "if (PTR_PTR_FUN_000933a0 != (undefined *)0x0) {\n    do {\n      if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(param_1);\n        bVar1 = true;\n      }\n      ppuVar2 = ppuVar2 + 1;\n      puVar3 = *ppuVar2;\n    } while (*ppuVar2 != (undefined *)0x0);\n    if (bVar1) {\n      return;\n    }\n  }" (if "if") (parenthesized_expression "(PTR_PTR_FUN_000933a0 != (undefined *)0x0)" (( "(") (binary_expression "PTR_PTR_FUN_000933a0 != (undefined *)0x0" (identifier "PTR_PTR_FUN_000933a0") (!= "!=") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    do {\n      if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(param_1);\n        bVar1 = true;\n      }\n      ppuVar2 = ppuVar2 + 1;\n      puVar3 = *ppuVar2;\n    } while (*ppuVar2 != (undefined *)0x0);\n    if (bVar1) {\n      return;\n    }\n  }" ({ "{") (do_statement "do {\n      if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(param_1);\n        bVar1 = true;\n      }\n      ppuVar2 = ppuVar2 + 1;\n      puVar3 = *ppuVar2;\n    } while (*ppuVar2 != (undefined *)0x0);" (do "do") (compound_statement "{\n      if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(param_1);\n        bVar1 = true;\n      }\n      ppuVar2 = ppuVar2 + 1;\n      puVar3 = *ppuVar2;\n    }" ({ "{") (if_statement "if (*(int *)(puVar3 + 0x58) != 0) {\n        fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(param_1);\n        bVar1 = true;\n      }" (if "if") (parenthesized_expression "(*(int *)(puVar3 + 0x58) != 0)" (( "(") (binary_expression "*(int *)(puVar3 + 0x58) != 0" (pointer_expression "*(int *)(puVar3 + 0x58)" (* "*") (cast_expression "(int *)(puVar3 + 0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 0x58)" (( "(") (binary_expression "puVar3 + 0x58" (identifier "puVar3") (+ "+") (number_literal "0x58")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));\n        (**(code **)(puVar3 + 0x58))(param_1);\n        bVar1 = true;\n      }" ({ "{") (expression_statement "fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));" (call_expression "fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c))" (identifier "fprintf") (argument_list "(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c))" (( "(") (identifier "param_1") (, ",") (string_literal ""%s: \n"" (" """) (string_content "%s: ") (escape_sequence "\n") (" """)) (, ",") (pointer_expression "*(undefined4 *)(puVar3 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(puVar3 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 0x2c)" (( "(") (binary_expression "puVar3 + 0x2c" (identifier "puVar3") (+ "+") (number_literal "0x2c")) () ")")))) () ")"))) (; ";")) (expression_statement "(**(code **)(puVar3 + 0x58))(param_1);" (call_expression "(**(code **)(puVar3 + 0x58))(param_1)" (parenthesized_expression "(**(code **)(puVar3 + 0x58))" (( "(") (pointer_expression "**(code **)(puVar3 + 0x58)" (* "*") (pointer_expression "*(code **)(puVar3 + 0x58)" (* "*") (cast_expression "(code **)(puVar3 + 0x58)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + 0x58)" (( "(") (binary_expression "puVar3 + 0x58" (identifier "puVar3") (+ "+") (number_literal "0x58")) () ")"))))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" (identifier "bVar1") (= "=") (true "true")) (; ";")) (} "}"))) (expression_statement "ppuVar2 = ppuVar2 + 1;" (assignment_expression "ppuVar2 = ppuVar2 + 1" (identifier "ppuVar2") (= "=") (binary_expression "ppuVar2 + 1" (identifier "ppuVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar3 = *ppuVar2;" (assignment_expression "puVar3 = *ppuVar2" (identifier "puVar3") (= "=") (pointer_expression "*ppuVar2" (* "*") (identifier "ppuVar2"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*ppuVar2 != (undefined *)0x0)" (( "(") (binary_expression "*ppuVar2 != (undefined *)0x0" (pointer_expression "*ppuVar2" (* "*") (identifier "ppuVar2")) (!= "!=") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (if_statement "if (bVar1) {\n      return;\n    }" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (expression_statement "__format = (char *)dcgettext(0,"  no emulation specific options.\n",5);" (assignment_expression "__format = (char *)dcgettext(0,"  no emulation specific options.\n",5)" (identifier "__format") (= "=") (cast_expression "(char *)dcgettext(0,"  no emulation specific options.\n",5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "dcgettext(0,"  no emulation specific options.\n",5)" (identifier "dcgettext") (argument_list "(0,"  no emulation specific options.\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""  no emulation specific options.\n"" (" """) (string_content "  no emulation specific options.") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")"))))) (; ";")) (expression_statement "fprintf(param_1,__format);" (call_expression "fprintf(param_1,__format)" (identifier "fprintf") (argument_list "(param_1,__format)" (( "(") (identifier "param_1") (, ",") (identifier "__format") () ")"))) (; ";")) (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 *f)

{
  bool bVar1;
  char *__format;
  type_2 **var_4;
  type_2 *var_2;
  
  bVar1 = false;
  var_4 = &var_1;
  var_2 = var_1;
  if (var_1 != (type_2 *)0x0) {
    do {
      if (*(int *)(var_2 + 0x58) != 0) {
        var_3((type_1 *)f,"%s: \n",*(type_3 *)(var_2 + 0x2c));
        (**(type_4 **)(var_2 + 0x58))(f);
        bVar1 = true;
      }
      var_4 = var_4 + 1;
      var_2 = *var_4;
    } while (*var_4 != (type_2 *)0x0);
    if (bVar1) {
      return;
    }
  }
  __format = (char *)var_5(0,"  no emulation specific options.\n",5);
  var_3((type_1 *)f,__format);
  return;
}


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

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

void MASKED(FILE *param_1)

{
  bool bVar1;
  char *__format;
  undefined **ppuVar2;
  undefined *puVar3;
  
  bVar1 = false;
  ppuVar2 = &PTR_PTR_FUN_000933a0;
  puVar3 = PTR_PTR_FUN_000933a0;
  if (PTR_PTR_FUN_000933a0 != (undefined *)0x0) {
    do {
      if (*(int *)(puVar3 + 0x58) != 0) {
        fprintf(param_1,"%s: \n",*(undefined4 *)(puVar3 + 0x2c));
        (**(code **)(puVar3 + 0x58))(param_1);
        bVar1 = true;
      }
      ppuVar2 = ppuVar2 + 1;
      puVar3 = *ppuVar2;
    } while (*ppuVar2 != (undefined *)0x0);
    if (bVar1) {
      return;
    }
  }
  __format = (char *)dcgettext(0,"  no emulation specific options.\n",5);
  fprintf(param_1,__format);
  return;
}

