
/* std::__facet_shims::(anonymous
   namespace)::money_get_shim<char>::do_get(std::istreambuf_iterator<char, std::char_traits<char> >,
   std::istreambuf_iterator<char, std::char_traits<char> >, bool, std::ios_base&,
   std::_Ios_Iostate&, std::string&) const [clone .cold.28] */

void std::__facet_shims::(anonymous_namespace)::money_get_shim<char>::do_get(void)

{
  allocator *paVar1;
  long unaff_RBP;
  
  paVar1 = (allocator *)(*(long *)(unaff_RBP + -0x68) + -0x18);
  if (paVar1 != (allocator *)PTR__S_empty_rep_storage_004b9c38) {
    std::string::_Rep::_M_dispose(paVar1);
  }
  if (*(code **)(unaff_RBP + -0x40) != (code *)0x0) {
    (**(code **)(unaff_RBP + -0x40))();
  }
                    /* WARNING: Subroutine does not return */
  _Unwind_Resume();
}



void FUN_00159238(void)

{
  long unaff_RBP;
  
  if ((undefined *)(*(long *)(unaff_RBP + -0x68) + -0x18) != PTR_DAT_004b9c38) {
    FUN_00159158();
  }
  if (*(code **)(unaff_RBP + -0x40) != (code *)0x0) {
    (**(code **)(unaff_RBP + -0x40))();
  }
                    /* WARNING: Subroutine does not return */
  FUN_003c66b0();
}


