
/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

void script_set_entry(void *closurev,char *entry,size_t length)

{
  string arg;
  
  arg._M_dataplus._M_p = (pointer)&arg.field_2;
  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
  _M_construct<char_const*>(&arg,"--entry=","",0);
  if (length <= 0x7fffffff - arg._M_string_length) {
                    /* try { // try from 0016c244 to 0016c288 has its CatchHandler @ 0016c289 */
    std::string::_M_append((string *)&arg,entry,length);
    script_parse_option(closurev,arg._M_dataplus._M_p,arg._M_string_length);
    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
         *)arg._M_dataplus._M_p != &arg.field_2) {
      operator_delete(arg._M_dataplus._M_p);
    }
    return;
  }
                    /* WARNING: Subroutine does not return */
  std::__throw_length_error("basic_string::append");
}



/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

void FUN_0016c1f0(undefined4 param_1,undefined4 param_2,uint param_3)

{
  undefined1 *local_34;
  int local_30;
  undefined1 local_2c [28];
  
  local_34 = local_2c;
  FUN_00050e40(&local_34,"--entry=","",0);
  if (param_3 <= 0x7fffffffU - local_30) {
                    /* try { // try from 0016c244 to 0016c288 has its CatchHandler @ 0016c289 */
    FUN_001f05c0(&local_34,param_2,param_3);
    FUN_0016aca0(param_1,local_34,local_30);
    if (local_34 != local_2c) {
      FUN_001e6db0(local_34);
    }
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0022c7a0("basic_string::append");
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
LEA ECX,[EBP + -0x30]
LEA EDI,[EBP + -0x28]
CALL 0x000559ea
ADD ESI,0x222e00
PUSH EBX
SUB ESP,0x3c
MOV EBX,dword ptr [EBP + 0x10]
MOV dword ptr [EBP + -0x3c],ECX
PUSH 0x0
MOV dword ptr [EBP + -0x30],EDI
LEA EAX,[ESI + 0xfff0928c]
PUSH EAX
LEA EAX,[ESI + 0xfff09284]
PUSH EAX
PUSH ECX
CALL 0x00050e40
MOV EAX,0x7fffffff
SUB EAX,dword ptr [EBP + -0x2c]
ADD ESP,0x10
CMP EBX,EAX
JA 0x0016c278
SUB ESP,0x4
PUSH EBX
MOV EBX,ESI
PUSH dword ptr [EBP + 0xc]
PUSH dword ptr [EBP + -0x3c]
CALL 0x001f05c0
ADD ESP,0xc
PUSH dword ptr [EBP + -0x2c]
PUSH dword ptr [EBP + -0x30]
PUSH dword ptr [EBP + 0x8]
CALL 0x0016aca0
MOV EAX,dword ptr [EBP + -0x30]
ADD ESP,0x10
CMP EAX,EDI
JZ 0x0016c270
SUB ESP,0xc
PUSH EAX
CALL 0x001e6db0
ADD ESP,0x10
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0xc
LEA EAX,[ESI + 0xffef7be2]
MOV EBX,ESI
PUSH EAX
CALL 0x0022c7a0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n\nvoid FUN_0016c1f0(undefined4 param_1,undefined4 param_2,uint param_3)\n\n{\n  undefined1 *local_34;\n  int local_30;\n  undefined1 local_2c [28];\n  \n  local_34 = local_2c;\n  FUN_00050e40(&local_34,"--entry=","",0);\n  if (param_3 <= 0x7fffffffU - local_30) {\n                    /* try { // try from 0016c244 to 0016c288 has its CatchHandler @ 0016c289 */\n    FUN_001f05c0(&local_34,param_2,param_3);\n    FUN_0016aca0(param_1,local_34,local_30);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0022c7a0("basic_string::append");\n}\n\n" comment (function_definition "void FUN_0016c1f0(undefined4 param_1,undefined4 param_2,uint param_3)\n\n{\n  undefined1 *local_34;\n  int local_30;\n  undefined1 local_2c [28];\n  \n  local_34 = local_2c;\n  FUN_00050e40(&local_34,"--entry=","",0);\n  if (param_3 <= 0x7fffffffU - local_30) {\n                    /* try { // try from 0016c244 to 0016c288 has its CatchHandler @ 0016c289 */\n    FUN_001f05c0(&local_34,param_2,param_3);\n    FUN_0016aca0(param_1,local_34,local_30);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0022c7a0("basic_string::append");\n}" primitive_type (function_declarator "FUN_0016c1f0(undefined4 param_1,undefined4 param_2,uint param_3)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,uint param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  undefined1 *local_34;\n  int local_30;\n  undefined1 local_2c [28];\n  \n  local_34 = local_2c;\n  FUN_00050e40(&local_34,"--entry=","",0);\n  if (param_3 <= 0x7fffffffU - local_30) {\n                    /* try { // try from 0016c244 to 0016c288 has its CatchHandler @ 0016c289 */\n    FUN_001f05c0(&local_34,param_2,param_3);\n    FUN_0016aca0(param_1,local_34,local_30);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0022c7a0("basic_string::append");\n}" { (declaration "undefined1 *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" identifier = identifier) ;) (expression_statement "FUN_00050e40(&local_34,"--entry=","",0);" (call_expression "FUN_00050e40(&local_34,"--entry=","",0)" identifier (argument_list "(&local_34,"--entry=","",0)" ( (pointer_expression "&local_34" & identifier) , (string_literal ""--entry="" " string_content ") , (string_literal """" " ") , number_literal ))) ;) (if_statement "if (param_3 <= 0x7fffffffU - local_30) {\n                    /* try { // try from 0016c244 to 0016c288 has its CatchHandler @ 0016c289 */\n    FUN_001f05c0(&local_34,param_2,param_3);\n    FUN_0016aca0(param_1,local_34,local_30);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    return;\n  }" if (parenthesized_expression "(param_3 <= 0x7fffffffU - local_30)" ( (binary_expression "param_3 <= 0x7fffffffU - local_30" identifier <= (binary_expression "0x7fffffffU - local_30" number_literal - identifier)) )) (compound_statement "{\n                    /* try { // try from 0016c244 to 0016c288 has its CatchHandler @ 0016c289 */\n    FUN_001f05c0(&local_34,param_2,param_3);\n    FUN_0016aca0(param_1,local_34,local_30);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    return;\n  }" { comment (expression_statement "FUN_001f05c0(&local_34,param_2,param_3);" (call_expression "FUN_001f05c0(&local_34,param_2,param_3)" identifier (argument_list "(&local_34,param_2,param_3)" ( (pointer_expression "&local_34" & identifier) , identifier , identifier ))) ;) (expression_statement "FUN_0016aca0(param_1,local_34,local_30);" (call_expression "FUN_0016aca0(param_1,local_34,local_30)" identifier (argument_list "(param_1,local_34,local_30)" ( identifier , identifier , identifier ))) ;) (if_statement "if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }" if (parenthesized_expression "(local_34 != local_2c)" ( (binary_expression "local_34 != local_2c" identifier != identifier) )) (compound_statement "{\n      FUN_001e6db0(local_34);\n    }" { (expression_statement "FUN_001e6db0(local_34);" (call_expression "FUN_001e6db0(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) })) (return_statement "return;" return ;) })) comment (expression_statement "FUN_0022c7a0("basic_string::append");" (call_expression "FUN_0022c7a0("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n\nvoid script_set_entry(void *closurev,char *entry,size_t length)\n\n{\n  string arg;\n  \n  arg._M_dataplus._M_p = (pointer)&arg.field_2;\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&arg,"--entry=","",0);\n  if (length <= 0x7fffffff - arg._M_string_length) {\n                    /* try { // try from 0016c244 to 0016c288 has its CatchHandler @ 0016c289 */\n    std::string::_M_append((string *)&arg,entry,length);\n    script_parse_option(closurev,arg._M_dataplus._M_p,arg._M_string_length);\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)arg._M_dataplus._M_p != &arg.field_2) {\n      operator_delete(arg._M_dataplus._M_p);\n    }\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  std::__throw_length_error("basic_string::append");\n}\n\n" comment (function_definition "void script_set_entry(void *closurev,char *entry,size_t length)\n\n{\n  string arg;\n  \n  arg._M_dataplus._M_p = (pointer)&arg.field_2;\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&arg,"--entry=","",0);\n  if (length <= 0x7fffffff - arg._M_string_length) {\n                    /* try { // try from 0016c244 to 0016c288 has its CatchHandler @ 0016c289 */\n    std::string::_M_append((string *)&arg,entry,length);\n    script_parse_option(closurev,arg._M_dataplus._M_p,arg._M_string_length);\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)arg._M_dataplus._M_p != &arg.field_2) {\n      operator_delete(arg._M_dataplus._M_p);\n    }\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  std::__throw_length_error("basic_string::append");\n}" primitive_type (function_declarator "script_set_entry(void *closurev,char *entry,size_t length)" identifier (parameter_list "(void *closurev,char *entry,size_t length)" ( (parameter_declaration "void *closurev" primitive_type (pointer_declarator "*closurev" * identifier)) , (parameter_declaration "char *entry" primitive_type (pointer_declarator "*entry" * identifier)) , (parameter_declaration "size_t length" primitive_type identifier) ))) (compound_statement "{\n  string arg;\n  \n  arg._M_dataplus._M_p = (pointer)&arg.field_2;\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&arg,"--entry=","",0);\n  if (length <= 0x7fffffff - arg._M_string_length) {\n                    /* try { // try from 0016c244 to 0016c288 has its CatchHandler @ 0016c289 */\n    std::string::_M_append((string *)&arg,entry,length);\n    script_parse_option(closurev,arg._M_dataplus._M_p,arg._M_string_length);\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)arg._M_dataplus._M_p != &arg.field_2) {\n      operator_delete(arg._M_dataplus._M_p);\n    }\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  std::__throw_length_error("basic_string::append");\n}" { (declaration "string arg;" type_identifier identifier ;) (expression_statement "arg._M_dataplus._M_p = (pointer)&arg.field_2;" (assignment_expression "arg._M_dataplus._M_p = (pointer)&arg.field_2" (field_expression "arg._M_dataplus._M_p" (field_expression "arg._M_dataplus" identifier . field_identifier) . field_identifier) = (binary_expression "(pointer)&arg.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "arg.field_2" identifier . field_identifier))) ;) (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&arg,"--entry=","",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*>(&arg,"--entry=","",0);" (binary_expression "_M_construct<char_const*>(&arg,"--entry=","",0)" (binary_expression "_M_construct<char_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&arg,"--entry=","",0)" ( (comma_expression "&arg,"--entry=","",0" (pointer_expression "&arg" & identifier) , (comma_expression ""--entry=","",0" (string_literal ""--entry="" " string_content ") , (comma_expression """,0" (string_literal """" " ") , number_literal))) ))) ;)) (if_statement "if (length <= 0x7fffffff - arg._M_string_length) {\n                    /* try { // try from 0016c244 to 0016c288 has its CatchHandler @ 0016c289 */\n    std::string::_M_append((string *)&arg,entry,length);\n    script_parse_option(closurev,arg._M_dataplus._M_p,arg._M_string_length);\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)arg._M_dataplus._M_p != &arg.field_2) {\n      operator_delete(arg._M_dataplus._M_p);\n    }\n    return;\n  }" if (parenthesized_expression "(length <= 0x7fffffff - arg._M_string_length)" ( (binary_expression "length <= 0x7fffffff - arg._M_string_length" identifier <= (binary_expression "0x7fffffff - arg._M_string_length" number_literal - (field_expression "arg._M_string_length" identifier . field_identifier))) )) (compound_statement "{\n                    /* try { // try from 0016c244 to 0016c288 has its CatchHandler @ 0016c289 */\n    std::string::_M_append((string *)&arg,entry,length);\n    script_parse_option(closurev,arg._M_dataplus._M_p,arg._M_string_length);\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)arg._M_dataplus._M_p != &arg.field_2) {\n      operator_delete(arg._M_dataplus._M_p);\n    }\n    return;\n  }" { comment (labeled_statement "std::string::_M_append((string *)&arg,entry,length);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_append((string *)&arg,entry,length);" statement_identifier : (ERROR ":" :) (expression_statement "_M_append((string *)&arg,entry,length);" (call_expression "_M_append((string *)&arg,entry,length)" identifier (argument_list "((string *)&arg,entry,length)" ( (cast_expression "(string *)&arg" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&arg" & identifier)) , identifier , identifier ))) ;))) (expression_statement "script_parse_option(closurev,arg._M_dataplus._M_p,arg._M_string_length);" (call_expression "script_parse_option(closurev,arg._M_dataplus._M_p,arg._M_string_length)" identifier (argument_list "(closurev,arg._M_dataplus._M_p,arg._M_string_length)" ( identifier , (field_expression "arg._M_dataplus._M_p" (field_expression "arg._M_dataplus" identifier . field_identifier) . field_identifier) , (field_expression "arg._M_string_length" identifier . field_identifier) ))) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)arg._M_dataplus._M_p != &arg.field_2) {\n      operator_delete(arg._M_dataplus._M_p);\n    }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)arg._M_dataplus._M_p != &arg.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)arg._M_dataplus._M_p != &arg.field_2)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n         *)arg._M_dataplus._M_p != &arg.field_2" (binary_expression "allocator<char>_>_9\n         *)arg._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n         *)arg._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "arg._M_dataplus._M_p" (field_expression "arg._M_dataplus" identifier . field_identifier) . field_identifier))) != (pointer_expression "&arg.field_2" & (field_expression "arg.field_2" identifier . field_identifier))) )) )) (compound_statement "{\n      operator_delete(arg._M_dataplus._M_p);\n    }" { (expression_statement "operator_delete(arg._M_dataplus._M_p);" (call_expression "operator_delete(arg._M_dataplus._M_p)" identifier (argument_list "(arg._M_dataplus._M_p)" ( (field_expression "arg._M_dataplus._M_p" (field_expression "arg._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;) })) (return_statement "return;" return ;) })) comment (labeled_statement "std::__throw_length_error("basic_string::append");" statement_identifier : (ERROR ":" :) (expression_statement "__throw_length_error("basic_string::append");" (call_expression "__throw_length_error("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;)) })))
(translation_unit "void FUN_0016c1f0(undefined4 param_1,undefined4 param_2,uint param_3)\n\n{\n  undefined1 *local_34;\n  int local_30;\n  undefined1 local_2c [28];\n  \n  local_34 = local_2c;\n  FUN_00050e40(&local_34,"--entry=","",0);\n  if (param_3 <= 0x7fffffffU - local_30) {\n                    \n    FUN_001f05c0(&local_34,param_2,param_3);\n    FUN_0016aca0(param_1,local_34,local_30);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    return;\n  }\n                    \n  FUN_0022c7a0("basic_string::append");\n}\n\n" (function_definition "void FUN_0016c1f0(undefined4 param_1,undefined4 param_2,uint param_3)\n\n{\n  undefined1 *local_34;\n  int local_30;\n  undefined1 local_2c [28];\n  \n  local_34 = local_2c;\n  FUN_00050e40(&local_34,"--entry=","",0);\n  if (param_3 <= 0x7fffffffU - local_30) {\n                    \n    FUN_001f05c0(&local_34,param_2,param_3);\n    FUN_0016aca0(param_1,local_34,local_30);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    return;\n  }\n                    \n  FUN_0022c7a0("basic_string::append");\n}" primitive_type (function_declarator "FUN_0016c1f0(undefined4 param_1,undefined4 param_2,uint param_3)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,uint param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  undefined1 *local_34;\n  int local_30;\n  undefined1 local_2c [28];\n  \n  local_34 = local_2c;\n  FUN_00050e40(&local_34,"--entry=","",0);\n  if (param_3 <= 0x7fffffffU - local_30) {\n                    \n    FUN_001f05c0(&local_34,param_2,param_3);\n    FUN_0016aca0(param_1,local_34,local_30);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    return;\n  }\n                    \n  FUN_0022c7a0("basic_string::append");\n}" { (declaration "undefined1 *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" identifier = identifier) ;) (expression_statement "FUN_00050e40(&local_34,"--entry=","",0);" (call_expression "FUN_00050e40(&local_34,"--entry=","",0)" identifier (argument_list "(&local_34,"--entry=","",0)" ( (pointer_expression "&local_34" & identifier) , (string_literal ""--entry="" " string_content ") , (string_literal """" " ") , number_literal ))) ;) (if_statement "if (param_3 <= 0x7fffffffU - local_30) {\n                    \n    FUN_001f05c0(&local_34,param_2,param_3);\n    FUN_0016aca0(param_1,local_34,local_30);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    return;\n  }" if (parenthesized_expression "(param_3 <= 0x7fffffffU - local_30)" ( (binary_expression "param_3 <= 0x7fffffffU - local_30" identifier <= (binary_expression "0x7fffffffU - local_30" number_literal - identifier)) )) (compound_statement "{\n                    \n    FUN_001f05c0(&local_34,param_2,param_3);\n    FUN_0016aca0(param_1,local_34,local_30);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    return;\n  }" { (expression_statement "FUN_001f05c0(&local_34,param_2,param_3);" (call_expression "FUN_001f05c0(&local_34,param_2,param_3)" identifier (argument_list "(&local_34,param_2,param_3)" ( (pointer_expression "&local_34" & identifier) , identifier , identifier ))) ;) (expression_statement "FUN_0016aca0(param_1,local_34,local_30);" (call_expression "FUN_0016aca0(param_1,local_34,local_30)" identifier (argument_list "(param_1,local_34,local_30)" ( identifier , identifier , identifier ))) ;) (if_statement "if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }" if (parenthesized_expression "(local_34 != local_2c)" ( (binary_expression "local_34 != local_2c" identifier != identifier) )) (compound_statement "{\n      FUN_001e6db0(local_34);\n    }" { (expression_statement "FUN_001e6db0(local_34);" (call_expression "FUN_001e6db0(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) })) (return_statement "return;" return ;) })) (expression_statement "FUN_0022c7a0("basic_string::append");" (call_expression "FUN_0022c7a0("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (string_literal " string_content ") , (string_literal " ") , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression LIT - IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })))
(function_definition "void FUN_0016c1f0(undefined4 param_1,undefined4 param_2,uint param_3)\n\n{\n  undefined1 *local_34;\n  int local_30;\n  undefined1 local_2c [28];\n  \n  local_34 = local_2c;\n  FUN_00050e40(&local_34,"--entry=","",0);\n  if (param_3 <= 0x7fffffffU - local_30) {\n                    \n    FUN_001f05c0(&local_34,param_2,param_3);\n    FUN_0016aca0(param_1,local_34,local_30);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    return;\n  }\n                    \n  FUN_0022c7a0("basic_string::append");\n}" (primitive_type "void") (function_declarator "FUN_0016c1f0(undefined4 param_1,undefined4 param_2,uint param_3)" (identifier "FUN_0016c1f0") (parameter_list "(undefined4 param_1,undefined4 param_2,uint param_3)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) () ")"))) (compound_statement "{\n  undefined1 *local_34;\n  int local_30;\n  undefined1 local_2c [28];\n  \n  local_34 = local_2c;\n  FUN_00050e40(&local_34,"--entry=","",0);\n  if (param_3 <= 0x7fffffffU - local_30) {\n                    \n    FUN_001f05c0(&local_34,param_2,param_3);\n    FUN_0016aca0(param_1,local_34,local_30);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    return;\n  }\n                    \n  FUN_0022c7a0("basic_string::append");\n}" ({ "{") (declaration "undefined1 *local_34;" (type_identifier "undefined1") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (declaration "undefined1 local_2c [28];" (type_identifier "undefined1") (array_declarator "local_2c [28]" (identifier "local_2c") ([ "[") (number_literal "28") (] "]")) (; ";")) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" (identifier "local_34") (= "=") (identifier "local_2c")) (; ";")) (expression_statement "FUN_00050e40(&local_34,"--entry=","",0);" (call_expression "FUN_00050e40(&local_34,"--entry=","",0)" (identifier "FUN_00050e40") (argument_list "(&local_34,"--entry=","",0)" (( "(") (pointer_expression "&local_34" (& "&") (identifier "local_34")) (, ",") (string_literal ""--entry="" (" """) (string_content "--entry=") (" """)) (, ",") (string_literal """" (" """) (" """)) (, ",") (number_literal "0") () ")"))) (; ";")) (if_statement "if (param_3 <= 0x7fffffffU - local_30) {\n                    \n    FUN_001f05c0(&local_34,param_2,param_3);\n    FUN_0016aca0(param_1,local_34,local_30);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    return;\n  }" (if "if") (parenthesized_expression "(param_3 <= 0x7fffffffU - local_30)" (( "(") (binary_expression "param_3 <= 0x7fffffffU - local_30" (identifier "param_3") (<= "<=") (binary_expression "0x7fffffffU - local_30" (number_literal "0x7fffffffU") (- "-") (identifier "local_30"))) () ")")) (compound_statement "{\n                    \n    FUN_001f05c0(&local_34,param_2,param_3);\n    FUN_0016aca0(param_1,local_34,local_30);\n    if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }\n    return;\n  }" ({ "{") (expression_statement "FUN_001f05c0(&local_34,param_2,param_3);" (call_expression "FUN_001f05c0(&local_34,param_2,param_3)" (identifier "FUN_001f05c0") (argument_list "(&local_34,param_2,param_3)" (( "(") (pointer_expression "&local_34" (& "&") (identifier "local_34")) (, ",") (identifier "param_2") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "FUN_0016aca0(param_1,local_34,local_30);" (call_expression "FUN_0016aca0(param_1,local_34,local_30)" (identifier "FUN_0016aca0") (argument_list "(param_1,local_34,local_30)" (( "(") (identifier "param_1") (, ",") (identifier "local_34") (, ",") (identifier "local_30") () ")"))) (; ";")) (if_statement "if (local_34 != local_2c) {\n      FUN_001e6db0(local_34);\n    }" (if "if") (parenthesized_expression "(local_34 != local_2c)" (( "(") (binary_expression "local_34 != local_2c" (identifier "local_34") (!= "!=") (identifier "local_2c")) () ")")) (compound_statement "{\n      FUN_001e6db0(local_34);\n    }" ({ "{") (expression_statement "FUN_001e6db0(local_34);" (call_expression "FUN_001e6db0(local_34)" (identifier "FUN_001e6db0") (argument_list "(local_34)" (( "(") (identifier "local_34") () ")"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_0022c7a0("basic_string::append");" (call_expression "FUN_0022c7a0("basic_string::append")" (identifier "FUN_0022c7a0") (argument_list "("basic_string::append")" (( "(") (string_literal ""basic_string::append"" (" """) (string_content "basic_string::append") (" """)) () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

void function_1(void *closurev,char *entry,size_t var_3)

{
  type_1 arg;
  
  arg._M_dataplus._M_p = (pointer)&arg.field_2;
  std::__cxx11::basic_string<var_7,_std::char_traits<var_7>,_std::var_6<var_7>var_8>::
  var_1<var_2*>(&arg,"--entry=","",0);
  if (var_3 <= 0x7fffffff - arg._M_string_length) {
                    /* try { // try from 0016c244 to 0016c288 has its CatchHandler @ 0016c289 */
    std::string::var_4((type_1 *)&arg,entry,var_3);
    var_5(closurev,arg._M_dataplus._M_p,arg._M_string_length);
    if ((anon_union_16_2_edb7204a_for_basic_string<var_7,_std::char_traits<var_7>,_std::var_6<var_7>var_8>var_9
         *)arg._M_dataplus._M_p != &arg.field_2) {
      var_10(arg._M_dataplus._M_p);
    }
    return;
  }
                    /* WARNING: Subroutine does not return */
  std::var_11("basic_string::append");
}


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

/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

void MASKED(undefined4 param_1,undefined4 param_2,uint param_3)

{
  undefined1 *local_34;
  int local_30;
  undefined1 local_2c [28];
  
  local_34 = local_2c;
  FUN_00050e40(&local_34,"--entry=","",0);
  if (param_3 <= 0x7fffffffU - local_30) {
                    /* try { // try from 0016c244 to 0016c288 has its CatchHandler @ 0016c289 */
    FUN_001f05c0(&local_34,param_2,param_3);
    FUN_0016aca0(param_1,local_34,local_30);
    if (local_34 != local_2c) {
      FUN_001e6db0(local_34);
    }
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0022c7a0("basic_string::append");
}

