
/* void std::__facet_shims::__messages_get<wchar_t>(std::integral_constant<bool, true>,
   std::locale::facet const*, std::__facet_shims::__any_string&, int, int, int, wchar_t const*,
   unsigned int) */

void std::__facet_shims::__messages_get<wchar_t>
               (undefined4 param_1,int *param_2,int *param_3,undefined4 param_4,undefined4 param_5,
               undefined4 param_6,int param_7,int param_8)

{
  undefined *puVar1;
  undefined1 *local_48;
  int local_44;
  undefined1 auStack_40 [16];
  undefined1 *local_30 [2];
  undefined1 auStack_28 [16];
  
  local_30[0] = auStack_28;
  (*(code *)PTR__M_construct<wchar_t_const*>_004c30ec)(local_30,param_7,param_7 + param_8 * 4,0);
                    /* try { // try from 0037efec to 0037eff3 has its CatchHandler @ 0037f09c */
  (**(code **)(*param_2 + 0xc))(&local_48,param_2,param_4,param_5,param_6,local_30);
  if ((code *)param_3[6] != (code *)0x0) {
                    /* try { // try from 0037f000 to 0037f03b has its CatchHandler @ 0037f0c8 */
    (*(code *)param_3[6])(param_3);
  }
  puVar1 = PTR__M_construct<wchar_t*>_004c528c;
  *param_3 = (int)(param_3 + 2);
  (*(code *)puVar1)(param_3,local_48,local_48 + local_44 * 4,0);
  param_3[6] = (int)(PTR_LAB_004c12c4 + -0x53e4);
  if (local_48 != auStack_40) {
    (*(code *)PTR_operator_delete_004c12fc)();
  }
  if (local_30[0] != auStack_28) {
    (*(code *)PTR_operator_delete_004c12fc)();
  }
  return;
}



/* void std::__facet_shims::__messages_get<wchar_t>(std::integral_constant<bool, true>,
   std::locale::facet const*, std::__facet_shims::__any_string&, int, int, int, wchar_t const*,
   unsigned int) */

void std::__facet_shims::__messages_get<wchar_t>
               (undefined4 param_1,int *param_2,int *param_3,undefined4 param_4,undefined4 param_5,
               undefined4 param_6,int param_7,int param_8)

{
  undefined *puVar1;
  undefined1 *local_48;
  int local_44;
  undefined1 auStack_40 [16];
  undefined1 *local_30 [2];
  undefined1 auStack_28 [16];
  
  local_30[0] = auStack_28;
  (*(code *)PTR__M_construct<wchar_t_const*>_004c30ec)(local_30,param_7,param_7 + param_8 * 4,0);
                    /* try { // try from 0037efec to 0037eff3 has its CatchHandler @ 0037f09c */
  (**(code **)(*param_2 + 0xc))(&local_48,param_2,param_4,param_5,param_6,local_30);
  if ((code *)param_3[6] != (code *)0x0) {
                    /* try { // try from 0037f000 to 0037f03b has its CatchHandler @ 0037f0c8 */
    (*(code *)param_3[6])(param_3);
  }
  puVar1 = PTR__M_construct<wchar_t*>_004c528c;
  *param_3 = (int)(param_3 + 2);
  (*(code *)puVar1)(param_3,local_48,local_48 + local_44 * 4,0);
  param_3[6] = (int)(PTR_LAB_004c12c4 + -0x53e4);
  if (local_48 != auStack_40) {
    (*(code *)PTR_operator_delete_004c12fc)();
  }
  if (local_30[0] != auStack_28) {
    (*(code *)PTR_operator_delete_004c12fc)();
  }
  return;
}