MOV RAX,qword ptr [RBP + -0x68]
LEA RDI,[RAX + -0x18]
CMP RDI,qword ptr [0x004b9c38]
JZ 0x00159251
MOV RSI,R14
CALL 0x00159158
MOV RAX,qword ptr [RBP + -0x40]
TEST RAX,RAX
JZ 0x0015925f
MOV RDI,R12
CALL RAX
MOV RDI,RBX
CALL 0x003c66b0
(translation_unit "void FUN_00159238(void)\n\n{\n  long unaff_RBP;\n  \n  if ((undefined *)(*(long *)(unaff_RBP + -0x68) + -0x18) != PTR_DAT_004b9c38) {\n    FUN_00159158();\n  }\n  if (*(code **)(unaff_RBP + -0x40) != (code *)0x0) {\n    (**(code **)(unaff_RBP + -0x40))();\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_003c66b0();\n}\n\n" (function_definition "void FUN_00159238(void)\n\n{\n  long unaff_RBP;\n  \n  if ((undefined *)(*(long *)(unaff_RBP + -0x68) + -0x18) != PTR_DAT_004b9c38) {\n    FUN_00159158();\n  }\n  if (*(code **)(unaff_RBP + -0x40) != (code *)0x0) {\n    (**(code **)(unaff_RBP + -0x40))();\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_003c66b0();\n}" primitive_type (function_declarator "FUN_00159238(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  long unaff_RBP;\n  \n  if ((undefined *)(*(long *)(unaff_RBP + -0x68) + -0x18) != PTR_DAT_004b9c38) {\n    FUN_00159158();\n  }\n  if (*(code **)(unaff_RBP + -0x40) != (code *)0x0) {\n    (**(code **)(unaff_RBP + -0x40))();\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_003c66b0();\n}" { (declaration "long unaff_RBP;" (sized_type_specifier "long" long) identifier ;) (if_statement "if ((undefined *)(*(long *)(unaff_RBP + -0x68) + -0x18) != PTR_DAT_004b9c38) {\n    FUN_00159158();\n  }" if (parenthesized_expression "((undefined *)(*(long *)(unaff_RBP + -0x68) + -0x18) != PTR_DAT_004b9c38)" ( (binary_expression "(undefined *)(*(long *)(unaff_RBP + -0x68) + -0x18) != PTR_DAT_004b9c38" (cast_expression "(undefined *)(*(long *)(unaff_RBP + -0x68) + -0x18)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(unaff_RBP + -0x68) + -0x18)" ( (binary_expression "*(long *)(unaff_RBP + -0x68) + -0x18" (pointer_expression "*(long *)(unaff_RBP + -0x68)" * (cast_expression "(long *)(unaff_RBP + -0x68)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_RBP + -0x68)" ( (binary_expression "unaff_RBP + -0x68" identifier + number_literal) )))) + number_literal) ))) != identifier) )) (compound_statement "{\n    FUN_00159158();\n  }" { (expression_statement "FUN_00159158();" (call_expression "FUN_00159158()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (*(code **)(unaff_RBP + -0x40) != (code *)0x0) {\n    (**(code **)(unaff_RBP + -0x40))();\n  }" if (parenthesized_expression "(*(code **)(unaff_RBP + -0x40) != (code *)0x0)" ( (binary_expression "*(code **)(unaff_RBP + -0x40) != (code *)0x0" (pointer_expression "*(code **)(unaff_RBP + -0x40)" * (cast_expression "(code **)(unaff_RBP + -0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_RBP + -0x40)" ( (binary_expression "unaff_RBP + -0x40" identifier + number_literal) )))) != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (**(code **)(unaff_RBP + -0x40))();\n  }" { (expression_statement "(**(code **)(unaff_RBP + -0x40))();" (call_expression "(**(code **)(unaff_RBP + -0x40))()" (parenthesized_expression "(**(code **)(unaff_RBP + -0x40))" ( (pointer_expression "**(code **)(unaff_RBP + -0x40)" * (pointer_expression "*(code **)(unaff_RBP + -0x40)" * (cast_expression "(code **)(unaff_RBP + -0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_RBP + -0x40)" ( (binary_expression "unaff_RBP + -0x40" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) })) comment (expression_statement "FUN_003c66b0();" (call_expression "FUN_003c66b0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* std::__facet_shims::(anonymous\n   namespace)::money_get_shim<char>::do_get(std::istreambuf_iterator<char, std::char_traits<char> >,\n   std::istreambuf_iterator<char, std::char_traits<char> >, bool, std::ios_base&,\n   std::_Ios_Iostate&, std::string&) const [clone .cold.28] */\n\nvoid std::__facet_shims::(anonymous_namespace)::money_get_shim<char>::do_get(void)\n\n{\n  allocator *paVar1;\n  long unaff_RBP;\n  \n  paVar1 = (allocator *)(*(long *)(unaff_RBP + -0x68) + -0x18);\n  if (paVar1 != (allocator *)PTR__S_empty_rep_storage_004b9c38) {\n    std::string::_Rep::_M_dispose(paVar1);\n  }\n  if (*(code **)(unaff_RBP + -0x40) != (code *)0x0) {\n    (**(code **)(unaff_RBP + -0x40))();\n  }\n                    /* WARNING: Subroutine does not return */\n  _Unwind_Resume();\n}\n\n" comment (function_definition "void std::__facet_shims::(anonymous_namespace)::money_get_shim<char>::do_get(void)\n\n{\n  allocator *paVar1;\n  long unaff_RBP;\n  \n  paVar1 = (allocator *)(*(long *)(unaff_RBP + -0x68) + -0x18);\n  if (paVar1 != (allocator *)PTR__S_empty_rep_storage_004b9c38) {\n    std::string::_Rep::_M_dispose(paVar1);\n  }\n  if (*(code **)(unaff_RBP + -0x40) != (code *)0x0) {\n    (**(code **)(unaff_RBP + -0x40))();\n  }\n                    /* WARNING: Subroutine does not return */\n  _Unwind_Resume();\n}" primitive_type (ERROR "std::__facet_shims::(anonymous_namespace)::money_get_shim<char>::" identifier : : identifier : : ( identifier ) : : identifier < primitive_type > : :) (function_declarator "do_get(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  allocator *paVar1;\n  long unaff_RBP;\n  \n  paVar1 = (allocator *)(*(long *)(unaff_RBP + -0x68) + -0x18);\n  if (paVar1 != (allocator *)PTR__S_empty_rep_storage_004b9c38) {\n    std::string::_Rep::_M_dispose(paVar1);\n  }\n  if (*(code **)(unaff_RBP + -0x40) != (code *)0x0) {\n    (**(code **)(unaff_RBP + -0x40))();\n  }\n                    /* WARNING: Subroutine does not return */\n  _Unwind_Resume();\n}" { (declaration "allocator *paVar1;" type_identifier (pointer_declarator "*paVar1" * identifier) ;) (declaration "long unaff_RBP;" (sized_type_specifier "long" long) identifier ;) (expression_statement "paVar1 = (allocator *)(*(long *)(unaff_RBP + -0x68) + -0x18);" (assignment_expression "paVar1 = (allocator *)(*(long *)(unaff_RBP + -0x68) + -0x18)" identifier = (cast_expression "(allocator *)(*(long *)(unaff_RBP + -0x68) + -0x18)" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(unaff_RBP + -0x68) + -0x18)" ( (binary_expression "*(long *)(unaff_RBP + -0x68) + -0x18" (pointer_expression "*(long *)(unaff_RBP + -0x68)" * (cast_expression "(long *)(unaff_RBP + -0x68)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_RBP + -0x68)" ( (binary_expression "unaff_RBP + -0x68" identifier + number_literal) )))) + number_literal) )))) ;) (if_statement "if (paVar1 != (allocator *)PTR__S_empty_rep_storage_004b9c38) {\n    std::string::_Rep::_M_dispose(paVar1);\n  }" if (parenthesized_expression "(paVar1 != (allocator *)PTR__S_empty_rep_storage_004b9c38)" ( (binary_expression "paVar1 != (allocator *)PTR__S_empty_rep_storage_004b9c38" identifier != (cast_expression "(allocator *)PTR__S_empty_rep_storage_004b9c38" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    std::string::_Rep::_M_dispose(paVar1);\n  }" { (labeled_statement "std::string::_Rep::_M_dispose(paVar1);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_Rep::_M_dispose(paVar1);" statement_identifier : (ERROR ":" :) (labeled_statement "_Rep::_M_dispose(paVar1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_dispose(paVar1);" (call_expression "_M_dispose(paVar1)" identifier (argument_list "(paVar1)" ( identifier ))) ;)))) })) (if_statement "if (*(code **)(unaff_RBP + -0x40) != (code *)0x0) {\n    (**(code **)(unaff_RBP + -0x40))();\n  }" if (parenthesized_expression "(*(code **)(unaff_RBP + -0x40) != (code *)0x0)" ( (binary_expression "*(code **)(unaff_RBP + -0x40) != (code *)0x0" (pointer_expression "*(code **)(unaff_RBP + -0x40)" * (cast_expression "(code **)(unaff_RBP + -0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_RBP + -0x40)" ( (binary_expression "unaff_RBP + -0x40" identifier + number_literal) )))) != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (**(code **)(unaff_RBP + -0x40))();\n  }" { (expression_statement "(**(code **)(unaff_RBP + -0x40))();" (call_expression "(**(code **)(unaff_RBP + -0x40))()" (parenthesized_expression "(**(code **)(unaff_RBP + -0x40))" ( (pointer_expression "**(code **)(unaff_RBP + -0x40)" * (pointer_expression "*(code **)(unaff_RBP + -0x40)" * (cast_expression "(code **)(unaff_RBP + -0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_RBP + -0x40)" ( (binary_expression "unaff_RBP + -0x40" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) })) comment (expression_statement "_Unwind_Resume();" (call_expression "_Unwind_Resume()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "void FUN_00159238(void)\n\n{\n  long unaff_RBP;\n  \n  if ((undefined *)(*(long *)(unaff_RBP + -0x68) + -0x18) != PTR_DAT_004b9c38) {\n    FUN_00159158();\n  }\n  if (*(code **)(unaff_RBP + -0x40) != (code *)0x0) {\n    (**(code **)(unaff_RBP + -0x40))();\n  }\n                    \n  FUN_003c66b0();\n}\n\n" (function_definition "void FUN_00159238(void)\n\n{\n  long unaff_RBP;\n  \n  if ((undefined *)(*(long *)(unaff_RBP + -0x68) + -0x18) != PTR_DAT_004b9c38) {\n    FUN_00159158();\n  }\n  if (*(code **)(unaff_RBP + -0x40) != (code *)0x0) {\n    (**(code **)(unaff_RBP + -0x40))();\n  }\n                    \n  FUN_003c66b0();\n}" primitive_type (function_declarator "FUN_00159238(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  long unaff_RBP;\n  \n  if ((undefined *)(*(long *)(unaff_RBP + -0x68) + -0x18) != PTR_DAT_004b9c38) {\n    FUN_00159158();\n  }\n  if (*(code **)(unaff_RBP + -0x40) != (code *)0x0) {\n    (**(code **)(unaff_RBP + -0x40))();\n  }\n                    \n  FUN_003c66b0();\n}" { (declaration "long unaff_RBP;" (sized_type_specifier "long" long) identifier ;) (if_statement "if ((undefined *)(*(long *)(unaff_RBP + -0x68) + -0x18) != PTR_DAT_004b9c38) {\n    FUN_00159158();\n  }" if (parenthesized_expression "((undefined *)(*(long *)(unaff_RBP + -0x68) + -0x18) != PTR_DAT_004b9c38)" ( (binary_expression "(undefined *)(*(long *)(unaff_RBP + -0x68) + -0x18) != PTR_DAT_004b9c38" (cast_expression "(undefined *)(*(long *)(unaff_RBP + -0x68) + -0x18)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(unaff_RBP + -0x68) + -0x18)" ( (binary_expression "*(long *)(unaff_RBP + -0x68) + -0x18" (pointer_expression "*(long *)(unaff_RBP + -0x68)" * (cast_expression "(long *)(unaff_RBP + -0x68)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_RBP + -0x68)" ( (binary_expression "unaff_RBP + -0x68" identifier + number_literal) )))) + number_literal) ))) != identifier) )) (compound_statement "{\n    FUN_00159158();\n  }" { (expression_statement "FUN_00159158();" (call_expression "FUN_00159158()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (*(code **)(unaff_RBP + -0x40) != (code *)0x0) {\n    (**(code **)(unaff_RBP + -0x40))();\n  }" if (parenthesized_expression "(*(code **)(unaff_RBP + -0x40) != (code *)0x0)" ( (binary_expression "*(code **)(unaff_RBP + -0x40) != (code *)0x0" (pointer_expression "*(code **)(unaff_RBP + -0x40)" * (cast_expression "(code **)(unaff_RBP + -0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_RBP + -0x40)" ( (binary_expression "unaff_RBP + -0x40" identifier + number_literal) )))) != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (**(code **)(unaff_RBP + -0x40))();\n  }" { (expression_statement "(**(code **)(unaff_RBP + -0x40))();" (call_expression "(**(code **)(unaff_RBP + -0x40))()" (parenthesized_expression "(**(code **)(unaff_RBP + -0x40))" ( (pointer_expression "**(code **)(unaff_RBP + -0x40)" * (pointer_expression "*(code **)(unaff_RBP + -0x40)" * (cast_expression "(code **)(unaff_RBP + -0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_RBP + -0x40)" ( (binary_expression "unaff_RBP + -0x40" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) })) (expression_statement "FUN_003c66b0();" (call_expression "FUN_003c66b0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "void FUN_00159238(void)\n\n{\n  long unaff_RBP;\n  \n  if ((undefined *)(*(long *)(unaff_RBP + -0x68) + -0x18) != PTR_DAT_004b9c38) {\n    FUN_00159158();\n  }\n  if (*(code **)(unaff_RBP + -0x40) != (code *)0x0) {\n    (**(code **)(unaff_RBP + -0x40))();\n  }\n                    \n  FUN_003c66b0();\n}" (primitive_type "void") (function_declarator "FUN_00159238(void)" (identifier "FUN_00159238") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  long unaff_RBP;\n  \n  if ((undefined *)(*(long *)(unaff_RBP + -0x68) + -0x18) != PTR_DAT_004b9c38) {\n    FUN_00159158();\n  }\n  if (*(code **)(unaff_RBP + -0x40) != (code *)0x0) {\n    (**(code **)(unaff_RBP + -0x40))();\n  }\n                    \n  FUN_003c66b0();\n}" ({ "{") (declaration "long unaff_RBP;" (sized_type_specifier "long" (long "long")) (identifier "unaff_RBP") (; ";")) (if_statement "if ((undefined *)(*(long *)(unaff_RBP + -0x68) + -0x18) != PTR_DAT_004b9c38) {\n    FUN_00159158();\n  }" (if "if") (parenthesized_expression "((undefined *)(*(long *)(unaff_RBP + -0x68) + -0x18) != PTR_DAT_004b9c38)" (( "(") (binary_expression "(undefined *)(*(long *)(unaff_RBP + -0x68) + -0x18) != PTR_DAT_004b9c38" (cast_expression "(undefined *)(*(long *)(unaff_RBP + -0x68) + -0x18)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(unaff_RBP + -0x68) + -0x18)" (( "(") (binary_expression "*(long *)(unaff_RBP + -0x68) + -0x18" (pointer_expression "*(long *)(unaff_RBP + -0x68)" (* "*") (cast_expression "(long *)(unaff_RBP + -0x68)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_RBP + -0x68)" (( "(") (binary_expression "unaff_RBP + -0x68" (identifier "unaff_RBP") (+ "+") (number_literal "-0x68")) () ")")))) (+ "+") (number_literal "-0x18")) () ")"))) (!= "!=") (identifier "PTR_DAT_004b9c38")) () ")")) (compound_statement "{\n    FUN_00159158();\n  }" ({ "{") (expression_statement "FUN_00159158();" (call_expression "FUN_00159158()" (identifier "FUN_00159158") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (*(code **)(unaff_RBP + -0x40) != (code *)0x0) {\n    (**(code **)(unaff_RBP + -0x40))();\n  }" (if "if") (parenthesized_expression "(*(code **)(unaff_RBP + -0x40) != (code *)0x0)" (( "(") (binary_expression "*(code **)(unaff_RBP + -0x40) != (code *)0x0" (pointer_expression "*(code **)(unaff_RBP + -0x40)" (* "*") (cast_expression "(code **)(unaff_RBP + -0x40)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(unaff_RBP + -0x40)" (( "(") (binary_expression "unaff_RBP + -0x40" (identifier "unaff_RBP") (+ "+") (number_literal "-0x40")) () ")")))) (!= "!=") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    (**(code **)(unaff_RBP + -0x40))();\n  }" ({ "{") (expression_statement "(**(code **)(unaff_RBP + -0x40))();" (call_expression "(**(code **)(unaff_RBP + -0x40))()" (parenthesized_expression "(**(code **)(unaff_RBP + -0x40))" (( "(") (pointer_expression "**(code **)(unaff_RBP + -0x40)" (* "*") (pointer_expression "*(code **)(unaff_RBP + -0x40)" (* "*") (cast_expression "(code **)(unaff_RBP + -0x40)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(unaff_RBP + -0x40)" (( "(") (binary_expression "unaff_RBP + -0x40" (identifier "unaff_RBP") (+ "+") (number_literal "-0x40")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_003c66b0();" (call_expression "FUN_003c66b0()" (identifier "FUN_003c66b0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* std::__facet_shims::(anonymous
   namespace)::money_get_shim<char>::do_get(std::istreambuf_iterator<char, std::char_traits<char> >,
   std::istreambuf_iterator<char, std::char_traits<char> >, bool, std::ios_base&,
   std::_Ios_Iostate&, std::string&) const [clone .cold.28] */

void std::__facet_shims::(anonymous_namespace)::money_get_shim<char>::function_1(void)

{
  type_1 *var_2;
  long var_1;
  
  var_2 = (type_1 *)(*(long *)(var_1 + -0x68) + -0x18);
  if (var_2 != (type_1 *)PTR__S_empty_rep_storage_004b9c38) {
    std::string::_Rep::var_3(var_2);
  }
  if (*(type_2 **)(var_1 + -0x40) != (type_2 *)0x0) {
    (**(type_2 **)(var_1 + -0x40))();
  }
                    /* WARNING: Subroutine does not return */
  var_4();
}


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

void MASKED(void)

{
  long unaff_RBP;
  
  if ((undefined *)(*(long *)(unaff_RBP + -0x68) + -0x18) != PTR_DAT_004b9c38) {
    FUN_00159158();
  }
  if (*(code **)(unaff_RBP + -0x40) != (code *)0x0) {
    (**(code **)(unaff_RBP + -0x40))();
  }
                    /* WARNING: Subroutine does not return */
  FUN_003c66b0();
}

