
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* std::ctype<char>::widen(char) const [clone .part.25] */

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

{
  ctype<char> *in_EAX;
  undefined4 uVar1;
  undefined4 in_EDX;
  
  _M_widen_init(in_EAX);
  if (*(code **)(*(int *)in_EAX + 0x18) == (code *)PTR_do_widen_0038efcc) {
    return in_EDX;
  }
  uVar1 = (**(code **)(*(int *)in_EAX + 0x18))();
  return uVar1;
}



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

undefined4 __regparm3 FUN_001f9220(int *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  FUN_0022ccc0(param_1);
  if (*(code **)(*param_1 + 0x18) == (code *)PTR_FUN_0038efcc) {
    return param_2;
  }
  uVar1 = (**(code **)(*param_1 + 0x18))(param_1,(int)(char)param_2);
  return uVar1;
}


PUSH EBP
MOV EBP,EDX
PUSH EDI
MOV EDI,EDX
PUSH ESI
MOV ESI,EAX
PUSH EBX
CALL 0x00035840
ADD EBX,0x195dd1
SUB ESP,0x18
PUSH EAX
CALL 0x0022ccc0
MOV EAX,dword ptr [ESI]
ADD ESP,0x10
MOV EAX,dword ptr [EAX + 0x18]
CMP EAX,dword ptr [EBX + 0xffffffcc]
JNZ 0x001f9260
ADD ESP,0xc
MOV EAX,EBP
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ECX,EDI
SUB ESP,0x8
MOVSX EDI,CL
PUSH EDI
PUSH ESI
CALL EAX
MOV EBP,EAX
ADD ESP,0x10
MOV EAX,EBP
ADD ESP,0xc
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 __regparm3 FUN_001f9220(int *param_1,undefined4 param_2)\n\n{\n  undefined4 uVar1;\n  \n  FUN_0022ccc0(param_1);\n  if (*(code **)(*param_1 + 0x18) == (code *)PTR_FUN_0038efcc) {\n    return param_2;\n  }\n  uVar1 = (**(code **)(*param_1 + 0x18))(param_1,(int)(char)param_2);\n  return uVar1;\n}\n\n" comment (function_definition "undefined4 __regparm3 FUN_001f9220(int *param_1,undefined4 param_2)\n\n{\n  undefined4 uVar1;\n  \n  FUN_0022ccc0(param_1);\n  if (*(code **)(*param_1 + 0x18) == (code *)PTR_FUN_0038efcc) {\n    return param_2;\n  }\n  uVar1 = (**(code **)(*param_1 + 0x18))(param_1,(int)(char)param_2);\n  return uVar1;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_001f9220(int *param_1,undefined4 param_2)" identifier (parameter_list "(int *param_1,undefined4 param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  \n  FUN_0022ccc0(param_1);\n  if (*(code **)(*param_1 + 0x18) == (code *)PTR_FUN_0038efcc) {\n    return param_2;\n  }\n  uVar1 = (**(code **)(*param_1 + 0x18))(param_1,(int)(char)param_2);\n  return uVar1;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (expression_statement "FUN_0022ccc0(param_1);" (call_expression "FUN_0022ccc0(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (if_statement "if (*(code **)(*param_1 + 0x18) == (code *)PTR_FUN_0038efcc) {\n    return param_2;\n  }" if (parenthesized_expression "(*(code **)(*param_1 + 0x18) == (code *)PTR_FUN_0038efcc)" ( (binary_expression "*(code **)(*param_1 + 0x18) == (code *)PTR_FUN_0038efcc" (pointer_expression "*(code **)(*param_1 + 0x18)" * (cast_expression "(code **)(*param_1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) )))) == (cast_expression "(code *)PTR_FUN_0038efcc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    return param_2;\n  }" { (return_statement "return param_2;" return identifier ;) })) (expression_statement "uVar1 = (**(code **)(*param_1 + 0x18))(param_1,(int)(char)param_2);" (assignment_expression "uVar1 = (**(code **)(*param_1 + 0x18))(param_1,(int)(char)param_2)" identifier = (call_expression "(**(code **)(*param_1 + 0x18))(param_1,(int)(char)param_2)" (parenthesized_expression "(**(code **)(*param_1 + 0x18))" ( (pointer_expression "**(code **)(*param_1 + 0x18)" * (pointer_expression "*(code **)(*param_1 + 0x18)" * (cast_expression "(code **)(*param_1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1,(int)(char)param_2)" ( identifier , (cast_expression "(int)(char)param_2" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)param_2" ( (type_descriptor "char" primitive_type) ) identifier)) )))) ;) (return_statement "return uVar1;" 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 [clone .part.25] */\n\nundefined4 __thiscall std::ctype<char>::widen(ctype<char> *this,char param_1)\n\n{\n  ctype<char> *in_EAX;\n  undefined4 uVar1;\n  undefined4 in_EDX;\n  \n  _M_widen_init(in_EAX);\n  if (*(code **)(*(int *)in_EAX + 0x18) == (code *)PTR_do_widen_0038efcc) {\n    return in_EDX;\n  }\n  uVar1 = (**(code **)(*(int *)in_EAX + 0x18))();\n  return uVar1;\n}\n\n" comment comment (function_definition "undefined4 __thiscall std::ctype<char>::widen(ctype<char> *this,char param_1)\n\n{\n  ctype<char> *in_EAX;\n  undefined4 uVar1;\n  undefined4 in_EDX;\n  \n  _M_widen_init(in_EAX);\n  if (*(code **)(*(int *)in_EAX + 0x18) == (code *)PTR_do_widen_0038efcc) {\n    return in_EDX;\n  }\n  uVar1 = (**(code **)(*(int *)in_EAX + 0x18))();\n  return uVar1;\n}" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::ctype<char>::" identifier : : identifier < primitive_type > : :) (function_declarator "widen(ctype<char> *this,char param_1)" identifier (parameter_list "(ctype<char> *this,char param_1)" ( (parameter_declaration "ctype<char> *this" type_identifier (ERROR "<char>" < primitive_type >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "char param_1" primitive_type identifier) ))) (compound_statement "{\n  ctype<char> *in_EAX;\n  undefined4 uVar1;\n  undefined4 in_EDX;\n  \n  _M_widen_init(in_EAX);\n  if (*(code **)(*(int *)in_EAX + 0x18) == (code *)PTR_do_widen_0038efcc) {\n    return in_EDX;\n  }\n  uVar1 = (**(code **)(*(int *)in_EAX + 0x18))();\n  return uVar1;\n}" { (expression_statement "ctype<char> *in_EAX;" (binary_expression "ctype<char> *in_EAX" (binary_expression "ctype<char" identifier < identifier) > (pointer_expression "*in_EAX" * identifier)) ;) (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "undefined4 in_EDX;" type_identifier identifier ;) (expression_statement "_M_widen_init(in_EAX);" (call_expression "_M_widen_init(in_EAX)" identifier (argument_list "(in_EAX)" ( identifier ))) ;) (if_statement "if (*(code **)(*(int *)in_EAX + 0x18) == (code *)PTR_do_widen_0038efcc) {\n    return in_EDX;\n  }" if (parenthesized_expression "(*(code **)(*(int *)in_EAX + 0x18) == (code *)PTR_do_widen_0038efcc)" ( (binary_expression "*(code **)(*(int *)in_EAX + 0x18) == (code *)PTR_do_widen_0038efcc" (pointer_expression "*(code **)(*(int *)in_EAX + 0x18)" * (cast_expression "(code **)(*(int *)in_EAX + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)in_EAX + 0x18)" ( (binary_expression "*(int *)in_EAX + 0x18" (pointer_expression "*(int *)in_EAX" * (cast_expression "(int *)in_EAX" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == (cast_expression "(code *)PTR_do_widen_0038efcc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    return in_EDX;\n  }" { (return_statement "return in_EDX;" return identifier ;) })) (expression_statement "uVar1 = (**(code **)(*(int *)in_EAX + 0x18))();" (assignment_expression "uVar1 = (**(code **)(*(int *)in_EAX + 0x18))()" identifier = (call_expression "(**(code **)(*(int *)in_EAX + 0x18))()" (parenthesized_expression "(**(code **)(*(int *)in_EAX + 0x18))" ( (pointer_expression "**(code **)(*(int *)in_EAX + 0x18)" * (pointer_expression "*(code **)(*(int *)in_EAX + 0x18)" * (cast_expression "(code **)(*(int *)in_EAX + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)in_EAX + 0x18)" ( (binary_expression "*(int *)in_EAX + 0x18" (pointer_expression "*(int *)in_EAX" * (cast_expression "(int *)in_EAX" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar1;" return identifier ;) })))
(translation_unit "undefined4 __regparm3 FUN_001f9220(int *param_1,undefined4 param_2)\n\n{\n  undefined4 uVar1;\n  \n  FUN_0022ccc0(param_1);\n  if (*(code **)(*param_1 + 0x18) == (code *)PTR_FUN_0038efcc) {\n    return param_2;\n  }\n  uVar1 = (**(code **)(*param_1 + 0x18))(param_1,(int)(char)param_2);\n  return uVar1;\n}\n\n" (function_definition "undefined4 __regparm3 FUN_001f9220(int *param_1,undefined4 param_2)\n\n{\n  undefined4 uVar1;\n  \n  FUN_0022ccc0(param_1);\n  if (*(code **)(*param_1 + 0x18) == (code *)PTR_FUN_0038efcc) {\n    return param_2;\n  }\n  uVar1 = (**(code **)(*param_1 + 0x18))(param_1,(int)(char)param_2);\n  return uVar1;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_001f9220(int *param_1,undefined4 param_2)" identifier (parameter_list "(int *param_1,undefined4 param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  \n  FUN_0022ccc0(param_1);\n  if (*(code **)(*param_1 + 0x18) == (code *)PTR_FUN_0038efcc) {\n    return param_2;\n  }\n  uVar1 = (**(code **)(*param_1 + 0x18))(param_1,(int)(char)param_2);\n  return uVar1;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (expression_statement "FUN_0022ccc0(param_1);" (call_expression "FUN_0022ccc0(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (if_statement "if (*(code **)(*param_1 + 0x18) == (code *)PTR_FUN_0038efcc) {\n    return param_2;\n  }" if (parenthesized_expression "(*(code **)(*param_1 + 0x18) == (code *)PTR_FUN_0038efcc)" ( (binary_expression "*(code **)(*param_1 + 0x18) == (code *)PTR_FUN_0038efcc" (pointer_expression "*(code **)(*param_1 + 0x18)" * (cast_expression "(code **)(*param_1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) )))) == (cast_expression "(code *)PTR_FUN_0038efcc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    return param_2;\n  }" { (return_statement "return param_2;" return identifier ;) })) (expression_statement "uVar1 = (**(code **)(*param_1 + 0x18))(param_1,(int)(char)param_2);" (assignment_expression "uVar1 = (**(code **)(*param_1 + 0x18))(param_1,(int)(char)param_2)" identifier = (call_expression "(**(code **)(*param_1 + 0x18))(param_1,(int)(char)param_2)" (parenthesized_expression "(**(code **)(*param_1 + 0x18))" ( (pointer_expression "**(code **)(*param_1 + 0x18)" * (pointer_expression "*(code **)(*param_1 + 0x18)" * (cast_expression "(code **)(*param_1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1,(int)(char)param_2)" ( identifier , (cast_expression "(int)(char)param_2" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)param_2" ( (type_descriptor "char" primitive_type) ) identifier)) )))) ;) (return_statement "return uVar1;" return identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (return_statement return IDENT ;) })))
(function_definition "undefined4 __regparm3 FUN_001f9220(int *param_1,undefined4 param_2)\n\n{\n  undefined4 uVar1;\n  \n  FUN_0022ccc0(param_1);\n  if (*(code **)(*param_1 + 0x18) == (code *)PTR_FUN_0038efcc) {\n    return param_2;\n  }\n  uVar1 = (**(code **)(*param_1 + 0x18))(param_1,(int)(char)param_2);\n  return uVar1;\n}" (type_identifier "undefined4") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_001f9220(int *param_1,undefined4 param_2)" (identifier "FUN_001f9220") (parameter_list "(int *param_1,undefined4 param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) () ")"))) (compound_statement "{\n  undefined4 uVar1;\n  \n  FUN_0022ccc0(param_1);\n  if (*(code **)(*param_1 + 0x18) == (code *)PTR_FUN_0038efcc) {\n    return param_2;\n  }\n  uVar1 = (**(code **)(*param_1 + 0x18))(param_1,(int)(char)param_2);\n  return uVar1;\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (expression_statement "FUN_0022ccc0(param_1);" (call_expression "FUN_0022ccc0(param_1)" (identifier "FUN_0022ccc0") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (if_statement "if (*(code **)(*param_1 + 0x18) == (code *)PTR_FUN_0038efcc) {\n    return param_2;\n  }" (if "if") (parenthesized_expression "(*(code **)(*param_1 + 0x18) == (code *)PTR_FUN_0038efcc)" (( "(") (binary_expression "*(code **)(*param_1 + 0x18) == (code *)PTR_FUN_0038efcc" (pointer_expression "*(code **)(*param_1 + 0x18)" (* "*") (cast_expression "(code **)(*param_1 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x18)" (( "(") (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x18")) () ")")))) (== "==") (cast_expression "(code *)PTR_FUN_0038efcc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_0038efcc"))) () ")")) (compound_statement "{\n    return param_2;\n  }" ({ "{") (return_statement "return param_2;" (return "return") (identifier "param_2") (; ";")) (} "}"))) (expression_statement "uVar1 = (**(code **)(*param_1 + 0x18))(param_1,(int)(char)param_2);" (assignment_expression "uVar1 = (**(code **)(*param_1 + 0x18))(param_1,(int)(char)param_2)" (identifier "uVar1") (= "=") (call_expression "(**(code **)(*param_1 + 0x18))(param_1,(int)(char)param_2)" (parenthesized_expression "(**(code **)(*param_1 + 0x18))" (( "(") (pointer_expression "**(code **)(*param_1 + 0x18)" (* "*") (pointer_expression "*(code **)(*param_1 + 0x18)" (* "*") (cast_expression "(code **)(*param_1 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x18)" (( "(") (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (argument_list "(param_1,(int)(char)param_2)" (( "(") (identifier "param_1") (, ",") (cast_expression "(int)(char)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)param_2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "param_2"))) () ")")))) (; ";")) (return_statement "return uVar1;" (return "return") (identifier "uVar1") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* std::ctype<char>::widen(char) const [clone .part.25] */

type_1 __thiscall std::type_2<char>::function_1(type_2<char> *this,char param_1)

{
  type_2<var_1> *in_EAX;
  type_1 uVar1;
  type_1 in_EDX;
  
  var_2(in_EAX);
  if (*(type_3 **)(*(int *)in_EAX + 0x18) == (type_3 *)PTR_do_widen_0038efcc) {
    return in_EDX;
  }
  uVar1 = (**(type_3 **)(*(int *)in_EAX + 0x18))();
  return uVar1;
}


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

undefined4 __regparm3 MASKED(int *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  FUN_0022ccc0(param_1);
  if (*(code **)(*param_1 + 0x18) == (code *)PTR_FUN_0038efcc) {
    return param_2;
  }
  uVar1 = (**(code **)(*param_1 + 0x18))(param_1,(int)(char)param_2);
  return uVar1;
}

