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

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

{
  undefined8 uVar1;
  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_68;
  code *local_48;
  
  local_68._M_dataplus._M_p = (pointer)&local_68.field_2;
  local_48 = (code *)0x0;
                    /* try { // try from 0031072c to 0031075f has its CatchHandler @ 00310791 */
  __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::_M_construct<char*>
            (&local_68,*param_7,param_7[1] + *param_7);
  local_48 = __destroy_string<char>;
  uVar1 = __money_put<char>(*(__facet_shims **)(param_1 + 0x10),param_2,param_3,param_4,param_5,
                            (int)param_6,0,0,&local_68);
  if (local_48 != (code *)0x0) {
    (*local_48)(&local_68);
  }
  return uVar1;
}



undefined8
FUN_003106e0(long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,
            undefined8 param_5,char param_6,long *param_7)

{
  undefined8 uVar1;
  undefined1 *local_68 [2];
  undefined1 local_58 [16];
  code *local_48;
  
  local_68[0] = local_58;
  local_48 = (code *)0x0;
                    /* try { // try from 0031072c to 0031075f has its CatchHandler @ 00310791 */
  FUN_00166a10(local_68,*param_7,param_7[1] + *param_7);
  local_48 = FUN_00310260;
  uVar1 = FUN_003179a0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,(int)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 R12,RSI
PUSH RBX
LEA RBX,[RBP + -0x60]
SUB RSP,0x58
MOV RAX,qword ptr [RBP + 0x10]
MOV qword ptr [RBP + -0x70],RDX
LEA RDX,[RBX + 0x10]
MOV qword ptr [RBP + -0x60],RDX
MOV RSI,qword ptr [RAX]
MOV RDI,qword ptr [RAX + 0x8]
MOV dword ptr [RBP + -0x74],ECX
MOV qword ptr [RBP + -0x40],0x0
ADD RDI,RSI
MOV RDX,RDI
MOV RDI,RBX
CALL 0x00166a10
SUB RSP,0x8
MOVZX ECX,byte ptr [RBP + -0x74]
MOV RDI,qword ptr [R15 + 0x10]
MOVSX R9D,R14B
PUSH RBX
MOV RDX,qword ptr [RBP + -0x70]
LEA RAX,[0x310260]
MOV R8,R13
PUSH 0x0
MOV RSI,R12
PUSH 0x0
MOV qword ptr [RBP + -0x40],RAX
CALL 0x003179a0
MOV RCX,qword ptr [RBP + -0x40]
ADD RSP,0x20
TEST RCX,RCX
JZ 0x00310782
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_003106e0(long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,\n            undefined8 param_5,char param_6,long *param_7)\n\n{\n  undefined8 uVar1;\n  undefined1 *local_68 [2];\n  undefined1 local_58 [16];\n  code *local_48;\n  \n  local_68[0] = local_58;\n  local_48 = (code *)0x0;\n                    /* try { // try from 0031072c to 0031075f has its CatchHandler @ 00310791 */\n  FUN_00166a10(local_68,*param_7,param_7[1] + *param_7);\n  local_48 = FUN_00310260;\n  uVar1 = FUN_003179a0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,(int)param_6,\n                       0,0,local_68);\n  if (local_48 != (code *)0x0) {\n    (*local_48)(local_68);\n  }\n  return uVar1;\n}\n\n" (function_definition "undefined8\nFUN_003106e0(long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,\n            undefined8 param_5,char param_6,long *param_7)\n\n{\n  undefined8 uVar1;\n  undefined1 *local_68 [2];\n  undefined1 local_58 [16];\n  code *local_48;\n  \n  local_68[0] = local_58;\n  local_48 = (code *)0x0;\n                    /* try { // try from 0031072c to 0031075f has its CatchHandler @ 00310791 */\n  FUN_00166a10(local_68,*param_7,param_7[1] + *param_7);\n  local_48 = FUN_00310260;\n  uVar1 = FUN_003179a0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,(int)param_6,\n                       0,0,local_68);\n  if (local_48 != (code *)0x0) {\n    (*local_48)(local_68);\n  }\n  return uVar1;\n}" type_identifier (function_declarator "FUN_003106e0(long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,\n            undefined8 param_5,char param_6,long *param_7)" identifier (parameter_list "(long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,\n            undefined8 param_5,char 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 "char param_6" primitive_type 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 [2];\n  undefined1 local_58 [16];\n  code *local_48;\n  \n  local_68[0] = local_58;\n  local_48 = (code *)0x0;\n                    /* try { // try from 0031072c to 0031075f has its CatchHandler @ 00310791 */\n  FUN_00166a10(local_68,*param_7,param_7[1] + *param_7);\n  local_48 = FUN_00310260;\n  uVar1 = FUN_003179a0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,(int)param_6,\n                       0,0,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 [2];" type_identifier (pointer_declarator "*local_68 [2]" * (array_declarator "local_68 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_58 [16];" type_identifier (array_declarator "local_58 [16]" identifier [ number_literal ]) ;) (declaration "code *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (expression_statement "local_68[0] = local_58;" (assignment_expression "local_68[0] = local_58" (subscript_expression "local_68[0]" identifier [ number_literal ]) = 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_00166a10(local_68,*param_7,param_7[1] + *param_7);" (call_expression "FUN_00166a10(local_68,*param_7,param_7[1] + *param_7)" identifier (argument_list "(local_68,*param_7,param_7[1] + *param_7)" ( identifier , (pointer_expression "*param_7" * identifier) , (binary_expression "param_7[1] + *param_7" (subscript_expression "param_7[1]" identifier [ number_literal ]) + (pointer_expression "*param_7" * identifier)) ))) ;) (expression_statement "local_48 = FUN_00310260;" (assignment_expression "local_48 = FUN_00310260" identifier = identifier) ;) (expression_statement "uVar1 = FUN_003179a0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,(int)param_6,\n                       0,0,local_68);" (assignment_expression "uVar1 = FUN_003179a0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,(int)param_6,\n                       0,0,local_68)" identifier = (call_expression "FUN_003179a0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,(int)param_6,\n                       0,0,local_68)" identifier (argument_list "(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,(int)param_6,\n                       0,0,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 , (cast_expression "(int)param_6" ( (type_descriptor "int" primitive_type) ) 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<char>::do_put(std::ostreambuf_iterator<char, std::char_traits<char> >,\n   bool, std::ios_base&, char, std::string const&) const */\n\nundefined8\nstd::__facet_shims::(anonymous_namespace)::money_put_shim<char>::do_put\n          (long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,undefined8 param_5,\n          char param_6,long *param_7)\n\n{\n  undefined8 uVar1;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_68;\n  code *local_48;\n  \n  local_68._M_dataplus._M_p = (pointer)&local_68.field_2;\n  local_48 = (code *)0x0;\n                    /* try { // try from 0031072c to 0031075f has its CatchHandler @ 00310791 */\n  __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::_M_construct<char*>\n            (&local_68,*param_7,param_7[1] + *param_7);\n  local_48 = __destroy_string<char>;\n  uVar1 = __money_put<char>(*(__facet_shims **)(param_1 + 0x10),param_2,param_3,param_4,param_5,\n                            (int)param_6,0,0,&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<char>::do_put\n          (long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,undefined8 param_5,\n          char param_6,long *param_7)\n\n{\n  undefined8 uVar1;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_68;\n  code *local_48;\n  \n  local_68._M_dataplus._M_p = (pointer)&local_68.field_2;\n  local_48 = (code *)0x0;\n                    /* try { // try from 0031072c to 0031075f has its CatchHandler @ 00310791 */\n  __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::_M_construct<char*>\n            (&local_68,*param_7,param_7[1] + *param_7);\n  local_48 = __destroy_string<char>;\n  uVar1 = __money_put<char>(*(__facet_shims **)(param_1 + 0x10),param_2,param_3,param_4,param_5,\n                            (int)param_6,0,0,&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<char>::" identifier : : identifier : : ( identifier ) : : identifier < primitive_type > : :) (function_declarator "do_put\n          (long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,undefined8 param_5,\n          char param_6,long *param_7)" identifier (parameter_list "(long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,undefined8 param_5,\n          char 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 "char param_6" primitive_type identifier) , (parameter_declaration "long *param_7" (sized_type_specifier "long" long) (pointer_declarator "*param_7" * identifier)) ))) (compound_statement "{\n  undefined8 uVar1;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_68;\n  code *local_48;\n  \n  local_68._M_dataplus._M_p = (pointer)&local_68.field_2;\n  local_48 = (code *)0x0;\n                    /* try { // try from 0031072c to 0031075f has its CatchHandler @ 00310791 */\n  __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::_M_construct<char*>\n            (&local_68,*param_7,param_7[1] + *param_7);\n  local_48 = __destroy_string<char>;\n  uVar1 = __money_put<char>(*(__facet_shims **)(param_1 + 0x10),param_2,param_3,param_4,param_5,\n                            (int)param_6,0,0,&local_68);\n  if (local_48 != (code *)0x0) {\n    (*local_48)(&local_68);\n  }\n  return uVar1;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (ERROR "basic_string<char,_std::char_traits<char>,_std::" (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (expression_statement "allocator<char>_> local_68;" (binary_expression "allocator<char>_> local_68" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) ;) (declaration "code *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (expression_statement "local_68._M_dataplus._M_p = (pointer)&local_68.field_2;" (assignment_expression "local_68._M_dataplus._M_p = (pointer)&local_68.field_2" (field_expression "local_68._M_dataplus._M_p" (field_expression "local_68._M_dataplus" identifier . field_identifier) . field_identifier) = (binary_expression "(pointer)&local_68.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "local_68.field_2" identifier . field_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 (ERROR "__cxx11::basic_string<char,_std::char_traits<char>,_std::" (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) : :) (expression_statement "allocator<char>_>::_M_construct<char*>\n            (&local_68,*param_7,param_7[1] + *param_7);" (binary_expression "allocator<char>_>::_M_construct<char*>\n            (&local_68,*param_7,param_7[1] + *param_7)" (binary_expression "allocator<char>_>::_M_construct<char" (binary_expression "allocator<char>_>::_M_construct" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "::" : :) identifier) < identifier) (ERROR "*" *) > (parenthesized_expression "(&local_68,*param_7,param_7[1] + *param_7)" ( (comma_expression "&local_68,*param_7,param_7[1] + *param_7" (pointer_expression "&local_68" & identifier) , (comma_expression "*param_7,param_7[1] + *param_7" (pointer_expression "*param_7" * identifier) , (binary_expression "param_7[1] + *param_7" (subscript_expression "param_7[1]" identifier [ number_literal ]) + (pointer_expression "*param_7" * identifier)))) ))) ;) (expression_statement "local_48 = __destroy_string<char>;\n  uVar1 = __money_put<char>(*(__facet_shims **)(param_1 + 0x10),param_2,param_3,param_4,param_5,\n                            (int)param_6,0,0,&local_68);" (assignment_expression "local_48 = __destroy_string<char>;\n  uVar1 = __money_put<char>(*(__facet_shims **)(param_1 + 0x10),param_2,param_3,param_4,param_5,\n                            (int)param_6,0,0,&local_68)" identifier = (binary_expression "__destroy_string<char>;\n  uVar1 = __money_put<char>(*(__facet_shims **)(param_1 + 0x10),param_2,param_3,param_4,param_5,\n                            (int)param_6,0,0,&local_68)" (binary_expression "__destroy_string<char" identifier < identifier) > (ERROR ";" ;) (assignment_expression "uVar1 = __money_put<char>(*(__facet_shims **)(param_1 + 0x10),param_2,param_3,param_4,param_5,\n                            (int)param_6,0,0,&local_68)" identifier = (binary_expression "__money_put<char>(*(__facet_shims **)(param_1 + 0x10),param_2,param_3,param_4,param_5,\n                            (int)param_6,0,0,&local_68)" (binary_expression "__money_put<char" identifier < identifier) > (parenthesized_expression "(*(__facet_shims **)(param_1 + 0x10),param_2,param_3,param_4,param_5,\n                            (int)param_6,0,0,&local_68)" ( (comma_expression "*(__facet_shims **)(param_1 + 0x10),param_2,param_3,param_4,param_5,\n                            (int)param_6,0,0,&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,\n                            (int)param_6,0,0,&local_68" identifier , (comma_expression "param_3,param_4,param_5,\n                            (int)param_6,0,0,&local_68" identifier , (comma_expression "param_4,param_5,\n                            (int)param_6,0,0,&local_68" identifier , (comma_expression "param_5,\n                            (int)param_6,0,0,&local_68" identifier , (comma_expression "(int)param_6,0,0,&local_68" (cast_expression "(int)param_6" ( (type_descriptor "int" primitive_type) ) identifier) , (comma_expression "0,0,&local_68" number_literal , (comma_expression "0,&local_68" number_literal , (pointer_expression "&local_68" & 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)" ( (pointer_expression "&local_68" & identifier) ))) ;) })) (return_statement "return uVar1;" return identifier ;) })))
(translation_unit "undefined8\nFUN_003106e0(long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,\n            undefined8 param_5,char param_6,long *param_7)\n\n{\n  undefined8 uVar1;\n  undefined1 *local_68 [2];\n  undefined1 local_58 [16];\n  code *local_48;\n  \n  local_68[0] = local_58;\n  local_48 = (code *)0x0;\n                    \n  FUN_00166a10(local_68,*param_7,param_7[1] + *param_7);\n  local_48 = FUN_00310260;\n  uVar1 = FUN_003179a0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,(int)param_6,\n                       0,0,local_68);\n  if (local_48 != (code *)0x0) {\n    (*local_48)(local_68);\n  }\n  return uVar1;\n}\n\n" (function_definition "undefined8\nFUN_003106e0(long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,\n            undefined8 param_5,char param_6,long *param_7)\n\n{\n  undefined8 uVar1;\n  undefined1 *local_68 [2];\n  undefined1 local_58 [16];\n  code *local_48;\n  \n  local_68[0] = local_58;\n  local_48 = (code *)0x0;\n                    \n  FUN_00166a10(local_68,*param_7,param_7[1] + *param_7);\n  local_48 = FUN_00310260;\n  uVar1 = FUN_003179a0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,(int)param_6,\n                       0,0,local_68);\n  if (local_48 != (code *)0x0) {\n    (*local_48)(local_68);\n  }\n  return uVar1;\n}" type_identifier (function_declarator "FUN_003106e0(long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,\n            undefined8 param_5,char param_6,long *param_7)" identifier (parameter_list "(long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,\n            undefined8 param_5,char 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 "char param_6" primitive_type 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 [2];\n  undefined1 local_58 [16];\n  code *local_48;\n  \n  local_68[0] = local_58;\n  local_48 = (code *)0x0;\n                    \n  FUN_00166a10(local_68,*param_7,param_7[1] + *param_7);\n  local_48 = FUN_00310260;\n  uVar1 = FUN_003179a0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,(int)param_6,\n                       0,0,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 [2];" type_identifier (pointer_declarator "*local_68 [2]" * (array_declarator "local_68 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_58 [16];" type_identifier (array_declarator "local_58 [16]" identifier [ number_literal ]) ;) (declaration "code *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (expression_statement "local_68[0] = local_58;" (assignment_expression "local_68[0] = local_58" (subscript_expression "local_68[0]" identifier [ number_literal ]) = 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_00166a10(local_68,*param_7,param_7[1] + *param_7);" (call_expression "FUN_00166a10(local_68,*param_7,param_7[1] + *param_7)" identifier (argument_list "(local_68,*param_7,param_7[1] + *param_7)" ( identifier , (pointer_expression "*param_7" * identifier) , (binary_expression "param_7[1] + *param_7" (subscript_expression "param_7[1]" identifier [ number_literal ]) + (pointer_expression "*param_7" * identifier)) ))) ;) (expression_statement "local_48 = FUN_00310260;" (assignment_expression "local_48 = FUN_00310260" identifier = identifier) ;) (expression_statement "uVar1 = FUN_003179a0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,(int)param_6,\n                       0,0,local_68);" (assignment_expression "uVar1 = FUN_003179a0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,(int)param_6,\n                       0,0,local_68)" identifier = (call_expression "FUN_003179a0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,(int)param_6,\n                       0,0,local_68)" identifier (argument_list "(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,(int)param_6,\n                       0,0,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 , (cast_expression "(int)param_6" ( (type_descriptor "int" primitive_type) ) 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 (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , (binary_expression (subscript_expression IDENT [ LIT ]) + (pointer_expression * IDENT)) ))) ;) (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 , (cast_expression ( (type_descriptor TYPE) ) 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_003106e0(long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,\n            undefined8 param_5,char param_6,long *param_7)\n\n{\n  undefined8 uVar1;\n  undefined1 *local_68 [2];\n  undefined1 local_58 [16];\n  code *local_48;\n  \n  local_68[0] = local_58;\n  local_48 = (code *)0x0;\n                    \n  FUN_00166a10(local_68,*param_7,param_7[1] + *param_7);\n  local_48 = FUN_00310260;\n  uVar1 = FUN_003179a0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,(int)param_6,\n                       0,0,local_68);\n  if (local_48 != (code *)0x0) {\n    (*local_48)(local_68);\n  }\n  return uVar1;\n}" (type_identifier "undefined8") (function_declarator "FUN_003106e0(long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,\n            undefined8 param_5,char param_6,long *param_7)" (identifier "FUN_003106e0") (parameter_list "(long param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4,\n            undefined8 param_5,char 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 "char param_6" (primitive_type "char") (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 [2];\n  undefined1 local_58 [16];\n  code *local_48;\n  \n  local_68[0] = local_58;\n  local_48 = (code *)0x0;\n                    \n  FUN_00166a10(local_68,*param_7,param_7[1] + *param_7);\n  local_48 = FUN_00310260;\n  uVar1 = FUN_003179a0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,(int)param_6,\n                       0,0,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 [2];" (type_identifier "undefined1") (pointer_declarator "*local_68 [2]" (* "*") (array_declarator "local_68 [2]" (identifier "local_68") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "undefined1 local_58 [16];" (type_identifier "undefined1") (array_declarator "local_58 [16]" (identifier "local_58") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "code *local_48;" (type_identifier "code") (pointer_declarator "*local_48" (* "*") (identifier "local_48")) (; ";")) (expression_statement "local_68[0] = local_58;" (assignment_expression "local_68[0] = local_58" (subscript_expression "local_68[0]" (identifier "local_68") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "local_58")) (; ";")) (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_00166a10(local_68,*param_7,param_7[1] + *param_7);" (call_expression "FUN_00166a10(local_68,*param_7,param_7[1] + *param_7)" (identifier "FUN_00166a10") (argument_list "(local_68,*param_7,param_7[1] + *param_7)" (( "(") (identifier "local_68") (, ",") (pointer_expression "*param_7" (* "*") (identifier "param_7")) (, ",") (binary_expression "param_7[1] + *param_7" (subscript_expression "param_7[1]" (identifier "param_7") ([ "[") (number_literal "1") (] "]")) (+ "+") (pointer_expression "*param_7" (* "*") (identifier "param_7"))) () ")"))) (; ";")) (expression_statement "local_48 = FUN_00310260;" (assignment_expression "local_48 = FUN_00310260" (identifier "local_48") (= "=") (identifier "FUN_00310260")) (; ";")) (expression_statement "uVar1 = FUN_003179a0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,(int)param_6,\n                       0,0,local_68);" (assignment_expression "uVar1 = FUN_003179a0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,(int)param_6,\n                       0,0,local_68)" (identifier "uVar1") (= "=") (call_expression "FUN_003179a0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,(int)param_6,\n                       0,0,local_68)" (identifier "FUN_003179a0") (argument_list "(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,(int)param_6,\n                       0,0,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") (, ",") (cast_expression "(int)param_6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (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<char>::do_put(std::ostreambuf_iterator<char, std::char_traits<char> >,
   bool, std::ios_base&, char, std::string const&) const */

type_1
std::type_4::(anonymous_namespace)::money_put_shim<char>::function_1
          (long var_8,type_1 param_2,type_1 param_3,type_2 param_4,type_1 param_5,
          char param_6,long *param_7)

{
  type_1 uVar1;
  basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> var_4;
  type_3 *var_9;
  
  var_4._M_dataplus._M_p = (pointer)&var_4.field_2;
  var_9 = (type_3 *)0x0;
                    /* try { // try from 0031072c to 0031075f has its CatchHandler @ 00310791 */
  __cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>::var_5<var_2*>
            (&var_4,*param_7,param_7[1] + *param_7);
  var_9 = var_6<var_2>;
  uVar1 = var_7<var_2>(*(type_4 **)(var_8 + 0x10),param_2,param_3,param_4,param_5,
                            (int)param_6,0,0,&var_4);
  if (var_9 != (type_3 *)0x0) {
    (*var_9)(&var_4);
  }
  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: (primitive_type) 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: (pointer_declarator declarator: (array_declarator declarator: (identifier) size: (number_literal)))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (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) (pointer_expression argument: (identifier)) (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier)))))) (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) (cast_expression type: (type_descriptor type: (primitive_type)) value: (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,char param_6,long *param_7)

{
  undefined8 uVar1;
  undefined1 *local_68 [2];
  undefined1 local_58 [16];
  code *local_48;
  
  local_68[0] = local_58;
  local_48 = (code *)0x0;
                    /* try { // try from 0031072c to 0031075f has its CatchHandler @ 00310791 */
  FUN_00166a10(local_68,*param_7,param_7[1] + *param_7);
  local_48 = FUN_00310260;
  uVar1 = FUN_003179a0(*(undefined8 *)(param_1 + 0x10),param_2,param_3,param_4,param_5,(int)param_6,
                       0,0,local_68);
  if (local_48 != (code *)0x0) {
    (*local_48)(local_68);
  }
  return uVar1;
}