lui gp,0x15
addiu gp,gp,-0x5d1c
addu gp,gp,t9
addiu sp,sp,-0x68
lw t9,-0x6154(gp)
lw v0,0x84(sp)
lw v1,0x80(sp)
sw s4,0x60(sp)
or s4,a3,zero
sll v0,v0,0x2
sw s2,0x58(sp)
or a3,zero,zero
sw s1,0x54(sp)
addiu s2,sp,0x40
sw s3,0x5c(sp)
addiu s1,sp,0x38
sw s0,0x50(sp)
or s3,a1,zero
sw gp,0x18(sp)
sll a3,a3,0x18
sw a0,0x68(sp)
or s0,a2,zero
sw ra,0x64(sp)
addu a2,v1,v0
sw s2,0x38(sp)
or a1,v1,zero
jalr t9
_or a0,s1,zero
addiu a0,sp,0x20
lw v0,0x0(s3)
or a2,s4,zero
lw v1,0x7c(sp)
lw a3,0x78(sp)
sw s1,0x14(sp)
sw v1,0x10(sp)
lw t9,0xc(v0)
jalr t9
_or a1,s3,zero
lw t9,0x18(s0)
beq t9,zero,0x0037f00c
_lw gp,0x18(sp)
jalr t9
_or a0,s0,zero
lw gp,0x18(sp)
lw v0,0x24(sp)
or a3,zero,zero
lw a2,0x20(sp)
addiu v1,s0,0x8
lw t9,-0x3fb4(gp)
sll a3,a3,0x18
sll v0,v0,0x2
sw v1,0x0(s0)
or a1,a2,zero
addu a2,a2,v0
jalr t9
_or a0,s0,zero
lw gp,0x18(sp)
lw a0,0x20(sp)
lw v0,-0x7f7c(gp)
addiu v0,v0,-0x53e4
sw v0,0x18(s0)
addiu v0,sp,0x28
beq a0,v0,0x0037f068
_lw t9,-0x7f44(gp)
jalr t9
_nop
lw gp,0x18(sp)
lw a0,0x38(sp)
beq a0,s2,0x0037f07c
_lw t9,-0x7f44(gp)
jalr t9
_nop
lw ra,0x64(sp)
lw s4,0x60(sp)
lw s3,0x5c(sp)
lw s2,0x58(sp)
lw s1,0x54(sp)
lw s0,0x50(sp)
jr ra
_addiu sp,sp,0x68
(translation_unit "/* void std::__facet_shims::__messages_get<wchar_t>(std::integral_constant<bool, true>,\n   std::locale::facet const*, std::__facet_shims::__any_string&, int, int, int, wchar_t const*,\n   unsigned int) */\n\nvoid std::__facet_shims::__messages_get<wchar_t>\n               (undefined4 param_1,int *param_2,int *param_3,undefined4 param_4,undefined4 param_5,\n               undefined4 param_6,int param_7,int param_8)\n\n{\n  undefined *puVar1;\n  undefined1 *local_48;\n  int local_44;\n  undefined1 auStack_40 [16];\n  undefined1 *local_30 [2];\n  undefined1 auStack_28 [16];\n  \n  local_30[0] = auStack_28;\n  (*(code *)PTR__M_construct<wchar_t_const*>_004c30ec)(local_30,param_7,param_7 + param_8 * 4,0);\n                    /* try { // try from 0037efec to 0037eff3 has its CatchHandler @ 0037f09c */\n  (**(code **)(*param_2 + 0xc))(&local_48,param_2,param_4,param_5,param_6,local_30);\n  if ((code *)param_3[6] != (code *)0x0) {\n                    /* try { // try from 0037f000 to 0037f03b has its CatchHandler @ 0037f0c8 */\n    (*(code *)param_3[6])(param_3);\n  }\n  puVar1 = PTR__M_construct<wchar_t*>_004c528c;\n  *param_3 = (int)(param_3 + 2);\n  (*(code *)puVar1)(param_3,local_48,local_48 + local_44 * 4,0);\n  param_3[6] = (int)(PTR_LAB_004c12c4 + -0x53e4);\n  if (local_48 != auStack_40) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  if (local_30[0] != auStack_28) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  return;\n}\n\n" comment (function_definition "void std::__facet_shims::__messages_get<wchar_t>\n               (undefined4 param_1,int *param_2,int *param_3,undefined4 param_4,undefined4 param_5,\n               undefined4 param_6,int param_7,int param_8)\n\n{\n  undefined *puVar1;\n  undefined1 *local_48;\n  int local_44;\n  undefined1 auStack_40 [16];\n  undefined1 *local_30 [2];\n  undefined1 auStack_28 [16];\n  \n  local_30[0] = auStack_28;\n  (*(code *)PTR__M_construct<wchar_t_const*>_004c30ec)(local_30,param_7,param_7 + param_8 * 4,0);\n                    /* try { // try from 0037efec to 0037eff3 has its CatchHandler @ 0037f09c */\n  (**(code **)(*param_2 + 0xc))(&local_48,param_2,param_4,param_5,param_6,local_30);\n  if ((code *)param_3[6] != (code *)0x0) {\n                    /* try { // try from 0037f000 to 0037f03b has its CatchHandler @ 0037f0c8 */\n    (*(code *)param_3[6])(param_3);\n  }\n  puVar1 = PTR__M_construct<wchar_t*>_004c528c;\n  *param_3 = (int)(param_3 + 2);\n  (*(code *)puVar1)(param_3,local_48,local_48 + local_44 * 4,0);\n  param_3[6] = (int)(PTR_LAB_004c12c4 + -0x53e4);\n  if (local_48 != auStack_40) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  if (local_30[0] != auStack_28) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  return;\n}" primitive_type (ERROR "std::__facet_shims::__messages_get<" identifier : : identifier : : identifier <) (function_declarator "wchar_t>\n               (undefined4 param_1,int *param_2,int *param_3,undefined4 param_4,undefined4 param_5,\n               undefined4 param_6,int param_7,int param_8)" identifier (ERROR ">" >) (parameter_list "(undefined4 param_1,int *param_2,int *param_3,undefined4 param_4,undefined4 param_5,\n               undefined4 param_6,int param_7,int param_8)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "int param_7" primitive_type identifier) , (parameter_declaration "int param_8" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined1 *local_48;\n  int local_44;\n  undefined1 auStack_40 [16];\n  undefined1 *local_30 [2];\n  undefined1 auStack_28 [16];\n  \n  local_30[0] = auStack_28;\n  (*(code *)PTR__M_construct<wchar_t_const*>_004c30ec)(local_30,param_7,param_7 + param_8 * 4,0);\n                    /* try { // try from 0037efec to 0037eff3 has its CatchHandler @ 0037f09c */\n  (**(code **)(*param_2 + 0xc))(&local_48,param_2,param_4,param_5,param_6,local_30);\n  if ((code *)param_3[6] != (code *)0x0) {\n                    /* try { // try from 0037f000 to 0037f03b has its CatchHandler @ 0037f0c8 */\n    (*(code *)param_3[6])(param_3);\n  }\n  puVar1 = PTR__M_construct<wchar_t*>_004c528c;\n  *param_3 = (int)(param_3 + 2);\n  (*(code *)puVar1)(param_3,local_48,local_48 + local_44 * 4,0);\n  param_3[6] = (int)(PTR_LAB_004c12c4 + -0x53e4);\n  if (local_48 != auStack_40) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  if (local_30[0] != auStack_28) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined1 *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "undefined1 auStack_40 [16];" type_identifier (array_declarator "auStack_40 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_30 [2];" type_identifier (pointer_declarator "*local_30 [2]" * (array_declarator "local_30 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 auStack_28 [16];" type_identifier (array_declarator "auStack_28 [16]" identifier [ number_literal ]) ;) (expression_statement "local_30[0] = auStack_28;" (assignment_expression "local_30[0] = auStack_28" (subscript_expression "local_30[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "(*(code *)PTR__M_construct<wchar_t_const*>_004c30ec)(local_30,param_7,param_7 + param_8 * 4,0);" (call_expression "(*(code *)PTR__M_construct<wchar_t_const*>_004c30ec)(local_30,param_7,param_7 + param_8 * 4,0)" (parenthesized_expression "(*(code *)PTR__M_construct<wchar_t_const*>_004c30ec)" ( (binary_expression "*(code *)PTR__M_construct<wchar_t_const*>_004c30ec" (binary_expression "*(code *)PTR__M_construct<wchar_t_const" (pointer_expression "*(code *)PTR__M_construct" * (cast_expression "(code *)PTR__M_construct" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) < identifier) (ERROR "*" *) > identifier) )) (argument_list "(local_30,param_7,param_7 + param_8 * 4,0)" ( identifier , identifier , (binary_expression "param_7 + param_8 * 4" identifier + (binary_expression "param_8 * 4" identifier * number_literal)) , number_literal ))) ;) comment (expression_statement "(**(code **)(*param_2 + 0xc))(&local_48,param_2,param_4,param_5,param_6,local_30);" (call_expression "(**(code **)(*param_2 + 0xc))(&local_48,param_2,param_4,param_5,param_6,local_30)" (parenthesized_expression "(**(code **)(*param_2 + 0xc))" ( (pointer_expression "**(code **)(*param_2 + 0xc)" * (pointer_expression "*(code **)(*param_2 + 0xc)" * (cast_expression "(code **)(*param_2 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0xc)" ( (binary_expression "*param_2 + 0xc" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(&local_48,param_2,param_4,param_5,param_6,local_30)" ( (pointer_expression "&local_48" & identifier) , identifier , identifier , identifier , identifier , identifier ))) ;) (if_statement "if ((code *)param_3[6] != (code *)0x0) {\n                    /* try { // try from 0037f000 to 0037f03b has its CatchHandler @ 0037f0c8 */\n    (*(code *)param_3[6])(param_3);\n  }" if (parenthesized_expression "((code *)param_3[6] != (code *)0x0)" ( (binary_expression "(code *)param_3[6] != (code *)0x0" (cast_expression "(code *)param_3[6]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[6]" identifier [ number_literal ])) != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* try { // try from 0037f000 to 0037f03b has its CatchHandler @ 0037f0c8 */\n    (*(code *)param_3[6])(param_3);\n  }" { comment (expression_statement "(*(code *)param_3[6])(param_3);" (call_expression "(*(code *)param_3[6])(param_3)" (parenthesized_expression "(*(code *)param_3[6])" ( (pointer_expression "*(code *)param_3[6]" * (cast_expression "(code *)param_3[6]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[6]" identifier [ number_literal ]))) )) (argument_list "(param_3)" ( identifier ))) ;) })) (expression_statement "puVar1 = PTR__M_construct<wchar_t*>_004c528c;" (assignment_expression "puVar1 = PTR__M_construct<wchar_t*>_004c528c" identifier = (binary_expression "PTR__M_construct<wchar_t*>_004c528c" (binary_expression "PTR__M_construct<wchar_t" identifier < identifier) (ERROR "*" *) > identifier)) ;) (expression_statement "*param_3 = (int)(param_3 + 2);" (assignment_expression "*param_3 = (int)(param_3 + 2)" (pointer_expression "*param_3" * identifier) = (cast_expression "(int)(param_3 + 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_3 + 2)" ( (binary_expression "param_3 + 2" identifier + number_literal) )))) ;) (expression_statement "(*(code *)puVar1)(param_3,local_48,local_48 + local_44 * 4,0);" (call_expression "(*(code *)puVar1)(param_3,local_48,local_48 + local_44 * 4,0)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_3,local_48,local_48 + local_44 * 4,0)" ( identifier , identifier , (binary_expression "local_48 + local_44 * 4" identifier + (binary_expression "local_44 * 4" identifier * number_literal)) , number_literal ))) ;) (expression_statement "param_3[6] = (int)(PTR_LAB_004c12c4 + -0x53e4);" (assignment_expression "param_3[6] = (int)(PTR_LAB_004c12c4 + -0x53e4)" (subscript_expression "param_3[6]" identifier [ number_literal ]) = (cast_expression "(int)(PTR_LAB_004c12c4 + -0x53e4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(PTR_LAB_004c12c4 + -0x53e4)" ( (binary_expression "PTR_LAB_004c12c4 + -0x53e4" identifier + number_literal) )))) ;) (if_statement "if (local_48 != auStack_40) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }" if (parenthesized_expression "(local_48 != auStack_40)" ( (binary_expression "local_48 != auStack_40" identifier != identifier) )) (compound_statement "{\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }" { (expression_statement "(*(code *)PTR_operator_delete_004c12fc)();" (call_expression "(*(code *)PTR_operator_delete_004c12fc)()" (parenthesized_expression "(*(code *)PTR_operator_delete_004c12fc)" ( (pointer_expression "*(code *)PTR_operator_delete_004c12fc" * (cast_expression "(code *)PTR_operator_delete_004c12fc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (if_statement "if (local_30[0] != auStack_28) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }" if (parenthesized_expression "(local_30[0] != auStack_28)" ( (binary_expression "local_30[0] != auStack_28" (subscript_expression "local_30[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }" { (expression_statement "(*(code *)PTR_operator_delete_004c12fc)();" (call_expression "(*(code *)PTR_operator_delete_004c12fc)()" (parenthesized_expression "(*(code *)PTR_operator_delete_004c12fc)" ( (pointer_expression "*(code *)PTR_operator_delete_004c12fc" * (cast_expression "(code *)PTR_operator_delete_004c12fc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* void std::__facet_shims::__messages_get<wchar_t>(std::integral_constant<bool, true>,\n   std::locale::facet const*, std::__facet_shims::__any_string&, int, int, int, wchar_t const*,\n   unsigned int) */\n\nvoid std::__facet_shims::__messages_get<wchar_t>\n               (undefined4 param_1,int *param_2,int *param_3,undefined4 param_4,undefined4 param_5,\n               undefined4 param_6,int param_7,int param_8)\n\n{\n  undefined *puVar1;\n  undefined1 *local_48;\n  int local_44;\n  undefined1 auStack_40 [16];\n  undefined1 *local_30 [2];\n  undefined1 auStack_28 [16];\n  \n  local_30[0] = auStack_28;\n  (*(code *)PTR__M_construct<wchar_t_const*>_004c30ec)(local_30,param_7,param_7 + param_8 * 4,0);\n                    /* try { // try from 0037efec to 0037eff3 has its CatchHandler @ 0037f09c */\n  (**(code **)(*param_2 + 0xc))(&local_48,param_2,param_4,param_5,param_6,local_30);\n  if ((code *)param_3[6] != (code *)0x0) {\n                    /* try { // try from 0037f000 to 0037f03b has its CatchHandler @ 0037f0c8 */\n    (*(code *)param_3[6])(param_3);\n  }\n  puVar1 = PTR__M_construct<wchar_t*>_004c528c;\n  *param_3 = (int)(param_3 + 2);\n  (*(code *)puVar1)(param_3,local_48,local_48 + local_44 * 4,0);\n  param_3[6] = (int)(PTR_LAB_004c12c4 + -0x53e4);\n  if (local_48 != auStack_40) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  if (local_30[0] != auStack_28) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  return;\n}\n\n" comment (function_definition "void std::__facet_shims::__messages_get<wchar_t>\n               (undefined4 param_1,int *param_2,int *param_3,undefined4 param_4,undefined4 param_5,\n               undefined4 param_6,int param_7,int param_8)\n\n{\n  undefined *puVar1;\n  undefined1 *local_48;\n  int local_44;\n  undefined1 auStack_40 [16];\n  undefined1 *local_30 [2];\n  undefined1 auStack_28 [16];\n  \n  local_30[0] = auStack_28;\n  (*(code *)PTR__M_construct<wchar_t_const*>_004c30ec)(local_30,param_7,param_7 + param_8 * 4,0);\n                    /* try { // try from 0037efec to 0037eff3 has its CatchHandler @ 0037f09c */\n  (**(code **)(*param_2 + 0xc))(&local_48,param_2,param_4,param_5,param_6,local_30);\n  if ((code *)param_3[6] != (code *)0x0) {\n                    /* try { // try from 0037f000 to 0037f03b has its CatchHandler @ 0037f0c8 */\n    (*(code *)param_3[6])(param_3);\n  }\n  puVar1 = PTR__M_construct<wchar_t*>_004c528c;\n  *param_3 = (int)(param_3 + 2);\n  (*(code *)puVar1)(param_3,local_48,local_48 + local_44 * 4,0);\n  param_3[6] = (int)(PTR_LAB_004c12c4 + -0x53e4);\n  if (local_48 != auStack_40) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  if (local_30[0] != auStack_28) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  return;\n}" primitive_type (ERROR "std::__facet_shims::__messages_get<" identifier : : identifier : : identifier <) (function_declarator "wchar_t>\n               (undefined4 param_1,int *param_2,int *param_3,undefined4 param_4,undefined4 param_5,\n               undefined4 param_6,int param_7,int param_8)" identifier (ERROR ">" >) (parameter_list "(undefined4 param_1,int *param_2,int *param_3,undefined4 param_4,undefined4 param_5,\n               undefined4 param_6,int param_7,int param_8)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "int param_7" primitive_type identifier) , (parameter_declaration "int param_8" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined1 *local_48;\n  int local_44;\n  undefined1 auStack_40 [16];\n  undefined1 *local_30 [2];\n  undefined1 auStack_28 [16];\n  \n  local_30[0] = auStack_28;\n  (*(code *)PTR__M_construct<wchar_t_const*>_004c30ec)(local_30,param_7,param_7 + param_8 * 4,0);\n                    /* try { // try from 0037efec to 0037eff3 has its CatchHandler @ 0037f09c */\n  (**(code **)(*param_2 + 0xc))(&local_48,param_2,param_4,param_5,param_6,local_30);\n  if ((code *)param_3[6] != (code *)0x0) {\n                    /* try { // try from 0037f000 to 0037f03b has its CatchHandler @ 0037f0c8 */\n    (*(code *)param_3[6])(param_3);\n  }\n  puVar1 = PTR__M_construct<wchar_t*>_004c528c;\n  *param_3 = (int)(param_3 + 2);\n  (*(code *)puVar1)(param_3,local_48,local_48 + local_44 * 4,0);\n  param_3[6] = (int)(PTR_LAB_004c12c4 + -0x53e4);\n  if (local_48 != auStack_40) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  if (local_30[0] != auStack_28) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined1 *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "undefined1 auStack_40 [16];" type_identifier (array_declarator "auStack_40 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_30 [2];" type_identifier (pointer_declarator "*local_30 [2]" * (array_declarator "local_30 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 auStack_28 [16];" type_identifier (array_declarator "auStack_28 [16]" identifier [ number_literal ]) ;) (expression_statement "local_30[0] = auStack_28;" (assignment_expression "local_30[0] = auStack_28" (subscript_expression "local_30[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "(*(code *)PTR__M_construct<wchar_t_const*>_004c30ec)(local_30,param_7,param_7 + param_8 * 4,0);" (call_expression "(*(code *)PTR__M_construct<wchar_t_const*>_004c30ec)(local_30,param_7,param_7 + param_8 * 4,0)" (parenthesized_expression "(*(code *)PTR__M_construct<wchar_t_const*>_004c30ec)" ( (binary_expression "*(code *)PTR__M_construct<wchar_t_const*>_004c30ec" (binary_expression "*(code *)PTR__M_construct<wchar_t_const" (pointer_expression "*(code *)PTR__M_construct" * (cast_expression "(code *)PTR__M_construct" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) < identifier) (ERROR "*" *) > identifier) )) (argument_list "(local_30,param_7,param_7 + param_8 * 4,0)" ( identifier , identifier , (binary_expression "param_7 + param_8 * 4" identifier + (binary_expression "param_8 * 4" identifier * number_literal)) , number_literal ))) ;) comment (expression_statement "(**(code **)(*param_2 + 0xc))(&local_48,param_2,param_4,param_5,param_6,local_30);" (call_expression "(**(code **)(*param_2 + 0xc))(&local_48,param_2,param_4,param_5,param_6,local_30)" (parenthesized_expression "(**(code **)(*param_2 + 0xc))" ( (pointer_expression "**(code **)(*param_2 + 0xc)" * (pointer_expression "*(code **)(*param_2 + 0xc)" * (cast_expression "(code **)(*param_2 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0xc)" ( (binary_expression "*param_2 + 0xc" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(&local_48,param_2,param_4,param_5,param_6,local_30)" ( (pointer_expression "&local_48" & identifier) , identifier , identifier , identifier , identifier , identifier ))) ;) (if_statement "if ((code *)param_3[6] != (code *)0x0) {\n                    /* try { // try from 0037f000 to 0037f03b has its CatchHandler @ 0037f0c8 */\n    (*(code *)param_3[6])(param_3);\n  }" if (parenthesized_expression "((code *)param_3[6] != (code *)0x0)" ( (binary_expression "(code *)param_3[6] != (code *)0x0" (cast_expression "(code *)param_3[6]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[6]" identifier [ number_literal ])) != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* try { // try from 0037f000 to 0037f03b has its CatchHandler @ 0037f0c8 */\n    (*(code *)param_3[6])(param_3);\n  }" { comment (expression_statement "(*(code *)param_3[6])(param_3);" (call_expression "(*(code *)param_3[6])(param_3)" (parenthesized_expression "(*(code *)param_3[6])" ( (pointer_expression "*(code *)param_3[6]" * (cast_expression "(code *)param_3[6]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[6]" identifier [ number_literal ]))) )) (argument_list "(param_3)" ( identifier ))) ;) })) (expression_statement "puVar1 = PTR__M_construct<wchar_t*>_004c528c;" (assignment_expression "puVar1 = PTR__M_construct<wchar_t*>_004c528c" identifier = (binary_expression "PTR__M_construct<wchar_t*>_004c528c" (binary_expression "PTR__M_construct<wchar_t" identifier < identifier) (ERROR "*" *) > identifier)) ;) (expression_statement "*param_3 = (int)(param_3 + 2);" (assignment_expression "*param_3 = (int)(param_3 + 2)" (pointer_expression "*param_3" * identifier) = (cast_expression "(int)(param_3 + 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_3 + 2)" ( (binary_expression "param_3 + 2" identifier + number_literal) )))) ;) (expression_statement "(*(code *)puVar1)(param_3,local_48,local_48 + local_44 * 4,0);" (call_expression "(*(code *)puVar1)(param_3,local_48,local_48 + local_44 * 4,0)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_3,local_48,local_48 + local_44 * 4,0)" ( identifier , identifier , (binary_expression "local_48 + local_44 * 4" identifier + (binary_expression "local_44 * 4" identifier * number_literal)) , number_literal ))) ;) (expression_statement "param_3[6] = (int)(PTR_LAB_004c12c4 + -0x53e4);" (assignment_expression "param_3[6] = (int)(PTR_LAB_004c12c4 + -0x53e4)" (subscript_expression "param_3[6]" identifier [ number_literal ]) = (cast_expression "(int)(PTR_LAB_004c12c4 + -0x53e4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(PTR_LAB_004c12c4 + -0x53e4)" ( (binary_expression "PTR_LAB_004c12c4 + -0x53e4" identifier + number_literal) )))) ;) (if_statement "if (local_48 != auStack_40) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }" if (parenthesized_expression "(local_48 != auStack_40)" ( (binary_expression "local_48 != auStack_40" identifier != identifier) )) (compound_statement "{\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }" { (expression_statement "(*(code *)PTR_operator_delete_004c12fc)();" (call_expression "(*(code *)PTR_operator_delete_004c12fc)()" (parenthesized_expression "(*(code *)PTR_operator_delete_004c12fc)" ( (pointer_expression "*(code *)PTR_operator_delete_004c12fc" * (cast_expression "(code *)PTR_operator_delete_004c12fc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (if_statement "if (local_30[0] != auStack_28) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }" if (parenthesized_expression "(local_30[0] != auStack_28)" ( (binary_expression "local_30[0] != auStack_28" (subscript_expression "local_30[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }" { (expression_statement "(*(code *)PTR_operator_delete_004c12fc)();" (call_expression "(*(code *)PTR_operator_delete_004c12fc)()" (parenthesized_expression "(*(code *)PTR_operator_delete_004c12fc)" ( (pointer_expression "*(code *)PTR_operator_delete_004c12fc" * (cast_expression "(code *)PTR_operator_delete_004c12fc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void std::__facet_shims::__messages_get<wchar_t>\n               (undefined4 param_1,int *param_2,int *param_3,undefined4 param_4,undefined4 param_5,\n               undefined4 param_6,int param_7,int param_8)\n\n{\n  undefined *puVar1;\n  undefined1 *local_48;\n  int local_44;\n  undefined1 auStack_40 [16];\n  undefined1 *local_30 [2];\n  undefined1 auStack_28 [16];\n  \n  local_30[0] = auStack_28;\n  (*(code *)PTR__M_construct<wchar_t_const*>_004c30ec)(local_30,param_7,param_7 + param_8 * 4,0);\n                    \n  (**(code **)(*param_2 + 0xc))(&local_48,param_2,param_4,param_5,param_6,local_30);\n  if ((code *)param_3[6] != (code *)0x0) {\n                    \n    (*(code *)param_3[6])(param_3);\n  }\n  puVar1 = PTR__M_construct<wchar_t*>_004c528c;\n  *param_3 = (int)(param_3 + 2);\n  (*(code *)puVar1)(param_3,local_48,local_48 + local_44 * 4,0);\n  param_3[6] = (int)(PTR_LAB_004c12c4 + -0x53e4);\n  if (local_48 != auStack_40) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  if (local_30[0] != auStack_28) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  return;\n}\n\n" (function_definition "void std::__facet_shims::__messages_get<wchar_t>\n               (undefined4 param_1,int *param_2,int *param_3,undefined4 param_4,undefined4 param_5,\n               undefined4 param_6,int param_7,int param_8)\n\n{\n  undefined *puVar1;\n  undefined1 *local_48;\n  int local_44;\n  undefined1 auStack_40 [16];\n  undefined1 *local_30 [2];\n  undefined1 auStack_28 [16];\n  \n  local_30[0] = auStack_28;\n  (*(code *)PTR__M_construct<wchar_t_const*>_004c30ec)(local_30,param_7,param_7 + param_8 * 4,0);\n                    \n  (**(code **)(*param_2 + 0xc))(&local_48,param_2,param_4,param_5,param_6,local_30);\n  if ((code *)param_3[6] != (code *)0x0) {\n                    \n    (*(code *)param_3[6])(param_3);\n  }\n  puVar1 = PTR__M_construct<wchar_t*>_004c528c;\n  *param_3 = (int)(param_3 + 2);\n  (*(code *)puVar1)(param_3,local_48,local_48 + local_44 * 4,0);\n  param_3[6] = (int)(PTR_LAB_004c12c4 + -0x53e4);\n  if (local_48 != auStack_40) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  if (local_30[0] != auStack_28) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  return;\n}" primitive_type (ERROR "std::__facet_shims::__messages_get<" identifier : : identifier : : identifier <) (function_declarator "wchar_t>\n               (undefined4 param_1,int *param_2,int *param_3,undefined4 param_4,undefined4 param_5,\n               undefined4 param_6,int param_7,int param_8)" identifier (ERROR ">" >) (parameter_list "(undefined4 param_1,int *param_2,int *param_3,undefined4 param_4,undefined4 param_5,\n               undefined4 param_6,int param_7,int param_8)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "int param_7" primitive_type identifier) , (parameter_declaration "int param_8" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined1 *local_48;\n  int local_44;\n  undefined1 auStack_40 [16];\n  undefined1 *local_30 [2];\n  undefined1 auStack_28 [16];\n  \n  local_30[0] = auStack_28;\n  (*(code *)PTR__M_construct<wchar_t_const*>_004c30ec)(local_30,param_7,param_7 + param_8 * 4,0);\n                    \n  (**(code **)(*param_2 + 0xc))(&local_48,param_2,param_4,param_5,param_6,local_30);\n  if ((code *)param_3[6] != (code *)0x0) {\n                    \n    (*(code *)param_3[6])(param_3);\n  }\n  puVar1 = PTR__M_construct<wchar_t*>_004c528c;\n  *param_3 = (int)(param_3 + 2);\n  (*(code *)puVar1)(param_3,local_48,local_48 + local_44 * 4,0);\n  param_3[6] = (int)(PTR_LAB_004c12c4 + -0x53e4);\n  if (local_48 != auStack_40) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  if (local_30[0] != auStack_28) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined1 *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "undefined1 auStack_40 [16];" type_identifier (array_declarator "auStack_40 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_30 [2];" type_identifier (pointer_declarator "*local_30 [2]" * (array_declarator "local_30 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 auStack_28 [16];" type_identifier (array_declarator "auStack_28 [16]" identifier [ number_literal ]) ;) (expression_statement "local_30[0] = auStack_28;" (assignment_expression "local_30[0] = auStack_28" (subscript_expression "local_30[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "(*(code *)PTR__M_construct<wchar_t_const*>_004c30ec)(local_30,param_7,param_7 + param_8 * 4,0);" (call_expression "(*(code *)PTR__M_construct<wchar_t_const*>_004c30ec)(local_30,param_7,param_7 + param_8 * 4,0)" (parenthesized_expression "(*(code *)PTR__M_construct<wchar_t_const*>_004c30ec)" ( (binary_expression "*(code *)PTR__M_construct<wchar_t_const*>_004c30ec" (binary_expression "*(code *)PTR__M_construct<wchar_t_const" (pointer_expression "*(code *)PTR__M_construct" * (cast_expression "(code *)PTR__M_construct" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) < identifier) (ERROR "*" *) > identifier) )) (argument_list "(local_30,param_7,param_7 + param_8 * 4,0)" ( identifier , identifier , (binary_expression "param_7 + param_8 * 4" identifier + (binary_expression "param_8 * 4" identifier * number_literal)) , number_literal ))) ;) (expression_statement "(**(code **)(*param_2 + 0xc))(&local_48,param_2,param_4,param_5,param_6,local_30);" (call_expression "(**(code **)(*param_2 + 0xc))(&local_48,param_2,param_4,param_5,param_6,local_30)" (parenthesized_expression "(**(code **)(*param_2 + 0xc))" ( (pointer_expression "**(code **)(*param_2 + 0xc)" * (pointer_expression "*(code **)(*param_2 + 0xc)" * (cast_expression "(code **)(*param_2 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0xc)" ( (binary_expression "*param_2 + 0xc" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(&local_48,param_2,param_4,param_5,param_6,local_30)" ( (pointer_expression "&local_48" & identifier) , identifier , identifier , identifier , identifier , identifier ))) ;) (if_statement "if ((code *)param_3[6] != (code *)0x0) {\n                    \n    (*(code *)param_3[6])(param_3);\n  }" if (parenthesized_expression "((code *)param_3[6] != (code *)0x0)" ( (binary_expression "(code *)param_3[6] != (code *)0x0" (cast_expression "(code *)param_3[6]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[6]" identifier [ number_literal ])) != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n    (*(code *)param_3[6])(param_3);\n  }" { (expression_statement "(*(code *)param_3[6])(param_3);" (call_expression "(*(code *)param_3[6])(param_3)" (parenthesized_expression "(*(code *)param_3[6])" ( (pointer_expression "*(code *)param_3[6]" * (cast_expression "(code *)param_3[6]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[6]" identifier [ number_literal ]))) )) (argument_list "(param_3)" ( identifier ))) ;) })) (expression_statement "puVar1 = PTR__M_construct<wchar_t*>_004c528c;" (assignment_expression "puVar1 = PTR__M_construct<wchar_t*>_004c528c" identifier = (binary_expression "PTR__M_construct<wchar_t*>_004c528c" (binary_expression "PTR__M_construct<wchar_t" identifier < identifier) (ERROR "*" *) > identifier)) ;) (expression_statement "*param_3 = (int)(param_3 + 2);" (assignment_expression "*param_3 = (int)(param_3 + 2)" (pointer_expression "*param_3" * identifier) = (cast_expression "(int)(param_3 + 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_3 + 2)" ( (binary_expression "param_3 + 2" identifier + number_literal) )))) ;) (expression_statement "(*(code *)puVar1)(param_3,local_48,local_48 + local_44 * 4,0);" (call_expression "(*(code *)puVar1)(param_3,local_48,local_48 + local_44 * 4,0)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_3,local_48,local_48 + local_44 * 4,0)" ( identifier , identifier , (binary_expression "local_48 + local_44 * 4" identifier + (binary_expression "local_44 * 4" identifier * number_literal)) , number_literal ))) ;) (expression_statement "param_3[6] = (int)(PTR_LAB_004c12c4 + -0x53e4);" (assignment_expression "param_3[6] = (int)(PTR_LAB_004c12c4 + -0x53e4)" (subscript_expression "param_3[6]" identifier [ number_literal ]) = (cast_expression "(int)(PTR_LAB_004c12c4 + -0x53e4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(PTR_LAB_004c12c4 + -0x53e4)" ( (binary_expression "PTR_LAB_004c12c4 + -0x53e4" identifier + number_literal) )))) ;) (if_statement "if (local_48 != auStack_40) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }" if (parenthesized_expression "(local_48 != auStack_40)" ( (binary_expression "local_48 != auStack_40" identifier != identifier) )) (compound_statement "{\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }" { (expression_statement "(*(code *)PTR_operator_delete_004c12fc)();" (call_expression "(*(code *)PTR_operator_delete_004c12fc)()" (parenthesized_expression "(*(code *)PTR_operator_delete_004c12fc)" ( (pointer_expression "*(code *)PTR_operator_delete_004c12fc" * (cast_expression "(code *)PTR_operator_delete_004c12fc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (if_statement "if (local_30[0] != auStack_28) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }" if (parenthesized_expression "(local_30[0] != auStack_28)" ( (binary_expression "local_30[0] != auStack_28" (subscript_expression "local_30[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }" { (expression_statement "(*(code *)PTR_operator_delete_004c12fc)();" (call_expression "(*(code *)PTR_operator_delete_004c12fc)()" (parenthesized_expression "(*(code *)PTR_operator_delete_004c12fc)" ( (pointer_expression "*(code *)PTR_operator_delete_004c12fc" * (cast_expression "(code *)PTR_operator_delete_004c12fc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT : : IDENT : : IDENT <) (function_declarator IDENT (ERROR >) (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) < IDENT) (ERROR *) > IDENT) )) (argument_list ( IDENT , IDENT , (binary_expression IDENT + (binary_expression IDENT * LIT)) , LIT ))) ;) (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 (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT < IDENT) (ERROR *) > IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , (binary_expression IDENT + (binary_expression IDENT * LIT)) , LIT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) })) (return_statement return ;) })))
(function_definition "void std::__facet_shims::__messages_get<wchar_t>\n               (undefined4 param_1,int *param_2,int *param_3,undefined4 param_4,undefined4 param_5,\n               undefined4 param_6,int param_7,int param_8)\n\n{\n  undefined *puVar1;\n  undefined1 *local_48;\n  int local_44;\n  undefined1 auStack_40 [16];\n  undefined1 *local_30 [2];\n  undefined1 auStack_28 [16];\n  \n  local_30[0] = auStack_28;\n  (*(code *)PTR__M_construct<wchar_t_const*>_004c30ec)(local_30,param_7,param_7 + param_8 * 4,0);\n                    \n  (**(code **)(*param_2 + 0xc))(&local_48,param_2,param_4,param_5,param_6,local_30);\n  if ((code *)param_3[6] != (code *)0x0) {\n                    \n    (*(code *)param_3[6])(param_3);\n  }\n  puVar1 = PTR__M_construct<wchar_t*>_004c528c;\n  *param_3 = (int)(param_3 + 2);\n  (*(code *)puVar1)(param_3,local_48,local_48 + local_44 * 4,0);\n  param_3[6] = (int)(PTR_LAB_004c12c4 + -0x53e4);\n  if (local_48 != auStack_40) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  if (local_30[0] != auStack_28) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  return;\n}" (primitive_type "void") (ERROR "std::__facet_shims::__messages_get<" (identifier "std") (: ":") (: ":") (identifier "__facet_shims") (: ":") (: ":") (identifier "__messages_get") (< "<")) (function_declarator "wchar_t>\n               (undefined4 param_1,int *param_2,int *param_3,undefined4 param_4,undefined4 param_5,\n               undefined4 param_6,int param_7,int param_8)" (identifier "wchar_t") (ERROR ">" (> ">")) (parameter_list "(undefined4 param_1,int *param_2,int *param_3,undefined4 param_4,undefined4 param_5,\n               undefined4 param_6,int param_7,int param_8)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) (, ",") (parameter_declaration "undefined4 param_6" (type_identifier "undefined4") (identifier "param_6")) (, ",") (parameter_declaration "int param_7" (primitive_type "int") (identifier "param_7")) (, ",") (parameter_declaration "int param_8" (primitive_type "int") (identifier "param_8")) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  undefined1 *local_48;\n  int local_44;\n  undefined1 auStack_40 [16];\n  undefined1 *local_30 [2];\n  undefined1 auStack_28 [16];\n  \n  local_30[0] = auStack_28;\n  (*(code *)PTR__M_construct<wchar_t_const*>_004c30ec)(local_30,param_7,param_7 + param_8 * 4,0);\n                    \n  (**(code **)(*param_2 + 0xc))(&local_48,param_2,param_4,param_5,param_6,local_30);\n  if ((code *)param_3[6] != (code *)0x0) {\n                    \n    (*(code *)param_3[6])(param_3);\n  }\n  puVar1 = PTR__M_construct<wchar_t*>_004c528c;\n  *param_3 = (int)(param_3 + 2);\n  (*(code *)puVar1)(param_3,local_48,local_48 + local_44 * 4,0);\n  param_3[6] = (int)(PTR_LAB_004c12c4 + -0x53e4);\n  if (local_48 != auStack_40) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  if (local_30[0] != auStack_28) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  return;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined1 *local_48;" (type_identifier "undefined1") (pointer_declarator "*local_48" (* "*") (identifier "local_48")) (; ";")) (declaration "int local_44;" (primitive_type "int") (identifier "local_44") (; ";")) (declaration "undefined1 auStack_40 [16];" (type_identifier "undefined1") (array_declarator "auStack_40 [16]" (identifier "auStack_40") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined1 *local_30 [2];" (type_identifier "undefined1") (pointer_declarator "*local_30 [2]" (* "*") (array_declarator "local_30 [2]" (identifier "local_30") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "undefined1 auStack_28 [16];" (type_identifier "undefined1") (array_declarator "auStack_28 [16]" (identifier "auStack_28") ([ "[") (number_literal "16") (] "]")) (; ";")) (expression_statement "local_30[0] = auStack_28;" (assignment_expression "local_30[0] = auStack_28" (subscript_expression "local_30[0]" (identifier "local_30") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "auStack_28")) (; ";")) (expression_statement "(*(code *)PTR__M_construct<wchar_t_const*>_004c30ec)(local_30,param_7,param_7 + param_8 * 4,0);" (call_expression "(*(code *)PTR__M_construct<wchar_t_const*>_004c30ec)(local_30,param_7,param_7 + param_8 * 4,0)" (parenthesized_expression "(*(code *)PTR__M_construct<wchar_t_const*>_004c30ec)" (( "(") (binary_expression "*(code *)PTR__M_construct<wchar_t_const*>_004c30ec" (binary_expression "*(code *)PTR__M_construct<wchar_t_const" (pointer_expression "*(code *)PTR__M_construct" (* "*") (cast_expression "(code *)PTR__M_construct" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR__M_construct"))) (< "<") (identifier "wchar_t_const")) (ERROR "*" (* "*")) (> ">") (identifier "_004c30ec")) () ")")) (argument_list "(local_30,param_7,param_7 + param_8 * 4,0)" (( "(") (identifier "local_30") (, ",") (identifier "param_7") (, ",") (binary_expression "param_7 + param_8 * 4" (identifier "param_7") (+ "+") (binary_expression "param_8 * 4" (identifier "param_8") (* "*") (number_literal "4"))) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "(**(code **)(*param_2 + 0xc))(&local_48,param_2,param_4,param_5,param_6,local_30);" (call_expression "(**(code **)(*param_2 + 0xc))(&local_48,param_2,param_4,param_5,param_6,local_30)" (parenthesized_expression "(**(code **)(*param_2 + 0xc))" (( "(") (pointer_expression "**(code **)(*param_2 + 0xc)" (* "*") (pointer_expression "*(code **)(*param_2 + 0xc)" (* "*") (cast_expression "(code **)(*param_2 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0xc)" (( "(") (binary_expression "*param_2 + 0xc" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (argument_list "(&local_48,param_2,param_4,param_5,param_6,local_30)" (( "(") (pointer_expression "&local_48" (& "&") (identifier "local_48")) (, ",") (identifier "param_2") (, ",") (identifier "param_4") (, ",") (identifier "param_5") (, ",") (identifier "param_6") (, ",") (identifier "local_30") () ")"))) (; ";")) (if_statement "if ((code *)param_3[6] != (code *)0x0) {\n                    \n    (*(code *)param_3[6])(param_3);\n  }" (if "if") (parenthesized_expression "((code *)param_3[6] != (code *)0x0)" (( "(") (binary_expression "(code *)param_3[6] != (code *)0x0" (cast_expression "(code *)param_3[6]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[6]" (identifier "param_3") ([ "[") (number_literal "6") (] "]"))) (!= "!=") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n    (*(code *)param_3[6])(param_3);\n  }" ({ "{") (expression_statement "(*(code *)param_3[6])(param_3);" (call_expression "(*(code *)param_3[6])(param_3)" (parenthesized_expression "(*(code *)param_3[6])" (( "(") (pointer_expression "*(code *)param_3[6]" (* "*") (cast_expression "(code *)param_3[6]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[6]" (identifier "param_3") ([ "[") (number_literal "6") (] "]")))) () ")")) (argument_list "(param_3)" (( "(") (identifier "param_3") () ")"))) (; ";")) (} "}"))) (expression_statement "puVar1 = PTR__M_construct<wchar_t*>_004c528c;" (assignment_expression "puVar1 = PTR__M_construct<wchar_t*>_004c528c" (identifier "puVar1") (= "=") (binary_expression "PTR__M_construct<wchar_t*>_004c528c" (binary_expression "PTR__M_construct<wchar_t" (identifier "PTR__M_construct") (< "<") (identifier "wchar_t")) (ERROR "*" (* "*")) (> ">") (identifier "_004c528c"))) (; ";")) (expression_statement "*param_3 = (int)(param_3 + 2);" (assignment_expression "*param_3 = (int)(param_3 + 2)" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (cast_expression "(int)(param_3 + 2)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(param_3 + 2)" (( "(") (binary_expression "param_3 + 2" (identifier "param_3") (+ "+") (number_literal "2")) () ")")))) (; ";")) (expression_statement "(*(code *)puVar1)(param_3,local_48,local_48 + local_44 * 4,0);" (call_expression "(*(code *)puVar1)(param_3,local_48,local_48 + local_44 * 4,0)" (parenthesized_expression "(*(code *)puVar1)" (( "(") (pointer_expression "*(code *)puVar1" (* "*") (cast_expression "(code *)puVar1" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1"))) () ")")) (argument_list "(param_3,local_48,local_48 + local_44 * 4,0)" (( "(") (identifier "param_3") (, ",") (identifier "local_48") (, ",") (binary_expression "local_48 + local_44 * 4" (identifier "local_48") (+ "+") (binary_expression "local_44 * 4" (identifier "local_44") (* "*") (number_literal "4"))) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "param_3[6] = (int)(PTR_LAB_004c12c4 + -0x53e4);" (assignment_expression "param_3[6] = (int)(PTR_LAB_004c12c4 + -0x53e4)" (subscript_expression "param_3[6]" (identifier "param_3") ([ "[") (number_literal "6") (] "]")) (= "=") (cast_expression "(int)(PTR_LAB_004c12c4 + -0x53e4)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(PTR_LAB_004c12c4 + -0x53e4)" (( "(") (binary_expression "PTR_LAB_004c12c4 + -0x53e4" (identifier "PTR_LAB_004c12c4") (+ "+") (number_literal "-0x53e4")) () ")")))) (; ";")) (if_statement "if (local_48 != auStack_40) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }" (if "if") (parenthesized_expression "(local_48 != auStack_40)" (( "(") (binary_expression "local_48 != auStack_40" (identifier "local_48") (!= "!=") (identifier "auStack_40")) () ")")) (compound_statement "{\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }" ({ "{") (expression_statement "(*(code *)PTR_operator_delete_004c12fc)();" (call_expression "(*(code *)PTR_operator_delete_004c12fc)()" (parenthesized_expression "(*(code *)PTR_operator_delete_004c12fc)" (( "(") (pointer_expression "*(code *)PTR_operator_delete_004c12fc" (* "*") (cast_expression "(code *)PTR_operator_delete_004c12fc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_operator_delete_004c12fc"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_30[0] != auStack_28) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }" (if "if") (parenthesized_expression "(local_30[0] != auStack_28)" (( "(") (binary_expression "local_30[0] != auStack_28" (subscript_expression "local_30[0]" (identifier "local_30") ([ "[") (number_literal "0") (] "]")) (!= "!=") (identifier "auStack_28")) () ")")) (compound_statement "{\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }" ({ "{") (expression_statement "(*(code *)PTR_operator_delete_004c12fc)();" (call_expression "(*(code *)PTR_operator_delete_004c12fc)()" (parenthesized_expression "(*(code *)PTR_operator_delete_004c12fc)" (( "(") (pointer_expression "*(code *)PTR_operator_delete_004c12fc" (* "*") (cast_expression "(code *)PTR_operator_delete_004c12fc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_operator_delete_004c12fc"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) (ERROR (identifier) (identifier) (identifier)) declarator: (function_declarator declarator: (identifier) (ERROR) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator 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: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (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))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (identifier)) (ERROR) right: (identifier))) arguments: (argument_list (identifier) (identifier) (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) (number_literal)))) (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (identifier) (identifier) (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) (ERROR) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))))) (return_statement))))

/* void std::__facet_shims::MASKED(std::integral_constant<bool, true>,
   std::locale::facet const*, std::__facet_shims::__any_string&, int, int, int, wchar_t const*,
   unsigned int) */

void std::__facet_shims::MASKED
               (undefined4 param_1,int *param_2,int *param_3,undefined4 param_4,undefined4 param_5,
               undefined4 param_6,int param_7,int param_8)

{
  undefined *puVar1;
  undefined1 *local_48;
  int local_44;
  undefined1 auStack_40 [16];
  undefined1 *local_30 [2];
  undefined1 auStack_28 [16];
  
  local_30[0] = auStack_28;
  (*(code *)PTR__M_construct<wchar_t_const*>_004c30ec)(local_30,param_7,param_7 + param_8 * 4,0);
                    /* try { // try from 0037efec to 0037eff3 has its CatchHandler @ 0037f09c */
  (**(code **)(*param_2 + 0xc))(&local_48,param_2,param_4,param_5,param_6,local_30);
  if ((code *)param_3[6] != (code *)0x0) {
                    /* try { // try from 0037f000 to 0037f03b has its CatchHandler @ 0037f0c8 */
    (*(code *)param_3[6])(param_3);
  }
  puVar1 = PTR__M_construct<wchar_t*>_004c528c;
  *param_3 = (int)(param_3 + 2);
  (*(code *)puVar1)(param_3,local_48,local_48 + local_44 * 4,0);
  param_3[6] = (int)(PTR_LAB_004c12c4 + -0x53e4);
  if (local_48 != auStack_40) {
    (*(code *)PTR_operator_delete_004c12fc)();
  }
  if (local_30[0] != auStack_28) {
    (*(code *)PTR_operator_delete_004c12fc)();
  }
  return;
}

