
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* std::ctype<char>::widen(char const*, char const*, char*) const */

char * __thiscall
std::ctype<char>::widen(ctype<char> *this,char *param_1,char *param_2,char *param_3)

{
  code *UNRECOVERED_JUMPTABLE;
  char *pcVar1;
  
  if (this[0x1c] != (ctype<char>)0x1) {
    if (this[0x1c] == (ctype<char>)0x0) {
      _M_widen_init(this);
      UNRECOVERED_JUMPTABLE = *(code **)(*(int *)this + 0x1c);
      if (UNRECOVERED_JUMPTABLE != (code *)PTR_do_widen_00301f9c) goto LAB_00192f42;
    }
    else {
      UNRECOVERED_JUMPTABLE = *(code **)(*(int *)this + 0x1c);
      if (UNRECOVERED_JUMPTABLE != (code *)PTR_do_widen_00301f9c) {
LAB_00192f42:
                    /* WARNING: Could not recover jumptable at 0x00192f59. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        pcVar1 = (char *)(*UNRECOVERED_JUMPTABLE)();
        return pcVar1;
      }
    }
  }
  if (param_2 != param_1) {
    memcpy(param_3,param_1,(int)param_2 - (int)param_1);
  }
  return param_2;
}



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

void * FUN_00192ec0(int *param_1,void *param_2,void *param_3,void *param_4)

{
  code *UNRECOVERED_JUMPTABLE;
  void *pvVar1;
  
  if ((char)param_1[7] != '\x01') {
    if ((char)param_1[7] == '\0') {
      FUN_001c66b0(param_1);
      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);
      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) goto LAB_00192f42;
    }
    else {
      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);
      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) {
LAB_00192f42:
                    /* WARNING: Could not recover jumptable at 0x00192f59. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();
        return pvVar1;
      }
    }
  }
  if (param_3 != param_2) {
    memcpy(param_4,param_2,(int)param_3 - (int)param_2);
  }
  return param_3;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00032730
ADD EBX,0x16f137
SUB ESP,0x1c
MOV EBP,dword ptr [ESP + 0x30]
MOV EDI,dword ptr [ESP + 0x34]
MOV ESI,dword ptr [ESP + 0x38]
MOV EDX,dword ptr [ESP + 0x3c]
MOVZX EAX,byte ptr [EBP + 0x1c]
CMP AL,0x1
JZ 0x00192efc
TEST AL,AL
JZ 0x00192f20
MOV EAX,dword ptr [EBP]
MOV EAX,dword ptr [EAX + 0x1c]
CMP EAX,dword ptr [EBX + 0xffffff9c]
JNZ 0x00192f42
CMP ESI,EDI
JZ 0x00192f12
MOV EAX,ESI
SUB ESP,0x4
SUB EAX,EDI
PUSH EAX
PUSH EDI
PUSH EDX
CALL 0x000265c0
ADD ESP,0x10
ADD ESP,0x1c
MOV EAX,ESI
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESP + 0xc],EDX
SUB ESP,0xc
PUSH EBP
CALL 0x001c66b0
MOV EAX,dword ptr [EBP]
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [EAX + 0x1c]
CMP EAX,dword ptr [EBX + 0xffffff9c]
JZ 0x00192efc
MOV dword ptr [ESP + 0x38],ESI
MOV dword ptr [ESP + 0x34],EDI
MOV dword ptr [ESP + 0x30],EBP
MOV dword ptr [ESP + 0x3c],EDX
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
JMP EAX
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid * FUN_00192ec0(int *param_1,void *param_2,void *param_3,void *param_4)\n\n{\n  code *UNRECOVERED_JUMPTABLE;\n  void *pvVar1;\n  \n  if ((char)param_1[7] != '\x01') {\n    if ((char)param_1[7] == '\0') {\n      FUN_001c66b0(param_1);\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) goto LAB_00192f42;\n    }\n    else {\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) {\nLAB_00192f42:\n                    /* WARNING: Could not recover jumptable at 0x00192f59. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();\n        return pvVar1;\n      }\n    }\n  }\n  if (param_3 != param_2) {\n    memcpy(param_4,param_2,(int)param_3 - (int)param_2);\n  }\n  return param_3;\n}\n\n" comment (function_definition "void * FUN_00192ec0(int *param_1,void *param_2,void *param_3,void *param_4)\n\n{\n  code *UNRECOVERED_JUMPTABLE;\n  void *pvVar1;\n  \n  if ((char)param_1[7] != '\x01') {\n    if ((char)param_1[7] == '\0') {\n      FUN_001c66b0(param_1);\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) goto LAB_00192f42;\n    }\n    else {\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) {\nLAB_00192f42:\n                    /* WARNING: Could not recover jumptable at 0x00192f59. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();\n        return pvVar1;\n      }\n    }\n  }\n  if (param_3 != param_2) {\n    memcpy(param_4,param_2,(int)param_3 - (int)param_2);\n  }\n  return param_3;\n}" primitive_type (pointer_declarator "* FUN_00192ec0(int *param_1,void *param_2,void *param_3,void *param_4)" * (function_declarator "FUN_00192ec0(int *param_1,void *param_2,void *param_3,void *param_4)" identifier (parameter_list "(int *param_1,void *param_2,void *param_3,void *param_4)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "void *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "void *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "void *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) )))) (compound_statement "{\n  code *UNRECOVERED_JUMPTABLE;\n  void *pvVar1;\n  \n  if ((char)param_1[7] != '\x01') {\n    if ((char)param_1[7] == '\0') {\n      FUN_001c66b0(param_1);\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) goto LAB_00192f42;\n    }\n    else {\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) {\nLAB_00192f42:\n                    /* WARNING: Could not recover jumptable at 0x00192f59. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();\n        return pvVar1;\n      }\n    }\n  }\n  if (param_3 != param_2) {\n    memcpy(param_4,param_2,(int)param_3 - (int)param_2);\n  }\n  return param_3;\n}" { (declaration "code *UNRECOVERED_JUMPTABLE;" type_identifier (pointer_declarator "*UNRECOVERED_JUMPTABLE" * identifier) ;) (declaration "void *pvVar1;" primitive_type (pointer_declarator "*pvVar1" * identifier) ;) (if_statement "if ((char)param_1[7] != '\x01') {\n    if ((char)param_1[7] == '\0') {\n      FUN_001c66b0(param_1);\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) goto LAB_00192f42;\n    }\n    else {\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) {\nLAB_00192f42:\n                    /* WARNING: Could not recover jumptable at 0x00192f59. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();\n        return pvVar1;\n      }\n    }\n  }" if (parenthesized_expression "((char)param_1[7] != '\x01')" ( (binary_expression "(char)param_1[7] != '\x01'" (cast_expression "(char)param_1[7]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[7]" identifier [ number_literal ])) != (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n    if ((char)param_1[7] == '\0') {\n      FUN_001c66b0(param_1);\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) goto LAB_00192f42;\n    }\n    else {\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) {\nLAB_00192f42:\n                    /* WARNING: Could not recover jumptable at 0x00192f59. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();\n        return pvVar1;\n      }\n    }\n  }" { (if_statement "if ((char)param_1[7] == '\0') {\n      FUN_001c66b0(param_1);\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) goto LAB_00192f42;\n    }\n    else {\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) {\nLAB_00192f42:\n                    /* WARNING: Could not recover jumptable at 0x00192f59. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();\n        return pvVar1;\n      }\n    }" if (parenthesized_expression "((char)param_1[7] == '\0')" ( (binary_expression "(char)param_1[7] == '\0'" (cast_expression "(char)param_1[7]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[7]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_001c66b0(param_1);\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) goto LAB_00192f42;\n    }" { (expression_statement "FUN_001c66b0(param_1);" (call_expression "FUN_001c66b0(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);" (assignment_expression "UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c)" identifier = (pointer_expression "*(code **)(*param_1 + 0x1c)" * (cast_expression "(code **)(*param_1 + 0x1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x1c)" ( (binary_expression "*param_1 + 0x1c" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (if_statement "if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) goto LAB_00192f42;" if (parenthesized_expression "(UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c)" ( (binary_expression "UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c" identifier != (cast_expression "(code *)PTR_FUN_00301f9c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (goto_statement "goto LAB_00192f42;" goto statement_identifier ;)) }) (else_clause "else {\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) {\nLAB_00192f42:\n                    /* WARNING: Could not recover jumptable at 0x00192f59. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();\n        return pvVar1;\n      }\n    }" else (compound_statement "{\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) {\nLAB_00192f42:\n                    /* WARNING: Could not recover jumptable at 0x00192f59. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();\n        return pvVar1;\n      }\n    }" { (expression_statement "UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);" (assignment_expression "UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c)" identifier = (pointer_expression "*(code **)(*param_1 + 0x1c)" * (cast_expression "(code **)(*param_1 + 0x1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x1c)" ( (binary_expression "*param_1 + 0x1c" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (if_statement "if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) {\nLAB_00192f42:\n                    /* WARNING: Could not recover jumptable at 0x00192f59. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();\n        return pvVar1;\n      }" if (parenthesized_expression "(UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c)" ( (binary_expression "UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c" identifier != (cast_expression "(code *)PTR_FUN_00301f9c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\nLAB_00192f42:\n                    /* WARNING: Could not recover jumptable at 0x00192f59. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();\n        return pvVar1;\n      }" { (labeled_statement "LAB_00192f42:\n                    /* WARNING: Could not recover jumptable at 0x00192f59. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();" statement_identifier : comment comment (expression_statement "pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();" (assignment_expression "pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)()" identifier = (cast_expression "(void *)(*UNRECOVERED_JUMPTABLE)()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*UNRECOVERED_JUMPTABLE)()" (parenthesized_expression "(*UNRECOVERED_JUMPTABLE)" ( (pointer_expression "*UNRECOVERED_JUMPTABLE" * identifier) )) (argument_list "()" ( ))))) ;)) (return_statement "return pvVar1;" return identifier ;) })) }))) })) (if_statement "if (param_3 != param_2) {\n    memcpy(param_4,param_2,(int)param_3 - (int)param_2);\n  }" if (parenthesized_expression "(param_3 != param_2)" ( (binary_expression "param_3 != param_2" identifier != identifier) )) (compound_statement "{\n    memcpy(param_4,param_2,(int)param_3 - (int)param_2);\n  }" { (expression_statement "memcpy(param_4,param_2,(int)param_3 - (int)param_2);" (call_expression "memcpy(param_4,param_2,(int)param_3 - (int)param_2)" identifier (argument_list "(param_4,param_2,(int)param_3 - (int)param_2)" ( identifier , identifier , (binary_expression "(int)param_3 - (int)param_2" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;) })) (return_statement "return param_3;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* std::ctype<char>::widen(char const*, char const*, char*) const */\n\nchar * __thiscall\nstd::ctype<char>::widen(ctype<char> *this,char *param_1,char *param_2,char *param_3)\n\n{\n  code *UNRECOVERED_JUMPTABLE;\n  char *pcVar1;\n  \n  if (this[0x1c] != (ctype<char>)0x1) {\n    if (this[0x1c] == (ctype<char>)0x0) {\n      _M_widen_init(this);\n      UNRECOVERED_JUMPTABLE = *(code **)(*(int *)this + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_do_widen_00301f9c) goto LAB_00192f42;\n    }\n    else {\n      UNRECOVERED_JUMPTABLE = *(code **)(*(int *)this + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_do_widen_00301f9c) {\nLAB_00192f42:\n                    /* WARNING: Could not recover jumptable at 0x00192f59. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        pcVar1 = (char *)(*UNRECOVERED_JUMPTABLE)();\n        return pcVar1;\n      }\n    }\n  }\n  if (param_2 != param_1) {\n    memcpy(param_3,param_1,(int)param_2 - (int)param_1);\n  }\n  return param_2;\n}\n\n" comment comment (declaration "char * __thiscall" primitive_type (pointer_declarator "* __thiscall" * identifier) ;) (labeled_statement "std::ctype<char>::widen(ctype<char> *this,char *param_1,char *param_2,char *param_3)" statement_identifier (ERROR "::ctype<char>:" : : (binary_expression "ctype<char" identifier < identifier) > :) : (expression_statement "widen(ctype<char> *this,char *param_1,char *param_2,char *param_3)" (call_expression "widen(ctype<char> *this,char *param_1,char *param_2,char *param_3)" identifier (argument_list "(ctype<char> *this,char *param_1,char *param_2,char *param_3)" ( (binary_expression "ctype<char> *this" (binary_expression "ctype<char" identifier < identifier) > (pointer_expression "*this" * identifier)) , (binary_expression "char *param_1" identifier * identifier) , (binary_expression "char *param_2" identifier * identifier) , (binary_expression "char *param_3" identifier * identifier) ))) ;)) (compound_statement "{\n  code *UNRECOVERED_JUMPTABLE;\n  char *pcVar1;\n  \n  if (this[0x1c] != (ctype<char>)0x1) {\n    if (this[0x1c] == (ctype<char>)0x0) {\n      _M_widen_init(this);\n      UNRECOVERED_JUMPTABLE = *(code **)(*(int *)this + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_do_widen_00301f9c) goto LAB_00192f42;\n    }\n    else {\n      UNRECOVERED_JUMPTABLE = *(code **)(*(int *)this + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_do_widen_00301f9c) {\nLAB_00192f42:\n                    /* WARNING: Could not recover jumptable at 0x00192f59. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        pcVar1 = (char *)(*UNRECOVERED_JUMPTABLE)();\n        return pcVar1;\n      }\n    }\n  }\n  if (param_2 != param_1) {\n    memcpy(param_3,param_1,(int)param_2 - (int)param_1);\n  }\n  return param_2;\n}" { (declaration "code *UNRECOVERED_JUMPTABLE;" type_identifier (pointer_declarator "*UNRECOVERED_JUMPTABLE" * identifier) ;) (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (if_statement "if (this[0x1c] != (ctype<char>)0x1) {\n    if (this[0x1c] == (ctype<char>)0x0) {\n      _M_widen_init(this);\n      UNRECOVERED_JUMPTABLE = *(code **)(*(int *)this + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_do_widen_00301f9c) goto LAB_00192f42;\n    }\n    else {\n      UNRECOVERED_JUMPTABLE = *(code **)(*(int *)this + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_do_widen_00301f9c) {\nLAB_00192f42:\n                    /* WARNING: Could not recover jumptable at 0x00192f59. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        pcVar1 = (char *)(*UNRECOVERED_JUMPTABLE)();\n        return pcVar1;\n      }\n    }\n  }" if (parenthesized_expression "(this[0x1c] != (ctype<char>)0x1)" ( (binary_expression "this[0x1c] != (ctype<char>)0x1)" (subscript_expression "this[0x1c]" identifier [ number_literal ]) != (parenthesized_expression "(ctype<char>)0x1)" ( (binary_expression "ctype<char>)0x1" (binary_expression "ctype<char" identifier < identifier) > (ERROR ")" )) number_literal) ))) )) (compound_statement "{\n    if (this[0x1c] == (ctype<char>)0x0) {\n      _M_widen_init(this);\n      UNRECOVERED_JUMPTABLE = *(code **)(*(int *)this + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_do_widen_00301f9c) goto LAB_00192f42;\n    }\n    else {\n      UNRECOVERED_JUMPTABLE = *(code **)(*(int *)this + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_do_widen_00301f9c) {\nLAB_00192f42:\n                    /* WARNING: Could not recover jumptable at 0x00192f59. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        pcVar1 = (char *)(*UNRECOVERED_JUMPTABLE)();\n        return pcVar1;\n      }\n    }\n  }" { (if_statement "if (this[0x1c] == (ctype<char>)0x0) {\n      _M_widen_init(this);\n      UNRECOVERED_JUMPTABLE = *(code **)(*(int *)this + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_do_widen_00301f9c) goto LAB_00192f42;\n    }\n    else {\n      UNRECOVERED_JUMPTABLE = *(code **)(*(int *)this + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_do_widen_00301f9c) {\nLAB_00192f42:\n                    /* WARNING: Could not recover jumptable at 0x00192f59. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        pcVar1 = (char *)(*UNRECOVERED_JUMPTABLE)();\n        return pcVar1;\n      }\n    }" if (parenthesized_expression "(this[0x1c] == (ctype<char>)0x0)" ( (binary_expression "this[0x1c] == (ctype<char>)0x0)" (subscript_expression "this[0x1c]" identifier [ number_literal ]) == (parenthesized_expression "(ctype<char>)0x0)" ( (binary_expression "ctype<char>)0x0" (binary_expression "ctype<char" identifier < identifier) > (ERROR ")" )) number_literal) ))) )) (compound_statement "{\n      _M_widen_init(this);\n      UNRECOVERED_JUMPTABLE = *(code **)(*(int *)this + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_do_widen_00301f9c) goto LAB_00192f42;\n    }" { (expression_statement "_M_widen_init(this);" (call_expression "_M_widen_init(this)" identifier (argument_list "(this)" ( identifier ))) ;) (expression_statement "UNRECOVERED_JUMPTABLE = *(code **)(*(int *)this + 0x1c);" (assignment_expression "UNRECOVERED_JUMPTABLE = *(code **)(*(int *)this + 0x1c)" identifier = (pointer_expression "*(code **)(*(int *)this + 0x1c)" * (cast_expression "(code **)(*(int *)this + 0x1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)this + 0x1c)" ( (binary_expression "*(int *)this + 0x1c" (pointer_expression "*(int *)this" * (cast_expression "(int *)this" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (if_statement "if (UNRECOVERED_JUMPTABLE != (code *)PTR_do_widen_00301f9c) goto LAB_00192f42;" if (parenthesized_expression "(UNRECOVERED_JUMPTABLE != (code *)PTR_do_widen_00301f9c)" ( (binary_expression "UNRECOVERED_JUMPTABLE != (code *)PTR_do_widen_00301f9c" identifier != (cast_expression "(code *)PTR_do_widen_00301f9c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (goto_statement "goto LAB_00192f42;" goto statement_identifier ;)) }) (else_clause "else {\n      UNRECOVERED_JUMPTABLE = *(code **)(*(int *)this + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_do_widen_00301f9c) {\nLAB_00192f42:\n                    /* WARNING: Could not recover jumptable at 0x00192f59. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        pcVar1 = (char *)(*UNRECOVERED_JUMPTABLE)();\n        return pcVar1;\n      }\n    }" else (compound_statement "{\n      UNRECOVERED_JUMPTABLE = *(code **)(*(int *)this + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_do_widen_00301f9c) {\nLAB_00192f42:\n                    /* WARNING: Could not recover jumptable at 0x00192f59. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        pcVar1 = (char *)(*UNRECOVERED_JUMPTABLE)();\n        return pcVar1;\n      }\n    }" { (expression_statement "UNRECOVERED_JUMPTABLE = *(code **)(*(int *)this + 0x1c);" (assignment_expression "UNRECOVERED_JUMPTABLE = *(code **)(*(int *)this + 0x1c)" identifier = (pointer_expression "*(code **)(*(int *)this + 0x1c)" * (cast_expression "(code **)(*(int *)this + 0x1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)this + 0x1c)" ( (binary_expression "*(int *)this + 0x1c" (pointer_expression "*(int *)this" * (cast_expression "(int *)this" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (if_statement "if (UNRECOVERED_JUMPTABLE != (code *)PTR_do_widen_00301f9c) {\nLAB_00192f42:\n                    /* WARNING: Could not recover jumptable at 0x00192f59. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        pcVar1 = (char *)(*UNRECOVERED_JUMPTABLE)();\n        return pcVar1;\n      }" if (parenthesized_expression "(UNRECOVERED_JUMPTABLE != (code *)PTR_do_widen_00301f9c)" ( (binary_expression "UNRECOVERED_JUMPTABLE != (code *)PTR_do_widen_00301f9c" identifier != (cast_expression "(code *)PTR_do_widen_00301f9c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\nLAB_00192f42:\n                    /* WARNING: Could not recover jumptable at 0x00192f59. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        pcVar1 = (char *)(*UNRECOVERED_JUMPTABLE)();\n        return pcVar1;\n      }" { (labeled_statement "LAB_00192f42:\n                    /* WARNING: Could not recover jumptable at 0x00192f59. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        pcVar1 = (char *)(*UNRECOVERED_JUMPTABLE)();" statement_identifier : comment comment (expression_statement "pcVar1 = (char *)(*UNRECOVERED_JUMPTABLE)();" (assignment_expression "pcVar1 = (char *)(*UNRECOVERED_JUMPTABLE)()" identifier = (cast_expression "(char *)(*UNRECOVERED_JUMPTABLE)()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*UNRECOVERED_JUMPTABLE)()" (parenthesized_expression "(*UNRECOVERED_JUMPTABLE)" ( (pointer_expression "*UNRECOVERED_JUMPTABLE" * identifier) )) (argument_list "()" ( ))))) ;)) (return_statement "return pcVar1;" return identifier ;) })) }))) })) (if_statement "if (param_2 != param_1) {\n    memcpy(param_3,param_1,(int)param_2 - (int)param_1);\n  }" if (parenthesized_expression "(param_2 != param_1)" ( (binary_expression "param_2 != param_1" identifier != identifier) )) (compound_statement "{\n    memcpy(param_3,param_1,(int)param_2 - (int)param_1);\n  }" { (expression_statement "memcpy(param_3,param_1,(int)param_2 - (int)param_1);" (call_expression "memcpy(param_3,param_1,(int)param_2 - (int)param_1)" identifier (argument_list "(param_3,param_1,(int)param_2 - (int)param_1)" ( identifier , identifier , (binary_expression "(int)param_2 - (int)param_1" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;) })) (return_statement "return param_2;" return identifier ;) }))
(translation_unit "void * FUN_00192ec0(int *param_1,void *param_2,void *param_3,void *param_4)\n\n{\n  code *UNRECOVERED_JUMPTABLE;\n  void *pvVar1;\n  \n  if ((char)param_1[7] != '\x01') {\n    if ((char)param_1[7] == '\0') {\n      FUN_001c66b0(param_1);\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) goto LAB_00192f42;\n    }\n    else {\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) {\nLAB_00192f42:\n                    \n                    \n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();\n        return pvVar1;\n      }\n    }\n  }\n  if (param_3 != param_2) {\n    memcpy(param_4,param_2,(int)param_3 - (int)param_2);\n  }\n  return param_3;\n}\n\n" (function_definition "void * FUN_00192ec0(int *param_1,void *param_2,void *param_3,void *param_4)\n\n{\n  code *UNRECOVERED_JUMPTABLE;\n  void *pvVar1;\n  \n  if ((char)param_1[7] != '\x01') {\n    if ((char)param_1[7] == '\0') {\n      FUN_001c66b0(param_1);\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) goto LAB_00192f42;\n    }\n    else {\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) {\nLAB_00192f42:\n                    \n                    \n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();\n        return pvVar1;\n      }\n    }\n  }\n  if (param_3 != param_2) {\n    memcpy(param_4,param_2,(int)param_3 - (int)param_2);\n  }\n  return param_3;\n}" primitive_type (pointer_declarator "* FUN_00192ec0(int *param_1,void *param_2,void *param_3,void *param_4)" * (function_declarator "FUN_00192ec0(int *param_1,void *param_2,void *param_3,void *param_4)" identifier (parameter_list "(int *param_1,void *param_2,void *param_3,void *param_4)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "void *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "void *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "void *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) )))) (compound_statement "{\n  code *UNRECOVERED_JUMPTABLE;\n  void *pvVar1;\n  \n  if ((char)param_1[7] != '\x01') {\n    if ((char)param_1[7] == '\0') {\n      FUN_001c66b0(param_1);\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) goto LAB_00192f42;\n    }\n    else {\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) {\nLAB_00192f42:\n                    \n                    \n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();\n        return pvVar1;\n      }\n    }\n  }\n  if (param_3 != param_2) {\n    memcpy(param_4,param_2,(int)param_3 - (int)param_2);\n  }\n  return param_3;\n}" { (declaration "code *UNRECOVERED_JUMPTABLE;" type_identifier (pointer_declarator "*UNRECOVERED_JUMPTABLE" * identifier) ;) (declaration "void *pvVar1;" primitive_type (pointer_declarator "*pvVar1" * identifier) ;) (if_statement "if ((char)param_1[7] != '\x01') {\n    if ((char)param_1[7] == '\0') {\n      FUN_001c66b0(param_1);\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) goto LAB_00192f42;\n    }\n    else {\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) {\nLAB_00192f42:\n                    \n                    \n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();\n        return pvVar1;\n      }\n    }\n  }" if (parenthesized_expression "((char)param_1[7] != '\x01')" ( (binary_expression "(char)param_1[7] != '\x01'" (cast_expression "(char)param_1[7]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[7]" identifier [ number_literal ])) != (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n    if ((char)param_1[7] == '\0') {\n      FUN_001c66b0(param_1);\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) goto LAB_00192f42;\n    }\n    else {\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) {\nLAB_00192f42:\n                    \n                    \n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();\n        return pvVar1;\n      }\n    }\n  }" { (if_statement "if ((char)param_1[7] == '\0') {\n      FUN_001c66b0(param_1);\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) goto LAB_00192f42;\n    }\n    else {\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) {\nLAB_00192f42:\n                    \n                    \n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();\n        return pvVar1;\n      }\n    }" if (parenthesized_expression "((char)param_1[7] == '\0')" ( (binary_expression "(char)param_1[7] == '\0'" (cast_expression "(char)param_1[7]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[7]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_001c66b0(param_1);\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) goto LAB_00192f42;\n    }" { (expression_statement "FUN_001c66b0(param_1);" (call_expression "FUN_001c66b0(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);" (assignment_expression "UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c)" identifier = (pointer_expression "*(code **)(*param_1 + 0x1c)" * (cast_expression "(code **)(*param_1 + 0x1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x1c)" ( (binary_expression "*param_1 + 0x1c" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (if_statement "if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) goto LAB_00192f42;" if (parenthesized_expression "(UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c)" ( (binary_expression "UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c" identifier != (cast_expression "(code *)PTR_FUN_00301f9c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (goto_statement "goto LAB_00192f42;" goto statement_identifier ;)) }) (else_clause "else {\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) {\nLAB_00192f42:\n                    \n                    \n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();\n        return pvVar1;\n      }\n    }" else (compound_statement "{\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) {\nLAB_00192f42:\n                    \n                    \n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();\n        return pvVar1;\n      }\n    }" { (expression_statement "UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);" (assignment_expression "UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c)" identifier = (pointer_expression "*(code **)(*param_1 + 0x1c)" * (cast_expression "(code **)(*param_1 + 0x1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x1c)" ( (binary_expression "*param_1 + 0x1c" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (if_statement "if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) {\nLAB_00192f42:\n                    \n                    \n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();\n        return pvVar1;\n      }" if (parenthesized_expression "(UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c)" ( (binary_expression "UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c" identifier != (cast_expression "(code *)PTR_FUN_00301f9c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\nLAB_00192f42:\n                    \n                    \n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();\n        return pvVar1;\n      }" { (labeled_statement "LAB_00192f42:\n                    \n                    \n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();" statement_identifier : (expression_statement "pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();" (assignment_expression "pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)()" identifier = (cast_expression "(void *)(*UNRECOVERED_JUMPTABLE)()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*UNRECOVERED_JUMPTABLE)()" (parenthesized_expression "(*UNRECOVERED_JUMPTABLE)" ( (pointer_expression "*UNRECOVERED_JUMPTABLE" * identifier) )) (argument_list "()" ( ))))) ;)) (return_statement "return pvVar1;" return identifier ;) })) }))) })) (if_statement "if (param_3 != param_2) {\n    memcpy(param_4,param_2,(int)param_3 - (int)param_2);\n  }" if (parenthesized_expression "(param_3 != param_2)" ( (binary_expression "param_3 != param_2" identifier != identifier) )) (compound_statement "{\n    memcpy(param_4,param_2,(int)param_3 - (int)param_2);\n  }" { (expression_statement "memcpy(param_4,param_2,(int)param_3 - (int)param_2);" (call_expression "memcpy(param_4,param_2,(int)param_3 - (int)param_2)" identifier (argument_list "(param_4,param_2,(int)param_3 - (int)param_2)" ( identifier , identifier , (binary_expression "(int)param_3 - (int)param_2" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;) })) (return_statement "return param_3;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) != (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))))) ;)) (return_statement return IDENT ;) })) }))) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) ;) })) (return_statement return IDENT ;) })))
(function_definition "void * FUN_00192ec0(int *param_1,void *param_2,void *param_3,void *param_4)\n\n{\n  code *UNRECOVERED_JUMPTABLE;\n  void *pvVar1;\n  \n  if ((char)param_1[7] != '\x01') {\n    if ((char)param_1[7] == '\0') {\n      FUN_001c66b0(param_1);\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) goto LAB_00192f42;\n    }\n    else {\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) {\nLAB_00192f42:\n                    \n                    \n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();\n        return pvVar1;\n      }\n    }\n  }\n  if (param_3 != param_2) {\n    memcpy(param_4,param_2,(int)param_3 - (int)param_2);\n  }\n  return param_3;\n}" (primitive_type "void") (pointer_declarator "* FUN_00192ec0(int *param_1,void *param_2,void *param_3,void *param_4)" (* "*") (function_declarator "FUN_00192ec0(int *param_1,void *param_2,void *param_3,void *param_4)" (identifier "FUN_00192ec0") (parameter_list "(int *param_1,void *param_2,void *param_3,void *param_4)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "void *param_2" (primitive_type "void") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "void *param_3" (primitive_type "void") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "void *param_4" (primitive_type "void") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")")))) (compound_statement "{\n  code *UNRECOVERED_JUMPTABLE;\n  void *pvVar1;\n  \n  if ((char)param_1[7] != '\x01') {\n    if ((char)param_1[7] == '\0') {\n      FUN_001c66b0(param_1);\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) goto LAB_00192f42;\n    }\n    else {\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) {\nLAB_00192f42:\n                    \n                    \n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();\n        return pvVar1;\n      }\n    }\n  }\n  if (param_3 != param_2) {\n    memcpy(param_4,param_2,(int)param_3 - (int)param_2);\n  }\n  return param_3;\n}" ({ "{") (declaration "code *UNRECOVERED_JUMPTABLE;" (type_identifier "code") (pointer_declarator "*UNRECOVERED_JUMPTABLE" (* "*") (identifier "UNRECOVERED_JUMPTABLE")) (; ";")) (declaration "void *pvVar1;" (primitive_type "void") (pointer_declarator "*pvVar1" (* "*") (identifier "pvVar1")) (; ";")) (if_statement "if ((char)param_1[7] != '\x01') {\n    if ((char)param_1[7] == '\0') {\n      FUN_001c66b0(param_1);\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) goto LAB_00192f42;\n    }\n    else {\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) {\nLAB_00192f42:\n                    \n                    \n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();\n        return pvVar1;\n      }\n    }\n  }" (if "if") (parenthesized_expression "((char)param_1[7] != '\x01')" (( "(") (binary_expression "(char)param_1[7] != '\x01'" (cast_expression "(char)param_1[7]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]"))) (!= "!=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")")) (compound_statement "{\n    if ((char)param_1[7] == '\0') {\n      FUN_001c66b0(param_1);\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) goto LAB_00192f42;\n    }\n    else {\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) {\nLAB_00192f42:\n                    \n                    \n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();\n        return pvVar1;\n      }\n    }\n  }" ({ "{") (if_statement "if ((char)param_1[7] == '\0') {\n      FUN_001c66b0(param_1);\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) goto LAB_00192f42;\n    }\n    else {\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) {\nLAB_00192f42:\n                    \n                    \n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();\n        return pvVar1;\n      }\n    }" (if "if") (parenthesized_expression "((char)param_1[7] == '\0')" (( "(") (binary_expression "(char)param_1[7] == '\0'" (cast_expression "(char)param_1[7]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]"))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      FUN_001c66b0(param_1);\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) goto LAB_00192f42;\n    }" ({ "{") (expression_statement "FUN_001c66b0(param_1);" (call_expression "FUN_001c66b0(param_1)" (identifier "FUN_001c66b0") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);" (assignment_expression "UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c)" (identifier "UNRECOVERED_JUMPTABLE") (= "=") (pointer_expression "*(code **)(*param_1 + 0x1c)" (* "*") (cast_expression "(code **)(*param_1 + 0x1c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x1c)" (( "(") (binary_expression "*param_1 + 0x1c" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (if_statement "if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) goto LAB_00192f42;" (if "if") (parenthesized_expression "(UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c)" (( "(") (binary_expression "UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c" (identifier "UNRECOVERED_JUMPTABLE") (!= "!=") (cast_expression "(code *)PTR_FUN_00301f9c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_00301f9c"))) () ")")) (goto_statement "goto LAB_00192f42;" (goto "goto") (statement_identifier "LAB_00192f42") (; ";"))) (} "}")) (else_clause "else {\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) {\nLAB_00192f42:\n                    \n                    \n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();\n        return pvVar1;\n      }\n    }" (else "else") (compound_statement "{\n      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);\n      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) {\nLAB_00192f42:\n                    \n                    \n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();\n        return pvVar1;\n      }\n    }" ({ "{") (expression_statement "UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);" (assignment_expression "UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c)" (identifier "UNRECOVERED_JUMPTABLE") (= "=") (pointer_expression "*(code **)(*param_1 + 0x1c)" (* "*") (cast_expression "(code **)(*param_1 + 0x1c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x1c)" (( "(") (binary_expression "*param_1 + 0x1c" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (if_statement "if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) {\nLAB_00192f42:\n                    \n                    \n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();\n        return pvVar1;\n      }" (if "if") (parenthesized_expression "(UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c)" (( "(") (binary_expression "UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c" (identifier "UNRECOVERED_JUMPTABLE") (!= "!=") (cast_expression "(code *)PTR_FUN_00301f9c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_00301f9c"))) () ")")) (compound_statement "{\nLAB_00192f42:\n                    \n                    \n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();\n        return pvVar1;\n      }" ({ "{") (labeled_statement "LAB_00192f42:\n                    \n                    \n        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();" (statement_identifier "LAB_00192f42") (: ":") (expression_statement "pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();" (assignment_expression "pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)()" (identifier "pvVar1") (= "=") (cast_expression "(void *)(*UNRECOVERED_JUMPTABLE)()" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*UNRECOVERED_JUMPTABLE)()" (parenthesized_expression "(*UNRECOVERED_JUMPTABLE)" (( "(") (pointer_expression "*UNRECOVERED_JUMPTABLE" (* "*") (identifier "UNRECOVERED_JUMPTABLE")) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";"))) (return_statement "return pvVar1;" (return "return") (identifier "pvVar1") (; ";")) (} "}"))) (} "}")))) (} "}"))) (if_statement "if (param_3 != param_2) {\n    memcpy(param_4,param_2,(int)param_3 - (int)param_2);\n  }" (if "if") (parenthesized_expression "(param_3 != param_2)" (( "(") (binary_expression "param_3 != param_2" (identifier "param_3") (!= "!=") (identifier "param_2")) () ")")) (compound_statement "{\n    memcpy(param_4,param_2,(int)param_3 - (int)param_2);\n  }" ({ "{") (expression_statement "memcpy(param_4,param_2,(int)param_3 - (int)param_2);" (call_expression "memcpy(param_4,param_2,(int)param_3 - (int)param_2)" (identifier "memcpy") (argument_list "(param_4,param_2,(int)param_3 - (int)param_2)" (( "(") (identifier "param_4") (, ",") (identifier "param_2") (, ",") (binary_expression "(int)param_3 - (int)param_2" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (- "-") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) () ")"))) (; ";")) (} "}"))) (return_statement "return param_3;" (return "return") (identifier "param_3") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* std::ctype<char>::widen(char const*, char const*, char*) const */

char * __thiscall
std::var_2<var_3>::var_1(var_2<var_3> *this,var_3 *var_4,var_3 *var_5,var_3 *var_6)

{
  type_1 *var_8;
  char *pcVar1;
  
  if (this[0x1c] != (var_2<var_3>)0x1) {
    if (this[0x1c] == (var_2<var_3>)0x0) {
      var_7(this);
      var_8 = *(type_1 **)(*(int *)this + 0x1c);
      if (var_8 != (type_1 *)PTR_do_widen_00301f9c) goto LAB_00192f42;
    }
    else {
      var_8 = *(type_1 **)(*(int *)this + 0x1c);
      if (var_8 != (type_1 *)PTR_do_widen_00301f9c) {
LAB_00192f42:
                    /* WARNING: Could not recover jumptable at 0x00192f59. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        pcVar1 = (char *)(*var_8)();
        return pcVar1;
      }
    }
  }
  if (var_5 != var_4) {
    var_9(var_6,var_4,(int)var_5 - (int)var_4);
  }
  return var_5;
}


(translation_unit (function_definition type: (primitive_type) declarator: (pointer_declarator 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: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier)))))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))))) (return_statement (identifier))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))) (return_statement (identifier)))))

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

void * MASKED(int *param_1,void *param_2,void *param_3,void *param_4)

{
  code *UNRECOVERED_JUMPTABLE;
  void *pvVar1;
  
  if ((char)param_1[7] != '\x01') {
    if ((char)param_1[7] == '\0') {
      FUN_001c66b0(param_1);
      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);
      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) goto LAB_00192f42;
    }
    else {
      UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x1c);
      if (UNRECOVERED_JUMPTABLE != (code *)PTR_FUN_00301f9c) {
LAB_00192f42:
                    /* WARNING: Could not recover jumptable at 0x00192f59. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        pvVar1 = (void *)(*UNRECOVERED_JUMPTABLE)();
        return pvVar1;
      }
    }
  }
  if (param_3 != param_2) {
    memcpy(param_4,param_2,(int)param_3 - (int)param_2);
  }
  return param_3;
}

