
/* DWARF original prototype: void One_option(One_option * this, char * ln, Dashes d, char sn, char *
   dv, char * hs, char * ha, bool oa, Struct_var * r, bool id) */

void __thiscall
gold::options::One_option::One_option
          (One_option *this,char *ln,Dashes d,char sn,char *dv,char *hs,char *ha,bool oa,
          Struct_var *r,bool id)

{
  char *pcVar1;
  size_t sVar2;
  int unaff_EDI;
  undefined3 in_stack_00000011;
  
  __x86_get_pc_thunk_di();
  (this->longname)._M_dataplus._M_p = (pointer)&(this->longname).field_2;
  pcVar1 = (char *)0xffffffff;
  if (ln != (char *)0x0) {
    sVar2 = strlen(ln);
    pcVar1 = ln + sVar2;
  }
  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
  _M_construct<char_const*>(&this->longname,ln,pcVar1,0);
  this->dashes = d;
  this->shortname = (char)_sn;
  if (dv == (char *)0x0) {
    dv = (char *)(unaff_EDI + 0x1b28ff);
  }
  this->helpstring = hs;
  this->default_value = dv;
  this->helparg = ha;
  this->optional_arg = oa;
  this->reader = r;
  this->is_default = id;
  pcVar1 = strchr((this->longname)._M_dataplus._M_p,0x5f);
  if (pcVar1 != (char *)0x0) {
    do {
      *pcVar1 = '-';
      pcVar1 = strchr(pcVar1,0x5f);
    } while (pcVar1 != (char *)0x0);
    hs = this->helpstring;
  }
  if ((hs != (char *)0x0) &&
     (*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0')) {
                    /* try { // try from 000eb612 to 000eb616 has its CatchHandler @ 000eb61f */
    register_option(_sn);
    return;
  }
  return;
}



void FUN_000eb510(int *param_1,char *param_2,int param_3,undefined1 param_4,int param_5,int param_6,
                 int param_7,undefined1 param_8,int param_9,undefined1 param_10)

{
  char *pcVar1;
  size_t sVar2;
  int unaff_EDI;
  
  FUN_000559ee();
  *param_1 = (int)(param_1 + 2);
  pcVar1 = (char *)0xffffffff;
  if (param_2 != (char *)0x0) {
    sVar2 = strlen(param_2);
    pcVar1 = param_2 + sVar2;
  }
  FUN_00050e40(param_1,param_2,pcVar1,0);
  param_1[6] = param_3;
  *(undefined1 *)(param_1 + 7) = param_4;
  if (param_5 == 0) {
    param_5 = unaff_EDI + 0x1b28ff;
  }
  param_1[9] = param_6;
  param_1[8] = param_5;
  param_1[10] = param_7;
  *(undefined1 *)(param_1 + 0xb) = param_8;
  param_1[0xc] = param_9;
  *(undefined1 *)(param_1 + 0xd) = param_10;
  pcVar1 = strchr((char *)*param_1,0x5f);
  if (pcVar1 != (char *)0x0) {
    do {
      *pcVar1 = '-';
      pcVar1 = strchr(pcVar1,0x5f);
    } while (pcVar1 != (char *)0x0);
    param_6 = param_1[9];
  }
  if ((param_6 != 0) &&
     (*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0')) {
                    /* try { // try from 000eb612 to 000eb616 has its CatchHandler @ 000eb61f */
    FUN_000df670();
    return;
  }
  return;
}


PUSH EBP
PUSH EDI
CALL 0x000559ee
ADD EDI,0x2a3ae9
PUSH ESI
PUSH EBX
SUB ESP,0x1c
MOV EAX,dword ptr [ESP + 0x3c]
MOV ESI,dword ptr [ESP + 0x30]
MOV EDX,dword ptr [ESP + 0x34]
MOV EBP,dword ptr [ESP + 0x40]
MOV dword ptr [ESP],EAX
MOV EAX,dword ptr [ESP + 0x4c]
MOV dword ptr [ESP + 0x4],EAX
MOV EAX,dword ptr [ESP + 0x54]
MOV dword ptr [ESP + 0x8],EAX
LEA EAX,[ESI + 0x8]
MOV dword ptr [ESP + 0xc],EAX
MOV dword ptr [ESI],EAX
MOV EAX,0xffffffff
TEST EDX,EDX
JZ 0x000eb56f
SUB ESP,0xc
MOV EBX,EDI
PUSH EDX
MOV dword ptr [ESP + 0x44],EDX
CALL 0x000295f0
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x34]
ADD EAX,EDX
PUSH 0x0
MOV EBX,EDI
PUSH EAX
PUSH EDX
PUSH ESI
CALL 0x00050e40
MOV EAX,dword ptr [ESP + 0x48]
TEST EBP,EBP
MOV dword ptr [ESI + 0x18],EAX
MOVZX EAX,byte ptr [ESP + 0x10]
MOV byte ptr [ESI + 0x1c],AL
LEA EAX,[EDI + 0xfff0ee16]
POP EDX
CMOVZ EBP,EAX
POP ECX
MOV EAX,dword ptr [ESP + 0x4c]
MOV dword ptr [ESI + 0x24],EAX
MOV EAX,dword ptr [ESP + 0x50]
MOV dword ptr [ESI + 0x20],EBP
MOV dword ptr [ESI + 0x28],EAX
MOVZX EAX,byte ptr [ESP + 0xc]
MOV byte ptr [ESI + 0x2c],AL
MOV EAX,dword ptr [ESP + 0x58]
MOV dword ptr [ESI + 0x30],EAX
MOVZX EAX,byte ptr [ESP + 0x10]
MOV byte ptr [ESI + 0x34],AL
PUSH 0x5f
PUSH dword ptr [ESI]
CALL 0x000291d0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000eb5ee
NOP
SUB ESP,0x8
MOV byte ptr [EAX],0x2d
MOV EBX,EDI
PUSH 0x5f
PUSH EAX
CALL 0x000291d0
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x000eb5d0
MOV EAX,dword ptr [ESI + 0x24]
MOV dword ptr [ESP + 0x44],EAX
MOV EAX,dword ptr [ESP + 0x44]
TEST EAX,EAX
JZ 0x000eb5ff
CMP byte ptr [EDI + 0x61f0],0x0
JNZ 0x000eb610
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,ESI
CALL 0x000df670
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "void FUN_000eb510(int *param_1,char *param_2,int param_3,undefined1 param_4,int param_5,int param_6,\n                 int param_7,undefined1 param_8,int param_9,undefined1 param_10)\n\n{\n  char *pcVar1;\n  size_t sVar2;\n  int unaff_EDI;\n  \n  FUN_000559ee();\n  *param_1 = (int)(param_1 + 2);\n  pcVar1 = (char *)0xffffffff;\n  if (param_2 != (char *)0x0) {\n    sVar2 = strlen(param_2);\n    pcVar1 = param_2 + sVar2;\n  }\n  FUN_00050e40(param_1,param_2,pcVar1,0);\n  param_1[6] = param_3;\n  *(undefined1 *)(param_1 + 7) = param_4;\n  if (param_5 == 0) {\n    param_5 = unaff_EDI + 0x1b28ff;\n  }\n  param_1[9] = param_6;\n  param_1[8] = param_5;\n  param_1[10] = param_7;\n  *(undefined1 *)(param_1 + 0xb) = param_8;\n  param_1[0xc] = param_9;\n  *(undefined1 *)(param_1 + 0xd) = param_10;\n  pcVar1 = strchr((char *)*param_1,0x5f);\n  if (pcVar1 != (char *)0x0) {\n    do {\n      *pcVar1 = '-';\n      pcVar1 = strchr(pcVar1,0x5f);\n    } while (pcVar1 != (char *)0x0);\n    param_6 = param_1[9];\n  }\n  if ((param_6 != 0) &&\n     (*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0')) {\n                    /* try { // try from 000eb612 to 000eb616 has its CatchHandler @ 000eb61f */\n    FUN_000df670();\n    return;\n  }\n  return;\n}\n\n" (function_definition "void FUN_000eb510(int *param_1,char *param_2,int param_3,undefined1 param_4,int param_5,int param_6,\n                 int param_7,undefined1 param_8,int param_9,undefined1 param_10)\n\n{\n  char *pcVar1;\n  size_t sVar2;\n  int unaff_EDI;\n  \n  FUN_000559ee();\n  *param_1 = (int)(param_1 + 2);\n  pcVar1 = (char *)0xffffffff;\n  if (param_2 != (char *)0x0) {\n    sVar2 = strlen(param_2);\n    pcVar1 = param_2 + sVar2;\n  }\n  FUN_00050e40(param_1,param_2,pcVar1,0);\n  param_1[6] = param_3;\n  *(undefined1 *)(param_1 + 7) = param_4;\n  if (param_5 == 0) {\n    param_5 = unaff_EDI + 0x1b28ff;\n  }\n  param_1[9] = param_6;\n  param_1[8] = param_5;\n  param_1[10] = param_7;\n  *(undefined1 *)(param_1 + 0xb) = param_8;\n  param_1[0xc] = param_9;\n  *(undefined1 *)(param_1 + 0xd) = param_10;\n  pcVar1 = strchr((char *)*param_1,0x5f);\n  if (pcVar1 != (char *)0x0) {\n    do {\n      *pcVar1 = '-';\n      pcVar1 = strchr(pcVar1,0x5f);\n    } while (pcVar1 != (char *)0x0);\n    param_6 = param_1[9];\n  }\n  if ((param_6 != 0) &&\n     (*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0')) {\n                    /* try { // try from 000eb612 to 000eb616 has its CatchHandler @ 000eb61f */\n    FUN_000df670();\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_000eb510(int *param_1,char *param_2,int param_3,undefined1 param_4,int param_5,int param_6,\n                 int param_7,undefined1 param_8,int param_9,undefined1 param_10)" identifier (parameter_list "(int *param_1,char *param_2,int param_3,undefined1 param_4,int param_5,int param_6,\n                 int param_7,undefined1 param_8,int param_9,undefined1 param_10)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "undefined1 param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "int param_7" primitive_type identifier) , (parameter_declaration "undefined1 param_8" type_identifier identifier) , (parameter_declaration "int param_9" primitive_type identifier) , (parameter_declaration "undefined1 param_10" type_identifier identifier) ))) (compound_statement "{\n  char *pcVar1;\n  size_t sVar2;\n  int unaff_EDI;\n  \n  FUN_000559ee();\n  *param_1 = (int)(param_1 + 2);\n  pcVar1 = (char *)0xffffffff;\n  if (param_2 != (char *)0x0) {\n    sVar2 = strlen(param_2);\n    pcVar1 = param_2 + sVar2;\n  }\n  FUN_00050e40(param_1,param_2,pcVar1,0);\n  param_1[6] = param_3;\n  *(undefined1 *)(param_1 + 7) = param_4;\n  if (param_5 == 0) {\n    param_5 = unaff_EDI + 0x1b28ff;\n  }\n  param_1[9] = param_6;\n  param_1[8] = param_5;\n  param_1[10] = param_7;\n  *(undefined1 *)(param_1 + 0xb) = param_8;\n  param_1[0xc] = param_9;\n  *(undefined1 *)(param_1 + 0xd) = param_10;\n  pcVar1 = strchr((char *)*param_1,0x5f);\n  if (pcVar1 != (char *)0x0) {\n    do {\n      *pcVar1 = '-';\n      pcVar1 = strchr(pcVar1,0x5f);\n    } while (pcVar1 != (char *)0x0);\n    param_6 = param_1[9];\n  }\n  if ((param_6 != 0) &&\n     (*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0')) {\n                    /* try { // try from 000eb612 to 000eb616 has its CatchHandler @ 000eb61f */\n    FUN_000df670();\n    return;\n  }\n  return;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (expression_statement "FUN_000559ee();" (call_expression "FUN_000559ee()" identifier (argument_list "()" ( ))) ;) (expression_statement "*param_1 = (int)(param_1 + 2);" (assignment_expression "*param_1 = (int)(param_1 + 2)" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)(param_1 + 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) ;) (expression_statement "pcVar1 = (char *)0xffffffff;" (assignment_expression "pcVar1 = (char *)0xffffffff" identifier = (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (param_2 != (char *)0x0) {\n    sVar2 = strlen(param_2);\n    pcVar1 = param_2 + sVar2;\n  }" if (parenthesized_expression "(param_2 != (char *)0x0)" ( (binary_expression "param_2 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(param_2);\n    pcVar1 = param_2 + sVar2;\n  }" { (expression_statement "sVar2 = strlen(param_2);" (assignment_expression "sVar2 = strlen(param_2)" identifier = (call_expression "strlen(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "pcVar1 = param_2 + sVar2;" (assignment_expression "pcVar1 = param_2 + sVar2" identifier = (binary_expression "param_2 + sVar2" identifier + identifier)) ;) })) (expression_statement "FUN_00050e40(param_1,param_2,pcVar1,0);" (call_expression "FUN_00050e40(param_1,param_2,pcVar1,0)" identifier (argument_list "(param_1,param_2,pcVar1,0)" ( identifier , identifier , identifier , number_literal ))) ;) (expression_statement "param_1[6] = param_3;" (assignment_expression "param_1[6] = param_3" (subscript_expression "param_1[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + 7) = param_4;" (assignment_expression "*(undefined1 *)(param_1 + 7) = param_4" (pointer_expression "*(undefined1 *)(param_1 + 7)" * (cast_expression "(undefined1 *)(param_1 + 7)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 7)" ( (binary_expression "param_1 + 7" identifier + number_literal) )))) = identifier) ;) (if_statement "if (param_5 == 0) {\n    param_5 = unaff_EDI + 0x1b28ff;\n  }" if (parenthesized_expression "(param_5 == 0)" ( (binary_expression "param_5 == 0" identifier == number_literal) )) (compound_statement "{\n    param_5 = unaff_EDI + 0x1b28ff;\n  }" { (expression_statement "param_5 = unaff_EDI + 0x1b28ff;" (assignment_expression "param_5 = unaff_EDI + 0x1b28ff" identifier = (binary_expression "unaff_EDI + 0x1b28ff" identifier + number_literal)) ;) })) (expression_statement "param_1[9] = param_6;" (assignment_expression "param_1[9] = param_6" (subscript_expression "param_1[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[8] = param_5;" (assignment_expression "param_1[8] = param_5" (subscript_expression "param_1[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[10] = param_7;" (assignment_expression "param_1[10] = param_7" (subscript_expression "param_1[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + 0xb) = param_8;" (assignment_expression "*(undefined1 *)(param_1 + 0xb) = param_8" (pointer_expression "*(undefined1 *)(param_1 + 0xb)" * (cast_expression "(undefined1 *)(param_1 + 0xb)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1[0xc] = param_9;" (assignment_expression "param_1[0xc] = param_9" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + 0xd) = param_10;" (assignment_expression "*(undefined1 *)(param_1 + 0xd) = param_10" (pointer_expression "*(undefined1 *)(param_1 + 0xd)" * (cast_expression "(undefined1 *)(param_1 + 0xd)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd)" ( (binary_expression "param_1 + 0xd" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar1 = strchr((char *)*param_1,0x5f);" (assignment_expression "pcVar1 = strchr((char *)*param_1,0x5f)" identifier = (call_expression "strchr((char *)*param_1,0x5f)" identifier (argument_list "((char *)*param_1,0x5f)" ( (cast_expression "(char *)*param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier)) , number_literal )))) ;) (if_statement "if (pcVar1 != (char *)0x0) {\n    do {\n      *pcVar1 = '-';\n      pcVar1 = strchr(pcVar1,0x5f);\n    } while (pcVar1 != (char *)0x0);\n    param_6 = param_1[9];\n  }" if (parenthesized_expression "(pcVar1 != (char *)0x0)" ( (binary_expression "pcVar1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    do {\n      *pcVar1 = '-';\n      pcVar1 = strchr(pcVar1,0x5f);\n    } while (pcVar1 != (char *)0x0);\n    param_6 = param_1[9];\n  }" { (do_statement "do {\n      *pcVar1 = '-';\n      pcVar1 = strchr(pcVar1,0x5f);\n    } while (pcVar1 != (char *)0x0);" do (compound_statement "{\n      *pcVar1 = '-';\n      pcVar1 = strchr(pcVar1,0x5f);\n    }" { (expression_statement "*pcVar1 = '-';" (assignment_expression "*pcVar1 = '-'" (pointer_expression "*pcVar1" * identifier) = (char_literal "'-'" ' character ')) ;) (expression_statement "pcVar1 = strchr(pcVar1,0x5f);" (assignment_expression "pcVar1 = strchr(pcVar1,0x5f)" identifier = (call_expression "strchr(pcVar1,0x5f)" identifier (argument_list "(pcVar1,0x5f)" ( identifier , number_literal )))) ;) }) while (parenthesized_expression "(pcVar1 != (char *)0x0)" ( (binary_expression "pcVar1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "param_6 = param_1[9];" (assignment_expression "param_6 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) })) (if_statement "if ((param_6 != 0) &&\n     (*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0')) {\n                    /* try { // try from 000eb612 to 000eb616 has its CatchHandler @ 000eb61f */\n    FUN_000df670();\n    return;\n  }" if (parenthesized_expression "((param_6 != 0) &&\n     (*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0'))" ( (binary_expression "(param_6 != 0) &&\n     (*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0')" (parenthesized_expression "(param_6 != 0)" ( (binary_expression "param_6 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0')" ( (binary_expression "*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0'" (pointer_expression "*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1)" * (cast_expression "(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1)" ( (binary_expression "(int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1" (binary_expression "(int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI" (cast_expression "(int)&fde_table_entry_002a9cd8.initial_loc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&fde_table_entry_002a9cd8.initial_loc" & (field_expression "fde_table_entry_002a9cd8.initial_loc" identifier . field_identifier))) + identifier) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                    /* try { // try from 000eb612 to 000eb616 has its CatchHandler @ 000eb61f */\n    FUN_000df670();\n    return;\n  }" { comment (expression_statement "FUN_000df670();" (call_expression "FUN_000df670()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original prototype: void One_option(One_option * this, char * ln, Dashes d, char sn, char *\n   dv, char * hs, char * ha, bool oa, Struct_var * r, bool id) */\n\nvoid __thiscall\ngold::options::One_option::One_option\n          (One_option *this,char *ln,Dashes d,char sn,char *dv,char *hs,char *ha,bool oa,\n          Struct_var *r,bool id)\n\n{\n  char *pcVar1;\n  size_t sVar2;\n  int unaff_EDI;\n  undefined3 in_stack_00000011;\n  \n  __x86_get_pc_thunk_di();\n  (this->longname)._M_dataplus._M_p = (pointer)&(this->longname).field_2;\n  pcVar1 = (char *)0xffffffff;\n  if (ln != (char *)0x0) {\n    sVar2 = strlen(ln);\n    pcVar1 = ln + sVar2;\n  }\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&this->longname,ln,pcVar1,0);\n  this->dashes = d;\n  this->shortname = (char)_sn;\n  if (dv == (char *)0x0) {\n    dv = (char *)(unaff_EDI + 0x1b28ff);\n  }\n  this->helpstring = hs;\n  this->default_value = dv;\n  this->helparg = ha;\n  this->optional_arg = oa;\n  this->reader = r;\n  this->is_default = id;\n  pcVar1 = strchr((this->longname)._M_dataplus._M_p,0x5f);\n  if (pcVar1 != (char *)0x0) {\n    do {\n      *pcVar1 = '-';\n      pcVar1 = strchr(pcVar1,0x5f);\n    } while (pcVar1 != (char *)0x0);\n    hs = this->helpstring;\n  }\n  if ((hs != (char *)0x0) &&\n     (*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0')) {\n                    /* try { // try from 000eb612 to 000eb616 has its CatchHandler @ 000eb61f */\n    register_option(_sn);\n    return;\n  }\n  return;\n}\n\n" comment (function_definition "void __thiscall\ngold::options::One_option::One_option\n          (One_option *this,char *ln,Dashes d,char sn,char *dv,char *hs,char *ha,bool oa,\n          Struct_var *r,bool id)\n\n{\n  char *pcVar1;\n  size_t sVar2;\n  int unaff_EDI;\n  undefined3 in_stack_00000011;\n  \n  __x86_get_pc_thunk_di();\n  (this->longname)._M_dataplus._M_p = (pointer)&(this->longname).field_2;\n  pcVar1 = (char *)0xffffffff;\n  if (ln != (char *)0x0) {\n    sVar2 = strlen(ln);\n    pcVar1 = ln + sVar2;\n  }\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&this->longname,ln,pcVar1,0);\n  this->dashes = d;\n  this->shortname = (char)_sn;\n  if (dv == (char *)0x0) {\n    dv = (char *)(unaff_EDI + 0x1b28ff);\n  }\n  this->helpstring = hs;\n  this->default_value = dv;\n  this->helparg = ha;\n  this->optional_arg = oa;\n  this->reader = r;\n  this->is_default = id;\n  pcVar1 = strchr((this->longname)._M_dataplus._M_p,0x5f);\n  if (pcVar1 != (char *)0x0) {\n    do {\n      *pcVar1 = '-';\n      pcVar1 = strchr(pcVar1,0x5f);\n    } while (pcVar1 != (char *)0x0);\n    hs = this->helpstring;\n  }\n  if ((hs != (char *)0x0) &&\n     (*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0')) {\n                    /* try { // try from 000eb612 to 000eb616 has its CatchHandler @ 000eb61f */\n    register_option(_sn);\n    return;\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::options::One_option::" identifier : : identifier : : identifier : :) (function_declarator "One_option\n          (One_option *this,char *ln,Dashes d,char sn,char *dv,char *hs,char *ha,bool oa,\n          Struct_var *r,bool id)" identifier (parameter_list "(One_option *this,char *ln,Dashes d,char sn,char *dv,char *hs,char *ha,bool oa,\n          Struct_var *r,bool id)" ( (parameter_declaration "One_option *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "char *ln" primitive_type (pointer_declarator "*ln" * identifier)) , (parameter_declaration "Dashes d" type_identifier identifier) , (parameter_declaration "char sn" primitive_type identifier) , (parameter_declaration "char *dv" primitive_type (pointer_declarator "*dv" * identifier)) , (parameter_declaration "char *hs" primitive_type (pointer_declarator "*hs" * identifier)) , (parameter_declaration "char *ha" primitive_type (pointer_declarator "*ha" * identifier)) , (parameter_declaration "bool oa" primitive_type identifier) , (parameter_declaration "Struct_var *r" type_identifier (pointer_declarator "*r" * identifier)) , (parameter_declaration "bool id" primitive_type identifier) ))) (compound_statement "{\n  char *pcVar1;\n  size_t sVar2;\n  int unaff_EDI;\n  undefined3 in_stack_00000011;\n  \n  __x86_get_pc_thunk_di();\n  (this->longname)._M_dataplus._M_p = (pointer)&(this->longname).field_2;\n  pcVar1 = (char *)0xffffffff;\n  if (ln != (char *)0x0) {\n    sVar2 = strlen(ln);\n    pcVar1 = ln + sVar2;\n  }\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&this->longname,ln,pcVar1,0);\n  this->dashes = d;\n  this->shortname = (char)_sn;\n  if (dv == (char *)0x0) {\n    dv = (char *)(unaff_EDI + 0x1b28ff);\n  }\n  this->helpstring = hs;\n  this->default_value = dv;\n  this->helparg = ha;\n  this->optional_arg = oa;\n  this->reader = r;\n  this->is_default = id;\n  pcVar1 = strchr((this->longname)._M_dataplus._M_p,0x5f);\n  if (pcVar1 != (char *)0x0) {\n    do {\n      *pcVar1 = '-';\n      pcVar1 = strchr(pcVar1,0x5f);\n    } while (pcVar1 != (char *)0x0);\n    hs = this->helpstring;\n  }\n  if ((hs != (char *)0x0) &&\n     (*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0')) {\n                    /* try { // try from 000eb612 to 000eb616 has its CatchHandler @ 000eb61f */\n    register_option(_sn);\n    return;\n  }\n  return;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined3 in_stack_00000011;" type_identifier identifier ;) (expression_statement "__x86_get_pc_thunk_di();" (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( ))) ;) (expression_statement "(this->longname)._M_dataplus._M_p = (pointer)&(this->longname).field_2;" (assignment_expression "(this->longname)._M_dataplus._M_p = (pointer)&(this->longname).field_2" (field_expression "(this->longname)._M_dataplus._M_p" (field_expression "(this->longname)._M_dataplus" (parenthesized_expression "(this->longname)" ( (field_expression "this->longname" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (binary_expression "(pointer)&(this->longname).field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "(this->longname).field_2" (parenthesized_expression "(this->longname)" ( (field_expression "this->longname" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "pcVar1 = (char *)0xffffffff;" (assignment_expression "pcVar1 = (char *)0xffffffff" identifier = (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (ln != (char *)0x0) {\n    sVar2 = strlen(ln);\n    pcVar1 = ln + sVar2;\n  }" if (parenthesized_expression "(ln != (char *)0x0)" ( (binary_expression "ln != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(ln);\n    pcVar1 = ln + sVar2;\n  }" { (expression_statement "sVar2 = strlen(ln);" (assignment_expression "sVar2 = strlen(ln)" identifier = (call_expression "strlen(ln)" identifier (argument_list "(ln)" ( identifier )))) ;) (expression_statement "pcVar1 = ln + sVar2;" (assignment_expression "pcVar1 = ln + sVar2" identifier = (binary_expression "ln + sVar2" identifier + identifier)) ;) })) (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&this->longname,ln,pcVar1,0);" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char_const*>(&this->longname,ln,pcVar1,0);" (binary_expression "_M_construct<char_const*>(&this->longname,ln,pcVar1,0)" (binary_expression "_M_construct<char_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&this->longname,ln,pcVar1,0)" ( (comma_expression "&this->longname,ln,pcVar1,0" (pointer_expression "&this->longname" & (field_expression "this->longname" identifier -> field_identifier)) , (comma_expression "ln,pcVar1,0" identifier , (comma_expression "pcVar1,0" identifier , number_literal))) ))) ;)) (expression_statement "this->dashes = d;" (assignment_expression "this->dashes = d" (field_expression "this->dashes" identifier -> field_identifier) = identifier) ;) (expression_statement "this->shortname = (char)_sn;" (assignment_expression "this->shortname = (char)_sn" (field_expression "this->shortname" identifier -> field_identifier) = (cast_expression "(char)_sn" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if (dv == (char *)0x0) {\n    dv = (char *)(unaff_EDI + 0x1b28ff);\n  }" if (parenthesized_expression "(dv == (char *)0x0)" ( (binary_expression "dv == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    dv = (char *)(unaff_EDI + 0x1b28ff);\n  }" { (expression_statement "dv = (char *)(unaff_EDI + 0x1b28ff);" (assignment_expression "dv = (char *)(unaff_EDI + 0x1b28ff)" identifier = (cast_expression "(char *)(unaff_EDI + 0x1b28ff)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1b28ff)" ( (binary_expression "unaff_EDI + 0x1b28ff" identifier + number_literal) )))) ;) })) (expression_statement "this->helpstring = hs;" (assignment_expression "this->helpstring = hs" (field_expression "this->helpstring" identifier -> field_identifier) = identifier) ;) (expression_statement "this->default_value = dv;" (assignment_expression "this->default_value = dv" (field_expression "this->default_value" identifier -> field_identifier) = identifier) ;) (expression_statement "this->helparg = ha;" (assignment_expression "this->helparg = ha" (field_expression "this->helparg" identifier -> field_identifier) = identifier) ;) (expression_statement "this->optional_arg = oa;" (assignment_expression "this->optional_arg = oa" (field_expression "this->optional_arg" identifier -> field_identifier) = identifier) ;) (expression_statement "this->reader = r;" (assignment_expression "this->reader = r" (field_expression "this->reader" identifier -> field_identifier) = identifier) ;) (expression_statement "this->is_default = id;" (assignment_expression "this->is_default = id" (field_expression "this->is_default" identifier -> field_identifier) = identifier) ;) (expression_statement "pcVar1 = strchr((this->longname)._M_dataplus._M_p,0x5f);" (assignment_expression "pcVar1 = strchr((this->longname)._M_dataplus._M_p,0x5f)" identifier = (call_expression "strchr((this->longname)._M_dataplus._M_p,0x5f)" identifier (argument_list "((this->longname)._M_dataplus._M_p,0x5f)" ( (field_expression "(this->longname)._M_dataplus._M_p" (field_expression "(this->longname)._M_dataplus" (parenthesized_expression "(this->longname)" ( (field_expression "this->longname" identifier -> field_identifier) )) . field_identifier) . field_identifier) , number_literal )))) ;) (if_statement "if (pcVar1 != (char *)0x0) {\n    do {\n      *pcVar1 = '-';\n      pcVar1 = strchr(pcVar1,0x5f);\n    } while (pcVar1 != (char *)0x0);\n    hs = this->helpstring;\n  }" if (parenthesized_expression "(pcVar1 != (char *)0x0)" ( (binary_expression "pcVar1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    do {\n      *pcVar1 = '-';\n      pcVar1 = strchr(pcVar1,0x5f);\n    } while (pcVar1 != (char *)0x0);\n    hs = this->helpstring;\n  }" { (do_statement "do {\n      *pcVar1 = '-';\n      pcVar1 = strchr(pcVar1,0x5f);\n    } while (pcVar1 != (char *)0x0);" do (compound_statement "{\n      *pcVar1 = '-';\n      pcVar1 = strchr(pcVar1,0x5f);\n    }" { (expression_statement "*pcVar1 = '-';" (assignment_expression "*pcVar1 = '-'" (pointer_expression "*pcVar1" * identifier) = (char_literal "'-'" ' character ')) ;) (expression_statement "pcVar1 = strchr(pcVar1,0x5f);" (assignment_expression "pcVar1 = strchr(pcVar1,0x5f)" identifier = (call_expression "strchr(pcVar1,0x5f)" identifier (argument_list "(pcVar1,0x5f)" ( identifier , number_literal )))) ;) }) while (parenthesized_expression "(pcVar1 != (char *)0x0)" ( (binary_expression "pcVar1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "hs = this->helpstring;" (assignment_expression "hs = this->helpstring" identifier = (field_expression "this->helpstring" identifier -> field_identifier)) ;) })) (if_statement "if ((hs != (char *)0x0) &&\n     (*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0')) {\n                    /* try { // try from 000eb612 to 000eb616 has its CatchHandler @ 000eb61f */\n    register_option(_sn);\n    return;\n  }" if (parenthesized_expression "((hs != (char *)0x0) &&\n     (*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0'))" ( (binary_expression "(hs != (char *)0x0) &&\n     (*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0')" (parenthesized_expression "(hs != (char *)0x0)" ( (binary_expression "hs != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0')" ( (binary_expression "*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0'" (pointer_expression "*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1)" * (cast_expression "(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1)" ( (binary_expression "(int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1" (binary_expression "(int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI" (cast_expression "(int)&fde_table_entry_002a9cd8.initial_loc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&fde_table_entry_002a9cd8.initial_loc" & (field_expression "fde_table_entry_002a9cd8.initial_loc" identifier . field_identifier))) + identifier) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                    /* try { // try from 000eb612 to 000eb616 has its CatchHandler @ 000eb61f */\n    register_option(_sn);\n    return;\n  }" { comment (expression_statement "register_option(_sn);" (call_expression "register_option(_sn)" identifier (argument_list "(_sn)" ( identifier ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_000eb510(int *param_1,char *param_2,int param_3,undefined1 param_4,int param_5,int param_6,\n                 int param_7,undefined1 param_8,int param_9,undefined1 param_10)\n\n{\n  char *pcVar1;\n  size_t sVar2;\n  int unaff_EDI;\n  \n  FUN_000559ee();\n  *param_1 = (int)(param_1 + 2);\n  pcVar1 = (char *)0xffffffff;\n  if (param_2 != (char *)0x0) {\n    sVar2 = strlen(param_2);\n    pcVar1 = param_2 + sVar2;\n  }\n  FUN_00050e40(param_1,param_2,pcVar1,0);\n  param_1[6] = param_3;\n  *(undefined1 *)(param_1 + 7) = param_4;\n  if (param_5 == 0) {\n    param_5 = unaff_EDI + 0x1b28ff;\n  }\n  param_1[9] = param_6;\n  param_1[8] = param_5;\n  param_1[10] = param_7;\n  *(undefined1 *)(param_1 + 0xb) = param_8;\n  param_1[0xc] = param_9;\n  *(undefined1 *)(param_1 + 0xd) = param_10;\n  pcVar1 = strchr((char *)*param_1,0x5f);\n  if (pcVar1 != (char *)0x0) {\n    do {\n      *pcVar1 = '-';\n      pcVar1 = strchr(pcVar1,0x5f);\n    } while (pcVar1 != (char *)0x0);\n    param_6 = param_1[9];\n  }\n  if ((param_6 != 0) &&\n     (*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0')) {\n                    \n    FUN_000df670();\n    return;\n  }\n  return;\n}\n\n" (function_definition "void FUN_000eb510(int *param_1,char *param_2,int param_3,undefined1 param_4,int param_5,int param_6,\n                 int param_7,undefined1 param_8,int param_9,undefined1 param_10)\n\n{\n  char *pcVar1;\n  size_t sVar2;\n  int unaff_EDI;\n  \n  FUN_000559ee();\n  *param_1 = (int)(param_1 + 2);\n  pcVar1 = (char *)0xffffffff;\n  if (param_2 != (char *)0x0) {\n    sVar2 = strlen(param_2);\n    pcVar1 = param_2 + sVar2;\n  }\n  FUN_00050e40(param_1,param_2,pcVar1,0);\n  param_1[6] = param_3;\n  *(undefined1 *)(param_1 + 7) = param_4;\n  if (param_5 == 0) {\n    param_5 = unaff_EDI + 0x1b28ff;\n  }\n  param_1[9] = param_6;\n  param_1[8] = param_5;\n  param_1[10] = param_7;\n  *(undefined1 *)(param_1 + 0xb) = param_8;\n  param_1[0xc] = param_9;\n  *(undefined1 *)(param_1 + 0xd) = param_10;\n  pcVar1 = strchr((char *)*param_1,0x5f);\n  if (pcVar1 != (char *)0x0) {\n    do {\n      *pcVar1 = '-';\n      pcVar1 = strchr(pcVar1,0x5f);\n    } while (pcVar1 != (char *)0x0);\n    param_6 = param_1[9];\n  }\n  if ((param_6 != 0) &&\n     (*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0')) {\n                    \n    FUN_000df670();\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_000eb510(int *param_1,char *param_2,int param_3,undefined1 param_4,int param_5,int param_6,\n                 int param_7,undefined1 param_8,int param_9,undefined1 param_10)" identifier (parameter_list "(int *param_1,char *param_2,int param_3,undefined1 param_4,int param_5,int param_6,\n                 int param_7,undefined1 param_8,int param_9,undefined1 param_10)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "undefined1 param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "int param_7" primitive_type identifier) , (parameter_declaration "undefined1 param_8" type_identifier identifier) , (parameter_declaration "int param_9" primitive_type identifier) , (parameter_declaration "undefined1 param_10" type_identifier identifier) ))) (compound_statement "{\n  char *pcVar1;\n  size_t sVar2;\n  int unaff_EDI;\n  \n  FUN_000559ee();\n  *param_1 = (int)(param_1 + 2);\n  pcVar1 = (char *)0xffffffff;\n  if (param_2 != (char *)0x0) {\n    sVar2 = strlen(param_2);\n    pcVar1 = param_2 + sVar2;\n  }\n  FUN_00050e40(param_1,param_2,pcVar1,0);\n  param_1[6] = param_3;\n  *(undefined1 *)(param_1 + 7) = param_4;\n  if (param_5 == 0) {\n    param_5 = unaff_EDI + 0x1b28ff;\n  }\n  param_1[9] = param_6;\n  param_1[8] = param_5;\n  param_1[10] = param_7;\n  *(undefined1 *)(param_1 + 0xb) = param_8;\n  param_1[0xc] = param_9;\n  *(undefined1 *)(param_1 + 0xd) = param_10;\n  pcVar1 = strchr((char *)*param_1,0x5f);\n  if (pcVar1 != (char *)0x0) {\n    do {\n      *pcVar1 = '-';\n      pcVar1 = strchr(pcVar1,0x5f);\n    } while (pcVar1 != (char *)0x0);\n    param_6 = param_1[9];\n  }\n  if ((param_6 != 0) &&\n     (*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0')) {\n                    \n    FUN_000df670();\n    return;\n  }\n  return;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (expression_statement "FUN_000559ee();" (call_expression "FUN_000559ee()" identifier (argument_list "()" ( ))) ;) (expression_statement "*param_1 = (int)(param_1 + 2);" (assignment_expression "*param_1 = (int)(param_1 + 2)" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)(param_1 + 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) ;) (expression_statement "pcVar1 = (char *)0xffffffff;" (assignment_expression "pcVar1 = (char *)0xffffffff" identifier = (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (param_2 != (char *)0x0) {\n    sVar2 = strlen(param_2);\n    pcVar1 = param_2 + sVar2;\n  }" if (parenthesized_expression "(param_2 != (char *)0x0)" ( (binary_expression "param_2 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(param_2);\n    pcVar1 = param_2 + sVar2;\n  }" { (expression_statement "sVar2 = strlen(param_2);" (assignment_expression "sVar2 = strlen(param_2)" identifier = (call_expression "strlen(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "pcVar1 = param_2 + sVar2;" (assignment_expression "pcVar1 = param_2 + sVar2" identifier = (binary_expression "param_2 + sVar2" identifier + identifier)) ;) })) (expression_statement "FUN_00050e40(param_1,param_2,pcVar1,0);" (call_expression "FUN_00050e40(param_1,param_2,pcVar1,0)" identifier (argument_list "(param_1,param_2,pcVar1,0)" ( identifier , identifier , identifier , number_literal ))) ;) (expression_statement "param_1[6] = param_3;" (assignment_expression "param_1[6] = param_3" (subscript_expression "param_1[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + 7) = param_4;" (assignment_expression "*(undefined1 *)(param_1 + 7) = param_4" (pointer_expression "*(undefined1 *)(param_1 + 7)" * (cast_expression "(undefined1 *)(param_1 + 7)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 7)" ( (binary_expression "param_1 + 7" identifier + number_literal) )))) = identifier) ;) (if_statement "if (param_5 == 0) {\n    param_5 = unaff_EDI + 0x1b28ff;\n  }" if (parenthesized_expression "(param_5 == 0)" ( (binary_expression "param_5 == 0" identifier == number_literal) )) (compound_statement "{\n    param_5 = unaff_EDI + 0x1b28ff;\n  }" { (expression_statement "param_5 = unaff_EDI + 0x1b28ff;" (assignment_expression "param_5 = unaff_EDI + 0x1b28ff" identifier = (binary_expression "unaff_EDI + 0x1b28ff" identifier + number_literal)) ;) })) (expression_statement "param_1[9] = param_6;" (assignment_expression "param_1[9] = param_6" (subscript_expression "param_1[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[8] = param_5;" (assignment_expression "param_1[8] = param_5" (subscript_expression "param_1[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[10] = param_7;" (assignment_expression "param_1[10] = param_7" (subscript_expression "param_1[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + 0xb) = param_8;" (assignment_expression "*(undefined1 *)(param_1 + 0xb) = param_8" (pointer_expression "*(undefined1 *)(param_1 + 0xb)" * (cast_expression "(undefined1 *)(param_1 + 0xb)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1[0xc] = param_9;" (assignment_expression "param_1[0xc] = param_9" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + 0xd) = param_10;" (assignment_expression "*(undefined1 *)(param_1 + 0xd) = param_10" (pointer_expression "*(undefined1 *)(param_1 + 0xd)" * (cast_expression "(undefined1 *)(param_1 + 0xd)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd)" ( (binary_expression "param_1 + 0xd" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar1 = strchr((char *)*param_1,0x5f);" (assignment_expression "pcVar1 = strchr((char *)*param_1,0x5f)" identifier = (call_expression "strchr((char *)*param_1,0x5f)" identifier (argument_list "((char *)*param_1,0x5f)" ( (cast_expression "(char *)*param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier)) , number_literal )))) ;) (if_statement "if (pcVar1 != (char *)0x0) {\n    do {\n      *pcVar1 = '-';\n      pcVar1 = strchr(pcVar1,0x5f);\n    } while (pcVar1 != (char *)0x0);\n    param_6 = param_1[9];\n  }" if (parenthesized_expression "(pcVar1 != (char *)0x0)" ( (binary_expression "pcVar1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    do {\n      *pcVar1 = '-';\n      pcVar1 = strchr(pcVar1,0x5f);\n    } while (pcVar1 != (char *)0x0);\n    param_6 = param_1[9];\n  }" { (do_statement "do {\n      *pcVar1 = '-';\n      pcVar1 = strchr(pcVar1,0x5f);\n    } while (pcVar1 != (char *)0x0);" do (compound_statement "{\n      *pcVar1 = '-';\n      pcVar1 = strchr(pcVar1,0x5f);\n    }" { (expression_statement "*pcVar1 = '-';" (assignment_expression "*pcVar1 = '-'" (pointer_expression "*pcVar1" * identifier) = (char_literal "'-'" ' character ')) ;) (expression_statement "pcVar1 = strchr(pcVar1,0x5f);" (assignment_expression "pcVar1 = strchr(pcVar1,0x5f)" identifier = (call_expression "strchr(pcVar1,0x5f)" identifier (argument_list "(pcVar1,0x5f)" ( identifier , number_literal )))) ;) }) while (parenthesized_expression "(pcVar1 != (char *)0x0)" ( (binary_expression "pcVar1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "param_6 = param_1[9];" (assignment_expression "param_6 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) })) (if_statement "if ((param_6 != 0) &&\n     (*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0')) {\n                    \n    FUN_000df670();\n    return;\n  }" if (parenthesized_expression "((param_6 != 0) &&\n     (*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0'))" ( (binary_expression "(param_6 != 0) &&\n     (*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0')" (parenthesized_expression "(param_6 != 0)" ( (binary_expression "param_6 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0')" ( (binary_expression "*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0'" (pointer_expression "*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1)" * (cast_expression "(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1)" ( (binary_expression "(int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1" (binary_expression "(int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI" (cast_expression "(int)&fde_table_entry_002a9cd8.initial_loc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&fde_table_entry_002a9cd8.initial_loc" & (field_expression "fde_table_entry_002a9cd8.initial_loc" identifier . field_identifier))) + identifier) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                    \n    FUN_000df670();\n    return;\n  }" { (expression_statement "FUN_000df670();" (call_expression "FUN_000df670()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) , LIT )))) ;) (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 (pointer_expression * IDENT) = (char_literal ' character ')) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression & (field_expression IDENT . field_identifier))) + IDENT) + LIT) )))) != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return ;) })) (return_statement return ;) })))
(function_definition "void FUN_000eb510(int *param_1,char *param_2,int param_3,undefined1 param_4,int param_5,int param_6,\n                 int param_7,undefined1 param_8,int param_9,undefined1 param_10)\n\n{\n  char *pcVar1;\n  size_t sVar2;\n  int unaff_EDI;\n  \n  FUN_000559ee();\n  *param_1 = (int)(param_1 + 2);\n  pcVar1 = (char *)0xffffffff;\n  if (param_2 != (char *)0x0) {\n    sVar2 = strlen(param_2);\n    pcVar1 = param_2 + sVar2;\n  }\n  FUN_00050e40(param_1,param_2,pcVar1,0);\n  param_1[6] = param_3;\n  *(undefined1 *)(param_1 + 7) = param_4;\n  if (param_5 == 0) {\n    param_5 = unaff_EDI + 0x1b28ff;\n  }\n  param_1[9] = param_6;\n  param_1[8] = param_5;\n  param_1[10] = param_7;\n  *(undefined1 *)(param_1 + 0xb) = param_8;\n  param_1[0xc] = param_9;\n  *(undefined1 *)(param_1 + 0xd) = param_10;\n  pcVar1 = strchr((char *)*param_1,0x5f);\n  if (pcVar1 != (char *)0x0) {\n    do {\n      *pcVar1 = '-';\n      pcVar1 = strchr(pcVar1,0x5f);\n    } while (pcVar1 != (char *)0x0);\n    param_6 = param_1[9];\n  }\n  if ((param_6 != 0) &&\n     (*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0')) {\n                    \n    FUN_000df670();\n    return;\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_000eb510(int *param_1,char *param_2,int param_3,undefined1 param_4,int param_5,int param_6,\n                 int param_7,undefined1 param_8,int param_9,undefined1 param_10)" (identifier "FUN_000eb510") (parameter_list "(int *param_1,char *param_2,int param_3,undefined1 param_4,int param_5,int param_6,\n                 int param_7,undefined1 param_8,int param_9,undefined1 param_10)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "char *param_2" (primitive_type "char") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "undefined1 param_4" (type_identifier "undefined1") (identifier "param_4")) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) (, ",") (parameter_declaration "int param_6" (primitive_type "int") (identifier "param_6")) (, ",") (parameter_declaration "int param_7" (primitive_type "int") (identifier "param_7")) (, ",") (parameter_declaration "undefined1 param_8" (type_identifier "undefined1") (identifier "param_8")) (, ",") (parameter_declaration "int param_9" (primitive_type "int") (identifier "param_9")) (, ",") (parameter_declaration "undefined1 param_10" (type_identifier "undefined1") (identifier "param_10")) () ")"))) (compound_statement "{\n  char *pcVar1;\n  size_t sVar2;\n  int unaff_EDI;\n  \n  FUN_000559ee();\n  *param_1 = (int)(param_1 + 2);\n  pcVar1 = (char *)0xffffffff;\n  if (param_2 != (char *)0x0) {\n    sVar2 = strlen(param_2);\n    pcVar1 = param_2 + sVar2;\n  }\n  FUN_00050e40(param_1,param_2,pcVar1,0);\n  param_1[6] = param_3;\n  *(undefined1 *)(param_1 + 7) = param_4;\n  if (param_5 == 0) {\n    param_5 = unaff_EDI + 0x1b28ff;\n  }\n  param_1[9] = param_6;\n  param_1[8] = param_5;\n  param_1[10] = param_7;\n  *(undefined1 *)(param_1 + 0xb) = param_8;\n  param_1[0xc] = param_9;\n  *(undefined1 *)(param_1 + 0xd) = param_10;\n  pcVar1 = strchr((char *)*param_1,0x5f);\n  if (pcVar1 != (char *)0x0) {\n    do {\n      *pcVar1 = '-';\n      pcVar1 = strchr(pcVar1,0x5f);\n    } while (pcVar1 != (char *)0x0);\n    param_6 = param_1[9];\n  }\n  if ((param_6 != 0) &&\n     (*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0')) {\n                    \n    FUN_000df670();\n    return;\n  }\n  return;\n}" ({ "{") (declaration "char *pcVar1;" (primitive_type "char") (pointer_declarator "*pcVar1" (* "*") (identifier "pcVar1")) (; ";")) (declaration "size_t sVar2;" (primitive_type "size_t") (identifier "sVar2") (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (expression_statement "FUN_000559ee();" (call_expression "FUN_000559ee()" (identifier "FUN_000559ee") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*param_1 = (int)(param_1 + 2);" (assignment_expression "*param_1 = (int)(param_1 + 2)" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(int)(param_1 + 2)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (; ";")) (expression_statement "pcVar1 = (char *)0xffffffff;" (assignment_expression "pcVar1 = (char *)0xffffffff" (identifier "pcVar1") (= "=") (cast_expression "(char *)0xffffffff" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (if_statement "if (param_2 != (char *)0x0) {\n    sVar2 = strlen(param_2);\n    pcVar1 = param_2 + sVar2;\n  }" (if "if") (parenthesized_expression "(param_2 != (char *)0x0)" (( "(") (binary_expression "param_2 != (char *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    sVar2 = strlen(param_2);\n    pcVar1 = param_2 + sVar2;\n  }" ({ "{") (expression_statement "sVar2 = strlen(param_2);" (assignment_expression "sVar2 = strlen(param_2)" (identifier "sVar2") (= "=") (call_expression "strlen(param_2)" (identifier "strlen") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "pcVar1 = param_2 + sVar2;" (assignment_expression "pcVar1 = param_2 + sVar2" (identifier "pcVar1") (= "=") (binary_expression "param_2 + sVar2" (identifier "param_2") (+ "+") (identifier "sVar2"))) (; ";")) (} "}"))) (expression_statement "FUN_00050e40(param_1,param_2,pcVar1,0);" (call_expression "FUN_00050e40(param_1,param_2,pcVar1,0)" (identifier "FUN_00050e40") (argument_list "(param_1,param_2,pcVar1,0)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "pcVar1") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "param_1[6] = param_3;" (assignment_expression "param_1[6] = param_3" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "param_3")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 7) = param_4;" (assignment_expression "*(undefined1 *)(param_1 + 7) = param_4" (pointer_expression "*(undefined1 *)(param_1 + 7)" (* "*") (cast_expression "(undefined1 *)(param_1 + 7)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 7)" (( "(") (binary_expression "param_1 + 7" (identifier "param_1") (+ "+") (number_literal "7")) () ")")))) (= "=") (identifier "param_4")) (; ";")) (if_statement "if (param_5 == 0) {\n    param_5 = unaff_EDI + 0x1b28ff;\n  }" (if "if") (parenthesized_expression "(param_5 == 0)" (( "(") (binary_expression "param_5 == 0" (identifier "param_5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    param_5 = unaff_EDI + 0x1b28ff;\n  }" ({ "{") (expression_statement "param_5 = unaff_EDI + 0x1b28ff;" (assignment_expression "param_5 = unaff_EDI + 0x1b28ff" (identifier "param_5") (= "=") (binary_expression "unaff_EDI + 0x1b28ff" (identifier "unaff_EDI") (+ "+") (number_literal "0x1b28ff"))) (; ";")) (} "}"))) (expression_statement "param_1[9] = param_6;" (assignment_expression "param_1[9] = param_6" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "param_6")) (; ";")) (expression_statement "param_1[8] = param_5;" (assignment_expression "param_1[8] = param_5" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "param_5")) (; ";")) (expression_statement "param_1[10] = param_7;" (assignment_expression "param_1[10] = param_7" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "param_7")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0xb) = param_8;" (assignment_expression "*(undefined1 *)(param_1 + 0xb) = param_8" (pointer_expression "*(undefined1 *)(param_1 + 0xb)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0xb)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb)" (( "(") (binary_expression "param_1 + 0xb" (identifier "param_1") (+ "+") (number_literal "0xb")) () ")")))) (= "=") (identifier "param_8")) (; ";")) (expression_statement "param_1[0xc] = param_9;" (assignment_expression "param_1[0xc] = param_9" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "param_9")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0xd) = param_10;" (assignment_expression "*(undefined1 *)(param_1 + 0xd) = param_10" (pointer_expression "*(undefined1 *)(param_1 + 0xd)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0xd)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd)" (( "(") (binary_expression "param_1 + 0xd" (identifier "param_1") (+ "+") (number_literal "0xd")) () ")")))) (= "=") (identifier "param_10")) (; ";")) (expression_statement "pcVar1 = strchr((char *)*param_1,0x5f);" (assignment_expression "pcVar1 = strchr((char *)*param_1,0x5f)" (identifier "pcVar1") (= "=") (call_expression "strchr((char *)*param_1,0x5f)" (identifier "strchr") (argument_list "((char *)*param_1,0x5f)" (( "(") (cast_expression "(char *)*param_1" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (, ",") (number_literal "0x5f") () ")")))) (; ";")) (if_statement "if (pcVar1 != (char *)0x0) {\n    do {\n      *pcVar1 = '-';\n      pcVar1 = strchr(pcVar1,0x5f);\n    } while (pcVar1 != (char *)0x0);\n    param_6 = param_1[9];\n  }" (if "if") (parenthesized_expression "(pcVar1 != (char *)0x0)" (( "(") (binary_expression "pcVar1 != (char *)0x0" (identifier "pcVar1") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    do {\n      *pcVar1 = '-';\n      pcVar1 = strchr(pcVar1,0x5f);\n    } while (pcVar1 != (char *)0x0);\n    param_6 = param_1[9];\n  }" ({ "{") (do_statement "do {\n      *pcVar1 = '-';\n      pcVar1 = strchr(pcVar1,0x5f);\n    } while (pcVar1 != (char *)0x0);" (do "do") (compound_statement "{\n      *pcVar1 = '-';\n      pcVar1 = strchr(pcVar1,0x5f);\n    }" ({ "{") (expression_statement "*pcVar1 = '-';" (assignment_expression "*pcVar1 = '-'" (pointer_expression "*pcVar1" (* "*") (identifier "pcVar1")) (= "=") (char_literal "'-'" (' "'") (character "-") (' "'"))) (; ";")) (expression_statement "pcVar1 = strchr(pcVar1,0x5f);" (assignment_expression "pcVar1 = strchr(pcVar1,0x5f)" (identifier "pcVar1") (= "=") (call_expression "strchr(pcVar1,0x5f)" (identifier "strchr") (argument_list "(pcVar1,0x5f)" (( "(") (identifier "pcVar1") (, ",") (number_literal "0x5f") () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pcVar1 != (char *)0x0)" (( "(") (binary_expression "pcVar1 != (char *)0x0" (identifier "pcVar1") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "param_6 = param_1[9];" (assignment_expression "param_6 = param_1[9]" (identifier "param_6") (= "=") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (; ";")) (} "}"))) (if_statement "if ((param_6 != 0) &&\n     (*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0')) {\n                    \n    FUN_000df670();\n    return;\n  }" (if "if") (parenthesized_expression "((param_6 != 0) &&\n     (*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0'))" (( "(") (binary_expression "(param_6 != 0) &&\n     (*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0')" (parenthesized_expression "(param_6 != 0)" (( "(") (binary_expression "param_6 != 0" (identifier "param_6") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0')" (( "(") (binary_expression "*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0'" (pointer_expression "*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1)" (* "*") (cast_expression "(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1)" (( "(") (binary_expression "(int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1" (binary_expression "(int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI" (cast_expression "(int)&fde_table_entry_002a9cd8.initial_loc" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "&fde_table_entry_002a9cd8.initial_loc" (& "&") (field_expression "fde_table_entry_002a9cd8.initial_loc" (identifier "fde_table_entry_002a9cd8") (. ".") (field_identifier "initial_loc")))) (+ "+") (identifier "unaff_EDI")) (+ "+") (number_literal "1")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n                    \n    FUN_000df670();\n    return;\n  }" ({ "{") (expression_statement "FUN_000df670();" (call_expression "FUN_000df670()" (identifier "FUN_000df670") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original prototype: void One_option(One_option * this, char * ln, Dashes d, char sn, char *
   dv, char * hs, char * ha, bool oa, Struct_var * r, bool id) */

void __thiscall
gold::options::function_1::function_1
          (function_1 *this,char *var_2,type_1 d,char sn,char *var_7,char *var_11,char *ha,bool oa,
          type_2 *r,bool id)

{
  char *var_10;
  size_t var_4;
  int var_8;
  type_3 in_stack_00000011;
  
  var_1();
  (this->longname)._M_dataplus._M_p = (pointer)&(this->longname).field_2;
  var_10 = (char *)0xffffffff;
  if (var_2 != (char *)0x0) {
    var_4 = var_3(var_2);
    var_10 = var_2 + var_4;
  }
  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
  var_5<var_6*>(&this->longname,var_2,var_10,0);
  this->dashes = d;
  this->shortname = (char)_sn;
  if (var_7 == (char *)0x0) {
    var_7 = (char *)(var_8 + 0x1b28ff);
  }
  this->helpstring = var_11;
  this->default_value = var_7;
  this->helparg = ha;
  this->optional_arg = oa;
  this->reader = r;
  this->is_default = id;
  var_10 = var_9((this->longname)._M_dataplus._M_p,0x5f);
  if (var_10 != (char *)0x0) {
    do {
      *var_10 = '-';
      var_10 = var_9(var_10,0x5f);
    } while (var_10 != (char *)0x0);
    var_11 = this->helpstring;
  }
  if ((var_11 != (char *)0x0) &&
     (*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + var_8 + 1) != '\0')) {
                    /* try { // try from 000eb612 to 000eb616 has its CatchHandler @ 000eb61f */
    var_12(_sn);
    return;
  }
  return;
}


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

void MASKED(int *param_1,char *param_2,int param_3,undefined1 param_4,int param_5,int param_6,
                 int param_7,undefined1 param_8,int param_9,undefined1 param_10)

{
  char *pcVar1;
  size_t sVar2;
  int unaff_EDI;
  
  FUN_000559ee();
  *param_1 = (int)(param_1 + 2);
  pcVar1 = (char *)0xffffffff;
  if (param_2 != (char *)0x0) {
    sVar2 = strlen(param_2);
    pcVar1 = param_2 + sVar2;
  }
  FUN_00050e40(param_1,param_2,pcVar1,0);
  param_1[6] = param_3;
  *(undefined1 *)(param_1 + 7) = param_4;
  if (param_5 == 0) {
    param_5 = unaff_EDI + 0x1b28ff;
  }
  param_1[9] = param_6;
  param_1[8] = param_5;
  param_1[10] = param_7;
  *(undefined1 *)(param_1 + 0xb) = param_8;
  param_1[0xc] = param_9;
  *(undefined1 *)(param_1 + 0xd) = param_10;
  pcVar1 = strchr((char *)*param_1,0x5f);
  if (pcVar1 != (char *)0x0) {
    do {
      *pcVar1 = '-';
      pcVar1 = strchr(pcVar1,0x5f);
    } while (pcVar1 != (char *)0x0);
    param_6 = param_1[9];
  }
  if ((param_6 != 0) &&
     (*(char *)((int)&fde_table_entry_002a9cd8.initial_loc + unaff_EDI + 1) != '\0')) {
                    /* try { // try from 000eb612 to 000eb616 has its CatchHandler @ 000eb61f */
    FUN_000df670();
    return;
  }
  return;
}

