
/* std::__facet_shims::(anonymous
   namespace)::money_put_shim<wchar_t>::do_put(std::ostreambuf_iterator<wchar_t,
   std::char_traits<wchar_t> >, bool, std::ios_base&, wchar_t, std::wstring const&) const */

undefined8
std::__facet_shims::(anonymous_namespace)::money_put_shim<wchar_t>::do_put
          (long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,undefined8 param_5,
          undefined4 param_6,wstring *param_7)

{
  undefined8 uVar1;
  wstring local_68 [8];
  undefined8 local_60;
  code *local_48;
  
  local_48 = (code *)0x0;
                    /* try { // try from 003148a8 to 003148ea has its CatchHandler @ 0031491c */
  std::wstring::wstring(local_68,param_7);
  local_60 = *(undefined8 *)(*(long *)param_7 + -0x18);
  local_48 = __destroy_string<wchar_t>;
  uVar1 = __money_put<wchar_t>
                    (*(__facet_shims **)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0
                     ,local_68);
  if (local_48 != (code *)0x0) {
    (*local_48)(local_68);
  }
  return uVar1;
}



undefined8
FUN_00314870(long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,
            undefined8 param_5,undefined4 param_6,long *param_7)

{
  undefined8 uVar1;
  undefined1 local_68 [8];
  undefined8 local_60;
  code *local_48;
  
  local_48 = (code *)0x0;
                    /* try { // try from 003148a8 to 003148ea has its CatchHandler @ 0031491c */
  FUN_00357040(local_68,param_7);
  local_60 = *(undefined8 *)(*param_7 + -0x18);
  local_48 = FUN_00315930;
  uVar1 = FUN_00312fa0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0,
                       local_68);
  if (local_48 != (code *)0x0) {
    (*local_48)(local_68);
  }
  return uVar1;
}


PUSH RBP
MOV RBP,RSP
PUSH R15
MOV R15,RDI
PUSH R14
MOV R14D,R9D
PUSH R13
MOV R13,R8
PUSH R12
MOV R12D,ECX
PUSH RBX
LEA RBX,[RBP + -0x60]
MOV RDI,RBX
SUB RSP,0x58
MOV qword ptr [RBP + -0x70],RSI
MOV RSI,qword ptr [RBP + 0x10]
MOV qword ptr [RBP + -0x78],RDX
MOV qword ptr [RBP + -0x40],0x0
CALL 0x00357040
MOV RAX,qword ptr [RBP + 0x10]
SUB RSP,0x8
MOV RDI,qword ptr [R15 + 0x10]
MOVZX ECX,R12B
MOV RSI,qword ptr [RBP + -0x70]
MOV RDX,qword ptr [RBP + -0x78]
MOV R9D,R14D
MOV R8,R13
MOV RAX,qword ptr [RAX]
MOV RAX,qword ptr [RAX + -0x18]
PUSH RBX
PUSH 0x0
PUSH 0x0
MOV qword ptr [RBP + -0x58],RAX
LEA RAX,[0x315930]
MOV qword ptr [RBP + -0x40],RAX
CALL 0x00312fa0
MOV RCX,qword ptr [RBP + -0x40]
ADD RSP,0x20
TEST RCX,RCX
JZ 0x0031490d
MOV qword ptr [RBP + -0x70],RAX
MOV RDI,RBX
MOV qword ptr [RBP + -0x68],RDX
CALL RCX
MOV RAX,qword ptr [RBP + -0x70]
MOV RDX,qword ptr [RBP + -0x68]
LEA RSP,[RBP + -0x28]
POP RBX
POP R12
POP R13
POP R14
POP R15
POP RBP
RET
(translation_unit "undefined8\nFUN_00314870(long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,\n            undefined8 param_5,undefined4 param_6,long *param_7)\n\n{\n  undefined8 uVar1;\n  undefined1 local_68 [8];\n  undefined8 local_60;\n  code *local_48;\n  \n  local_48 = (code *)0x0;\n                    /* try { // try from 003148a8 to 003148ea has its CatchHandler @ 0031491c */\n  FUN_00357040(local_68,param_7);\n  local_60 = *(undefined8 *)(*param_7 + -0x18);\n  local_48 = FUN_00315930;\n  uVar1 = FUN_00312fa0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0,\n                       local_68);\n  if (local_48 != (code *)0x0) {\n    (*local_48)(local_68);\n  }\n  return uVar1;\n}\n\n" (function_definition "undefined8\nFUN_00314870(long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,\n            undefined8 param_5,undefined4 param_6,long *param_7)\n\n{\n  undefined8 uVar1;\n  undefined1 local_68 [8];\n  undefined8 local_60;\n  code *local_48;\n  \n  local_48 = (code *)0x0;\n                    /* try { // try from 003148a8 to 003148ea has its CatchHandler @ 0031491c */\n  FUN_00357040(local_68,param_7);\n  local_60 = *(undefined8 *)(*param_7 + -0x18);\n  local_48 = FUN_00315930;\n  uVar1 = FUN_00312fa0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0,\n                       local_68);\n  if (local_48 != (code *)0x0) {\n    (*local_48)(local_68);\n  }\n  return uVar1;\n}" type_identifier (function_declarator "FUN_00314870(long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,\n            undefined8 param_5,undefined4 param_6,long *param_7)" identifier (parameter_list "(long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,\n            undefined8 param_5,undefined4 param_6,long *param_7)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined1 param_4" type_identifier identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "long *param_7" (sized_type_specifier "long" long) (pointer_declarator "*param_7" * identifier)) ))) (compound_statement "{\n  undefined8 uVar1;\n  undefined1 local_68 [8];\n  undefined8 local_60;\n  code *local_48;\n  \n  local_48 = (code *)0x0;\n                    /* try { // try from 003148a8 to 003148ea has its CatchHandler @ 0031491c */\n  FUN_00357040(local_68,param_7);\n  local_60 = *(undefined8 *)(*param_7 + -0x18);\n  local_48 = FUN_00315930;\n  uVar1 = FUN_00312fa0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0,\n                       local_68);\n  if (local_48 != (code *)0x0) {\n    (*local_48)(local_68);\n  }\n  return uVar1;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "undefined1 local_68 [8];" type_identifier (array_declarator "local_68 [8]" identifier [ number_literal ]) ;) (declaration "undefined8 local_60;" type_identifier identifier ;) (declaration "code *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (expression_statement "local_48 = (code *)0x0;" (assignment_expression "local_48 = (code *)0x0" identifier = (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) comment (expression_statement "FUN_00357040(local_68,param_7);" (call_expression "FUN_00357040(local_68,param_7)" identifier (argument_list "(local_68,param_7)" ( identifier , identifier ))) ;) (expression_statement "local_60 = *(undefined8 *)(*param_7 + -0x18);" (assignment_expression "local_60 = *(undefined8 *)(*param_7 + -0x18)" identifier = (pointer_expression "*(undefined8 *)(*param_7 + -0x18)" * (cast_expression "(undefined8 *)(*param_7 + -0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_7 + -0x18)" ( (binary_expression "*param_7 + -0x18" (pointer_expression "*param_7" * identifier) + number_literal) ))))) ;) (expression_statement "local_48 = FUN_00315930;" (assignment_expression "local_48 = FUN_00315930" identifier = identifier) ;) (expression_statement "uVar1 = FUN_00312fa0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0,\n                       local_68);" (assignment_expression "uVar1 = FUN_00312fa0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0,\n                       local_68)" identifier = (call_expression "FUN_00312fa0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0,\n                       local_68)" identifier (argument_list "(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0,\n                       local_68)" ( (pointer_expression "*(undefined8 *)(param_1 + 0x10)" * (cast_expression "(undefined8 *)(param_1 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) , identifier , identifier , identifier , identifier , identifier , number_literal , number_literal , identifier )))) ;) (if_statement "if (local_48 != (code *)0x0) {\n    (*local_48)(local_68);\n  }" if (parenthesized_expression "(local_48 != (code *)0x0)" ( (binary_expression "local_48 != (code *)0x0" identifier != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (*local_48)(local_68);\n  }" { (expression_statement "(*local_48)(local_68);" (call_expression "(*local_48)(local_68)" (parenthesized_expression "(*local_48)" ( (pointer_expression "*local_48" * identifier) )) (argument_list "(local_68)" ( identifier ))) ;) })) (return_statement "return uVar1;" return identifier ;) })))
(translation_unit "/* std::__facet_shims::(anonymous\n   namespace)::money_put_shim<wchar_t>::do_put(std::ostreambuf_iterator<wchar_t,\n   std::char_traits<wchar_t> >, bool, std::ios_base&, wchar_t, std::wstring const&) const */\n\nundefined8\nstd::__facet_shims::(anonymous_namespace)::money_put_shim<wchar_t>::do_put\n          (long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,undefined8 param_5,\n          undefined4 param_6,wstring *param_7)\n\n{\n  undefined8 uVar1;\n  wstring local_68 [8];\n  undefined8 local_60;\n  code *local_48;\n  \n  local_48 = (code *)0x0;\n                    /* try { // try from 003148a8 to 003148ea has its CatchHandler @ 0031491c */\n  std::wstring::wstring(local_68,param_7);\n  local_60 = *(undefined8 *)(*(long *)param_7 + -0x18);\n  local_48 = __destroy_string<wchar_t>;\n  uVar1 = __money_put<wchar_t>\n                    (*(__facet_shims **)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0\n                     ,local_68);\n  if (local_48 != (code *)0x0) {\n    (*local_48)(local_68);\n  }\n  return uVar1;\n}\n\n" comment (function_definition "undefined8\nstd::__facet_shims::(anonymous_namespace)::money_put_shim<wchar_t>::do_put\n          (long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,undefined8 param_5,\n          undefined4 param_6,wstring *param_7)\n\n{\n  undefined8 uVar1;\n  wstring local_68 [8];\n  undefined8 local_60;\n  code *local_48;\n  \n  local_48 = (code *)0x0;\n                    /* try { // try from 003148a8 to 003148ea has its CatchHandler @ 0031491c */\n  std::wstring::wstring(local_68,param_7);\n  local_60 = *(undefined8 *)(*(long *)param_7 + -0x18);\n  local_48 = __destroy_string<wchar_t>;\n  uVar1 = __money_put<wchar_t>\n                    (*(__facet_shims **)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0\n                     ,local_68);\n  if (local_48 != (code *)0x0) {\n    (*local_48)(local_68);\n  }\n  return uVar1;\n}" type_identifier (ERROR "std::__facet_shims::(anonymous_namespace)::money_put_shim<wchar_t>::" identifier : : identifier : : ( identifier ) : : identifier < identifier > : :) (function_declarator "do_put\n          (long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,undefined8 param_5,\n          undefined4 param_6,wstring *param_7)" identifier (parameter_list "(long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,undefined8 param_5,\n          undefined4 param_6,wstring *param_7)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined1 param_4" type_identifier identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "wstring *param_7" type_identifier (pointer_declarator "*param_7" * identifier)) ))) (compound_statement "{\n  undefined8 uVar1;\n  wstring local_68 [8];\n  undefined8 local_60;\n  code *local_48;\n  \n  local_48 = (code *)0x0;\n                    /* try { // try from 003148a8 to 003148ea has its CatchHandler @ 0031491c */\n  std::wstring::wstring(local_68,param_7);\n  local_60 = *(undefined8 *)(*(long *)param_7 + -0x18);\n  local_48 = __destroy_string<wchar_t>;\n  uVar1 = __money_put<wchar_t>\n                    (*(__facet_shims **)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0\n                     ,local_68);\n  if (local_48 != (code *)0x0) {\n    (*local_48)(local_68);\n  }\n  return uVar1;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "wstring local_68 [8];" type_identifier (array_declarator "local_68 [8]" identifier [ number_literal ]) ;) (declaration "undefined8 local_60;" type_identifier identifier ;) (declaration "code *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (expression_statement "local_48 = (code *)0x0;" (assignment_expression "local_48 = (code *)0x0" identifier = (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) comment (labeled_statement "std::wstring::wstring(local_68,param_7);" statement_identifier : (ERROR ":" :) (labeled_statement "wstring::wstring(local_68,param_7);" statement_identifier : (ERROR ":" :) (expression_statement "wstring(local_68,param_7);" (call_expression "wstring(local_68,param_7)" identifier (argument_list "(local_68,param_7)" ( identifier , identifier ))) ;))) (expression_statement "local_60 = *(undefined8 *)(*(long *)param_7 + -0x18);" (assignment_expression "local_60 = *(undefined8 *)(*(long *)param_7 + -0x18)" identifier = (pointer_expression "*(undefined8 *)(*(long *)param_7 + -0x18)" * (cast_expression "(undefined8 *)(*(long *)param_7 + -0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)param_7 + -0x18)" ( (binary_expression "*(long *)param_7 + -0x18" (pointer_expression "*(long *)param_7" * (cast_expression "(long *)param_7" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (expression_statement "local_48 = __destroy_string<wchar_t>;\n  uVar1 = __money_put<wchar_t>\n                    (*(__facet_shims **)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0\n                     ,local_68);" (assignment_expression "local_48 = __destroy_string<wchar_t>;\n  uVar1 = __money_put<wchar_t>\n                    (*(__facet_shims **)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0\n                     ,local_68)" identifier = (binary_expression "__destroy_string<wchar_t>;\n  uVar1 = __money_put<wchar_t>\n                    (*(__facet_shims **)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0\n                     ,local_68)" (binary_expression "__destroy_string<wchar_t" identifier < identifier) > (ERROR ";" ;) (assignment_expression "uVar1 = __money_put<wchar_t>\n                    (*(__facet_shims **)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0\n                     ,local_68)" identifier = (binary_expression "__money_put<wchar_t>\n                    (*(__facet_shims **)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0\n                     ,local_68)" (binary_expression "__money_put<wchar_t" identifier < identifier) > (parenthesized_expression "(*(__facet_shims **)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0\n                     ,local_68)" ( (comma_expression "*(__facet_shims **)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0\n                     ,local_68" (pointer_expression "*(__facet_shims **)(param_1 + 0x10)" * (cast_expression "(__facet_shims **)(param_1 + 0x10)" ( (type_descriptor "__facet_shims **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) , (comma_expression "param_2,param_3,param_4,param_5,param_6,0,0\n                     ,local_68" identifier , (comma_expression "param_3,param_4,param_5,param_6,0,0\n                     ,local_68" identifier , (comma_expression "param_4,param_5,param_6,0,0\n                     ,local_68" identifier , (comma_expression "param_5,param_6,0,0\n                     ,local_68" identifier , (comma_expression "param_6,0,0\n                     ,local_68" identifier , (comma_expression "0,0\n                     ,local_68" number_literal , (comma_expression "0\n                     ,local_68" number_literal , identifier)))))))) )))))) ;) (if_statement "if (local_48 != (code *)0x0) {\n    (*local_48)(local_68);\n  }" if (parenthesized_expression "(local_48 != (code *)0x0)" ( (binary_expression "local_48 != (code *)0x0" identifier != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (*local_48)(local_68);\n  }" { (expression_statement "(*local_48)(local_68);" (call_expression "(*local_48)(local_68)" (parenthesized_expression "(*local_48)" ( (pointer_expression "*local_48" * identifier) )) (argument_list "(local_68)" ( identifier ))) ;) })) (return_statement "return uVar1;" return identifier ;) })))
(translation_unit "undefined8\nFUN_00314870(long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,\n            undefined8 param_5,undefined4 param_6,long *param_7)\n\n{\n  undefined8 uVar1;\n  undefined1 local_68 [8];\n  undefined8 local_60;\n  code *local_48;\n  \n  local_48 = (code *)0x0;\n                    \n  FUN_00357040(local_68,param_7);\n  local_60 = *(undefined8 *)(*param_7 + -0x18);\n  local_48 = FUN_00315930;\n  uVar1 = FUN_00312fa0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0,\n                       local_68);\n  if (local_48 != (code *)0x0) {\n    (*local_48)(local_68);\n  }\n  return uVar1;\n}\n\n" (function_definition "undefined8\nFUN_00314870(long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,\n            undefined8 param_5,undefined4 param_6,long *param_7)\n\n{\n  undefined8 uVar1;\n  undefined1 local_68 [8];\n  undefined8 local_60;\n  code *local_48;\n  \n  local_48 = (code *)0x0;\n                    \n  FUN_00357040(local_68,param_7);\n  local_60 = *(undefined8 *)(*param_7 + -0x18);\n  local_48 = FUN_00315930;\n  uVar1 = FUN_00312fa0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0,\n                       local_68);\n  if (local_48 != (code *)0x0) {\n    (*local_48)(local_68);\n  }\n  return uVar1;\n}" type_identifier (function_declarator "FUN_00314870(long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,\n            undefined8 param_5,undefined4 param_6,long *param_7)" identifier (parameter_list "(long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,\n            undefined8 param_5,undefined4 param_6,long *param_7)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined1 param_4" type_identifier identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "long *param_7" (sized_type_specifier "long" long) (pointer_declarator "*param_7" * identifier)) ))) (compound_statement "{\n  undefined8 uVar1;\n  undefined1 local_68 [8];\n  undefined8 local_60;\n  code *local_48;\n  \n  local_48 = (code *)0x0;\n                    \n  FUN_00357040(local_68,param_7);\n  local_60 = *(undefined8 *)(*param_7 + -0x18);\n  local_48 = FUN_00315930;\n  uVar1 = FUN_00312fa0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0,\n                       local_68);\n  if (local_48 != (code *)0x0) {\n    (*local_48)(local_68);\n  }\n  return uVar1;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "undefined1 local_68 [8];" type_identifier (array_declarator "local_68 [8]" identifier [ number_literal ]) ;) (declaration "undefined8 local_60;" type_identifier identifier ;) (declaration "code *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (expression_statement "local_48 = (code *)0x0;" (assignment_expression "local_48 = (code *)0x0" identifier = (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "FUN_00357040(local_68,param_7);" (call_expression "FUN_00357040(local_68,param_7)" identifier (argument_list "(local_68,param_7)" ( identifier , identifier ))) ;) (expression_statement "local_60 = *(undefined8 *)(*param_7 + -0x18);" (assignment_expression "local_60 = *(undefined8 *)(*param_7 + -0x18)" identifier = (pointer_expression "*(undefined8 *)(*param_7 + -0x18)" * (cast_expression "(undefined8 *)(*param_7 + -0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_7 + -0x18)" ( (binary_expression "*param_7 + -0x18" (pointer_expression "*param_7" * identifier) + number_literal) ))))) ;) (expression_statement "local_48 = FUN_00315930;" (assignment_expression "local_48 = FUN_00315930" identifier = identifier) ;) (expression_statement "uVar1 = FUN_00312fa0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0,\n                       local_68);" (assignment_expression "uVar1 = FUN_00312fa0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0,\n                       local_68)" identifier = (call_expression "FUN_00312fa0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0,\n                       local_68)" identifier (argument_list "(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0,\n                       local_68)" ( (pointer_expression "*(undefined8 *)(param_1 + 0x10)" * (cast_expression "(undefined8 *)(param_1 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) , identifier , identifier , identifier , identifier , identifier , number_literal , number_literal , identifier )))) ;) (if_statement "if (local_48 != (code *)0x0) {\n    (*local_48)(local_68);\n  }" if (parenthesized_expression "(local_48 != (code *)0x0)" ( (binary_expression "local_48 != (code *)0x0" identifier != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (*local_48)(local_68);\n  }" { (expression_statement "(*local_48)(local_68);" (call_expression "(*local_48)(local_68)" (parenthesized_expression "(*local_48)" ( (pointer_expression "*local_48" * identifier) )) (argument_list "(local_68)" ( identifier ))) ;) })) (return_statement "return uVar1;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT , IDENT , IDENT , IDENT , LIT , LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) })) (return_statement return IDENT ;) })))
(function_definition "undefined8\nFUN_00314870(long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,\n            undefined8 param_5,undefined4 param_6,long *param_7)\n\n{\n  undefined8 uVar1;\n  undefined1 local_68 [8];\n  undefined8 local_60;\n  code *local_48;\n  \n  local_48 = (code *)0x0;\n                    \n  FUN_00357040(local_68,param_7);\n  local_60 = *(undefined8 *)(*param_7 + -0x18);\n  local_48 = FUN_00315930;\n  uVar1 = FUN_00312fa0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0,\n                       local_68);\n  if (local_48 != (code *)0x0) {\n    (*local_48)(local_68);\n  }\n  return uVar1;\n}" (type_identifier "undefined8") (function_declarator "FUN_00314870(long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,\n            undefined8 param_5,undefined4 param_6,long *param_7)" (identifier "FUN_00314870") (parameter_list "(long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,\n            undefined8 param_5,undefined4 param_6,long *param_7)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "undefined8 param_3" (type_identifier "undefined8") (identifier "param_3")) (, ",") (parameter_declaration "undefined1 param_4" (type_identifier "undefined1") (identifier "param_4")) (, ",") (parameter_declaration "undefined8 param_5" (type_identifier "undefined8") (identifier "param_5")) (, ",") (parameter_declaration "undefined4 param_6" (type_identifier "undefined4") (identifier "param_6")) (, ",") (parameter_declaration "long *param_7" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_7" (* "*") (identifier "param_7"))) () ")"))) (compound_statement "{\n  undefined8 uVar1;\n  undefined1 local_68 [8];\n  undefined8 local_60;\n  code *local_48;\n  \n  local_48 = (code *)0x0;\n                    \n  FUN_00357040(local_68,param_7);\n  local_60 = *(undefined8 *)(*param_7 + -0x18);\n  local_48 = FUN_00315930;\n  uVar1 = FUN_00312fa0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0,\n                       local_68);\n  if (local_48 != (code *)0x0) {\n    (*local_48)(local_68);\n  }\n  return uVar1;\n}" ({ "{") (declaration "undefined8 uVar1;" (type_identifier "undefined8") (identifier "uVar1") (; ";")) (declaration "undefined1 local_68 [8];" (type_identifier "undefined1") (array_declarator "local_68 [8]" (identifier "local_68") ([ "[") (number_literal "8") (] "]")) (; ";")) (declaration "undefined8 local_60;" (type_identifier "undefined8") (identifier "local_60") (; ";")) (declaration "code *local_48;" (type_identifier "code") (pointer_declarator "*local_48" (* "*") (identifier "local_48")) (; ";")) (expression_statement "local_48 = (code *)0x0;" (assignment_expression "local_48 = (code *)0x0" (identifier "local_48") (= "=") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "FUN_00357040(local_68,param_7);" (call_expression "FUN_00357040(local_68,param_7)" (identifier "FUN_00357040") (argument_list "(local_68,param_7)" (( "(") (identifier "local_68") (, ",") (identifier "param_7") () ")"))) (; ";")) (expression_statement "local_60 = *(undefined8 *)(*param_7 + -0x18);" (assignment_expression "local_60 = *(undefined8 *)(*param_7 + -0x18)" (identifier "local_60") (= "=") (pointer_expression "*(undefined8 *)(*param_7 + -0x18)" (* "*") (cast_expression "(undefined8 *)(*param_7 + -0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_7 + -0x18)" (( "(") (binary_expression "*param_7 + -0x18" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (+ "+") (number_literal "-0x18")) () ")"))))) (; ";")) (expression_statement "local_48 = FUN_00315930;" (assignment_expression "local_48 = FUN_00315930" (identifier "local_48") (= "=") (identifier "FUN_00315930")) (; ";")) (expression_statement "uVar1 = FUN_00312fa0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0,\n                       local_68);" (assignment_expression "uVar1 = FUN_00312fa0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0,\n                       local_68)" (identifier "uVar1") (= "=") (call_expression "FUN_00312fa0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0,\n                       local_68)" (identifier "FUN_00312fa0") (argument_list "(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0,\n                       local_68)" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "param_5") (, ",") (identifier "param_6") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "local_68") () ")")))) (; ";")) (if_statement "if (local_48 != (code *)0x0) {\n    (*local_48)(local_68);\n  }" (if "if") (parenthesized_expression "(local_48 != (code *)0x0)" (( "(") (binary_expression "local_48 != (code *)0x0" (identifier "local_48") (!= "!=") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    (*local_48)(local_68);\n  }" ({ "{") (expression_statement "(*local_48)(local_68);" (call_expression "(*local_48)(local_68)" (parenthesized_expression "(*local_48)" (( "(") (pointer_expression "*local_48" (* "*") (identifier "local_48")) () ")")) (argument_list "(local_68)" (( "(") (identifier "local_68") () ")"))) (; ";")) (} "}"))) (return_statement "return uVar1;" (return "return") (identifier "uVar1") (; ";")) (} "}")))

/* std::__facet_shims::(anonymous
   namespace)::money_put_shim<wchar_t>::do_put(std::ostreambuf_iterator<wchar_t,
   std::char_traits<wchar_t> >, bool, std::ios_base&, wchar_t, std::wstring const&) const */

type_1
std::type_6::(anonymous_namespace)::money_put_shim<var_2>::function_1
          (long var_4,type_1 param_2,type_1 param_3,type_2 param_4,type_1 param_5,
          type_3 param_6,type_4 *param_7)

{
  type_1 uVar1;
  type_4 local_68 [8];
  type_1 local_60;
  type_5 *var_5;
  
  var_5 = (type_5 *)0x0;
                    /* try { // try from 003148a8 to 003148ea has its CatchHandler @ 0031491c */
  std::wstring::type_4(local_68,param_7);
  local_60 = *(type_1 *)(*(long *)param_7 + -0x18);
  var_5 = var_1<var_2>;
  uVar1 = var_3<var_2>
                    (*(type_6 **)(var_4 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0
                     ,local_68);
  if (var_5 != (type_5 *)0x0) {
    (*var_5)(local_68);
  }
  return uVar1;
}


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

undefined8
MASKED(long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,
            undefined8 param_5,undefined4 param_6,long *param_7)

{
  undefined8 uVar1;
  undefined1 local_68 [8];
  undefined8 local_60;
  code *local_48;
  
  local_48 = (code *)0x0;
                    /* try { // try from 003148a8 to 003148ea has its CatchHandler @ 0031491c */
  FUN_00357040(local_68,param_7);
  local_60 = *(undefined8 *)(*param_7 + -0x18);
  local_48 = FUN_00315930;
  uVar1 = FUN_00312fa0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,param_6,0,0,
                       local_68);
  if (local_48 != (code *)0x0) {
    (*local_48)(local_68);
  }
  return uVar1;
}

