
/* std::money_get<char, std::istreambuf_iterator<char, std::char_traits<char> >
   >::do_get(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char,
   std::char_traits<char> >, bool, std::ios_base&, std::_Ios_Iostate&, std::string&) const */

undefined4 *
std::money_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::do_get
          (undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
          undefined4 param_5,undefined4 param_6,char param_7,int param_8,undefined4 param_9,
          string *param_10)

{
  undefined *puVar1;
  char *pcVar2;
  ctype *this;
  char *pcVar3;
  uint uVar4;
  char *pcVar5;
  code *pcVar6;
  char *local_28 [2];
  undefined4 local_20;
  undefined4 local_1c;
  
  puVar1 = PTR__S_empty_rep_storage_004c1340;
  this = use_facet<std::ctype<char>>((locale *)(param_8 + 0x6c));
  local_28[0] = puVar1 + 0xc;
  pcVar6 = (code *)PTR__M_extract<false>_004c2e08;
  if (param_7 != '\0') {
    pcVar6 = (code *)PTR__M_extract<true>_004c2e04;
  }
                    /* try { // try from 0035bcf4 to 0035bde7 has its CatchHandler @ 0035bdf8 */
  (*pcVar6)(&local_20,param_2,param_3,param_4,param_5,param_6,param_8,param_9,local_28);
  uVar4 = *(uint *)(local_28[0] + -0xc);
  if (uVar4 == 0) {
    *param_1 = local_20;
    param_1[1] = local_1c;
  }
  else {
    std::string::resize(param_10,uVar4,'\0');
    pcVar2 = local_28[0];
    pcVar3 = *(char **)param_10;
    pcVar5 = local_28[0] + uVar4;
    if (-1 < *(int *)(pcVar3 + -4)) {
      std::string::_M_leak_hard(param_10);
      pcVar3 = *(char **)param_10;
    }
    ctype<char>::widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);
    *param_1 = local_20;
    param_1[1] = local_1c;
  }
  if ((allocator *)(local_28[0] + -0xc) != (allocator *)puVar1) {
    std::string::_Rep::_M_dispose((allocator *)(local_28[0] + -0xc));
  }
  return param_1;
}



undefined4 *
FUN_0035bc58(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6,char param_7,int param_8,undefined4 param_9,
            string *param_10)

{
  undefined *puVar1;
  char *pcVar2;
  ctype *this;
  char *pcVar3;
  uint uVar4;
  char *pcVar5;
  code *pcVar6;
  char *local_28;
  undefined1 auStack_24 [4];
  undefined4 local_20;
  undefined4 local_1c;
  
  puVar1 = PTR__S_empty_rep_storage_004c1340;
  this = std::use_facet<std::ctype<char>>((locale *)(param_8 + 0x6c));
  local_28 = puVar1 + 0xc;
  pcVar6 = (code *)PTR__M_extract<false>_004c2e08;
  if (param_7 != '\0') {
    pcVar6 = (code *)PTR__M_extract<true>_004c2e04;
  }
                    /* try { // try from 0035bcf4 to 0035bde7 has its CatchHandler @ 0035bdf8 */
  (*pcVar6)(&local_20,param_2,param_3,param_4,param_5,param_6,param_8,param_9,&local_28);
  uVar4 = *(uint *)(local_28 + -0xc);
  if (uVar4 == 0) {
    *param_1 = local_20;
    param_1[1] = local_1c;
  }
  else {
    std::string::resize(param_10,uVar4,'\0');
    pcVar2 = local_28;
    pcVar3 = *(char **)param_10;
    pcVar5 = local_28 + uVar4;
    if (-1 < *(int *)(pcVar3 + -4)) {
      std::string::_M_leak_hard(param_10);
      pcVar3 = *(char **)param_10;
    }
    std::ctype<char>::widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);
    *param_1 = local_20;
    param_1[1] = local_1c;
  }
  if (local_28 + -0xc != puVar1) {
    FUN_00347de0(local_28 + -0xc,auStack_24);
  }
  return param_1;
}


lui gp,0x17
addiu gp,gp,-0x2a18
addu gp,gp,t9
addiu sp,sp,-0x58
lw t9,-0x65bc(gp)
sw s1,0x44(sp)
sw s2,0x48(sp)
sw s0,0x40(sp)
or s0,a0,zero
sw gp,0x28(sp)
sw s4,0x50(sp)
sw s3,0x4c(sp)
sw a1,0x5c(sp)
sw a2,0x60(sp)
sw a3,0x64(sp)
sw ra,0x54(sp)
lw s1,0x74(sp)
lw s2,-0x7f00(gp)
lbu s4,0x73(sp)
bal 0x0034b25c
_addiu a0,s1,0x6c
addiu v1,s2,0xc
lw gp,0x28(sp)
or s3,v0,zero
lw a1,0x5c(sp)
addiu a0,sp,0x38
lw a2,0x60(sp)
lw a3,0x64(sp)
beq s4,zero,0x0035bd58
_sw v1,0x30(sp)
lw t9,-0x643c(gp)
addiu v0,sp,0x30
sw s1,0x18(sp)
sw v0,0x20(sp)
lw v0,0x78(sp)
sw v0,0x1c(sp)
lw v0,0x68(sp)
sw v0,0x10(sp)
lw v0,0x6c(sp)
jalr t9
_sw v0,0x14(sp)
lw a0,0x30(sp)
lw v0,0x38(sp)
lw gp,0x28(sp)
lw s1,-0xc(a0)
sw v0,0x60(sp)
lw v0,0x3c(sp)
bne s1,zero,0x0035bd60
_sw v0,0x64(sp)
lw v0,0x60(sp)
addiu a0,a0,-0xc
sw v0,0x0(s0)
lw v0,0x64(sp)
bne a0,s2,0x0035bdc8
_sw v0,0x4(s0)
lw ra,0x54(sp)
or v0,s0,zero
lw s4,0x50(sp)
lw s3,0x4c(sp)
lw s2,0x48(sp)
lw s1,0x44(sp)
lw s0,0x40(sp)
jr ra
_addiu sp,sp,0x58
b 0x0035bcd4
_lw t9,-0x6438(gp)
lw t9,-0x6434(gp)
or a2,zero,zero
lw a0,0x7c(sp)
bal 0x00378914
_or a1,s1,zero
lw v0,0x7c(sp)
lw s4,0x30(sp)
lw gp,0x28(sp)
lw a3,0x0(v0)
addu s1,s4,s1
lw v0,-0x4(a3)
bgez v0,0x0035bde0
_lw t9,-0x6540(gp)
lw t9,-0x659c(gp)
or a2,s1,zero
or a1,s4,zero
bal 0x003484e4
_or a0,s3,zero
lw v0,0x60(sp)
lw a0,0x30(sp)
lw gp,0x28(sp)
sw v0,0x0(s0)
lw v0,0x64(sp)
addiu a0,a0,-0xc
beq a0,s2,0x0035bd34
_sw v0,0x4(s0)
lw t9,-0x6660(gp)
addiu t9,t9,0x7de0
bal 0x00347de0
_addiu a1,sp,0x34
b 0x0035bd38
_lw ra,0x54(sp)
bal 0x00377180
_lw a0,0x7c(sp)
lw v0,0x7c(sp)
lw gp,0x28(sp)
b 0x0035bd94
_lw a3,0x0(v0)
(translation_unit "undefined4 *\nFUN_0035bc58(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,char param_7,int param_8,undefined4 param_9,\n            string *param_10)\n\n{\n  undefined *puVar1;\n  char *pcVar2;\n  ctype *this;\n  char *pcVar3;\n  uint uVar4;\n  char *pcVar5;\n  code *pcVar6;\n  char *local_28;\n  undefined1 auStack_24 [4];\n  undefined4 local_20;\n  undefined4 local_1c;\n  \n  puVar1 = PTR__S_empty_rep_storage_004c1340;\n  this = std::use_facet<std::ctype<char>>((locale *)(param_8 + 0x6c));\n  local_28 = puVar1 + 0xc;\n  pcVar6 = (code *)PTR__M_extract<false>_004c2e08;\n  if (param_7 != '\0') {\n    pcVar6 = (code *)PTR__M_extract<true>_004c2e04;\n  }\n                    /* try { // try from 0035bcf4 to 0035bde7 has its CatchHandler @ 0035bdf8 */\n  (*pcVar6)(&local_20,param_2,param_3,param_4,param_5,param_6,param_8,param_9,&local_28);\n  uVar4 = *(uint *)(local_28 + -0xc);\n  if (uVar4 == 0) {\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }\n  else {\n    std::string::resize(param_10,uVar4,'\0');\n    pcVar2 = local_28;\n    pcVar3 = *(char **)param_10;\n    pcVar5 = local_28 + uVar4;\n    if (-1 < *(int *)(pcVar3 + -4)) {\n      std::string::_M_leak_hard(param_10);\n      pcVar3 = *(char **)param_10;\n    }\n    std::ctype<char>::widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }\n  if (local_28 + -0xc != puVar1) {\n    FUN_00347de0(local_28 + -0xc,auStack_24);\n  }\n  return param_1;\n}\n\n" (function_definition "undefined4 *\nFUN_0035bc58(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,char param_7,int param_8,undefined4 param_9,\n            string *param_10)\n\n{\n  undefined *puVar1;\n  char *pcVar2;\n  ctype *this;\n  char *pcVar3;\n  uint uVar4;\n  char *pcVar5;\n  code *pcVar6;\n  char *local_28;\n  undefined1 auStack_24 [4];\n  undefined4 local_20;\n  undefined4 local_1c;\n  \n  puVar1 = PTR__S_empty_rep_storage_004c1340;\n  this = std::use_facet<std::ctype<char>>((locale *)(param_8 + 0x6c));\n  local_28 = puVar1 + 0xc;\n  pcVar6 = (code *)PTR__M_extract<false>_004c2e08;\n  if (param_7 != '\0') {\n    pcVar6 = (code *)PTR__M_extract<true>_004c2e04;\n  }\n                    /* try { // try from 0035bcf4 to 0035bde7 has its CatchHandler @ 0035bdf8 */\n  (*pcVar6)(&local_20,param_2,param_3,param_4,param_5,param_6,param_8,param_9,&local_28);\n  uVar4 = *(uint *)(local_28 + -0xc);\n  if (uVar4 == 0) {\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }\n  else {\n    std::string::resize(param_10,uVar4,'\0');\n    pcVar2 = local_28;\n    pcVar3 = *(char **)param_10;\n    pcVar5 = local_28 + uVar4;\n    if (-1 < *(int *)(pcVar3 + -4)) {\n      std::string::_M_leak_hard(param_10);\n      pcVar3 = *(char **)param_10;\n    }\n    std::ctype<char>::widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }\n  if (local_28 + -0xc != puVar1) {\n    FUN_00347de0(local_28 + -0xc,auStack_24);\n  }\n  return param_1;\n}" type_identifier (pointer_declarator "*\nFUN_0035bc58(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,char param_7,int param_8,undefined4 param_9,\n            string *param_10)" * (function_declarator "FUN_0035bc58(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,char param_7,int param_8,undefined4 param_9,\n            string *param_10)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,char param_7,int param_8,undefined4 param_9,\n            string *param_10)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier 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 "char param_7" primitive_type identifier) , (parameter_declaration "int param_8" primitive_type identifier) , (parameter_declaration "undefined4 param_9" type_identifier identifier) , (parameter_declaration "string *param_10" type_identifier (pointer_declarator "*param_10" * identifier)) )))) (compound_statement "{\n  undefined *puVar1;\n  char *pcVar2;\n  ctype *this;\n  char *pcVar3;\n  uint uVar4;\n  char *pcVar5;\n  code *pcVar6;\n  char *local_28;\n  undefined1 auStack_24 [4];\n  undefined4 local_20;\n  undefined4 local_1c;\n  \n  puVar1 = PTR__S_empty_rep_storage_004c1340;\n  this = std::use_facet<std::ctype<char>>((locale *)(param_8 + 0x6c));\n  local_28 = puVar1 + 0xc;\n  pcVar6 = (code *)PTR__M_extract<false>_004c2e08;\n  if (param_7 != '\0') {\n    pcVar6 = (code *)PTR__M_extract<true>_004c2e04;\n  }\n                    /* try { // try from 0035bcf4 to 0035bde7 has its CatchHandler @ 0035bdf8 */\n  (*pcVar6)(&local_20,param_2,param_3,param_4,param_5,param_6,param_8,param_9,&local_28);\n  uVar4 = *(uint *)(local_28 + -0xc);\n  if (uVar4 == 0) {\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }\n  else {\n    std::string::resize(param_10,uVar4,'\0');\n    pcVar2 = local_28;\n    pcVar3 = *(char **)param_10;\n    pcVar5 = local_28 + uVar4;\n    if (-1 < *(int *)(pcVar3 + -4)) {\n      std::string::_M_leak_hard(param_10);\n      pcVar3 = *(char **)param_10;\n    }\n    std::ctype<char>::widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }\n  if (local_28 + -0xc != puVar1) {\n    FUN_00347de0(local_28 + -0xc,auStack_24);\n  }\n  return param_1;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "ctype *this;" type_identifier (pointer_declarator "*this" * identifier) ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "char *local_28;" primitive_type (pointer_declarator "*local_28" * identifier) ;) (declaration "undefined1 auStack_24 [4];" type_identifier (array_declarator "auStack_24 [4]" identifier [ number_literal ]) ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (declaration "undefined4 local_1c;" type_identifier identifier ;) (expression_statement "puVar1 = PTR__S_empty_rep_storage_004c1340;" (assignment_expression "puVar1 = PTR__S_empty_rep_storage_004c1340" identifier = identifier) ;) (expression_statement "this = std::use_facet<std::ctype<char>>((locale *)(param_8 + 0x6c));" (binary_expression "this = std::use_facet<std::ctype<char>>((locale *)(param_8 + 0x6c))" (binary_expression "this = std::use_facet<std" (assignment_expression "this = std" identifier = identifier) (ERROR "::use_facet" : : identifier) < identifier) (ERROR "::ctype" : : identifier) < (binary_expression "char>>((locale *)(param_8 + 0x6c))" identifier >> (parenthesized_expression "((locale *)(param_8 + 0x6c))" ( (cast_expression "(locale *)(param_8 + 0x6c)" ( (type_descriptor "locale *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_8 + 0x6c)" ( (binary_expression "param_8 + 0x6c" identifier + number_literal) ))) )))) ;) (expression_statement "local_28 = puVar1 + 0xc;" (assignment_expression "local_28 = puVar1 + 0xc" identifier = (binary_expression "puVar1 + 0xc" identifier + number_literal)) ;) (expression_statement "pcVar6 = (code *)PTR__M_extract<false>_004c2e08;" (assignment_expression "pcVar6 = (code *)PTR__M_extract<false>_004c2e08" identifier = (binary_expression "(code *)PTR__M_extract<false>_004c2e08" (binary_expression "(code *)PTR__M_extract<false" (cast_expression "(code *)PTR__M_extract" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) < false) > identifier)) ;) (if_statement "if (param_7 != '\0') {\n    pcVar6 = (code *)PTR__M_extract<true>_004c2e04;\n  }" if (parenthesized_expression "(param_7 != '\0')" ( (binary_expression "param_7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    pcVar6 = (code *)PTR__M_extract<true>_004c2e04;\n  }" { (expression_statement "pcVar6 = (code *)PTR__M_extract<true>_004c2e04;" (assignment_expression "pcVar6 = (code *)PTR__M_extract<true>_004c2e04" identifier = (binary_expression "(code *)PTR__M_extract<true>_004c2e04" (binary_expression "(code *)PTR__M_extract<true" (cast_expression "(code *)PTR__M_extract" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) < true) > identifier)) ;) })) comment (expression_statement "(*pcVar6)(&local_20,param_2,param_3,param_4,param_5,param_6,param_8,param_9,&local_28);" (call_expression "(*pcVar6)(&local_20,param_2,param_3,param_4,param_5,param_6,param_8,param_9,&local_28)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(&local_20,param_2,param_3,param_4,param_5,param_6,param_8,param_9,&local_28)" ( (pointer_expression "&local_20" & identifier) , identifier , identifier , identifier , identifier , identifier , identifier , identifier , (pointer_expression "&local_28" & identifier) ))) ;) (expression_statement "uVar4 = *(uint *)(local_28 + -0xc);" (assignment_expression "uVar4 = *(uint *)(local_28 + -0xc)" identifier = (pointer_expression "*(uint *)(local_28 + -0xc)" * (cast_expression "(uint *)(local_28 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))))) ;) (if_statement "if (uVar4 == 0) {\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }\n  else {\n    std::string::resize(param_10,uVar4,'\0');\n    pcVar2 = local_28;\n    pcVar3 = *(char **)param_10;\n    pcVar5 = local_28 + uVar4;\n    if (-1 < *(int *)(pcVar3 + -4)) {\n      std::string::_M_leak_hard(param_10);\n      pcVar3 = *(char **)param_10;\n    }\n    std::ctype<char>::widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }" { (expression_statement "*param_1 = local_20;" (assignment_expression "*param_1 = local_20" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = local_1c;" (assignment_expression "param_1[1] = local_1c" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n    std::string::resize(param_10,uVar4,'\0');\n    pcVar2 = local_28;\n    pcVar3 = *(char **)param_10;\n    pcVar5 = local_28 + uVar4;\n    if (-1 < *(int *)(pcVar3 + -4)) {\n      std::string::_M_leak_hard(param_10);\n      pcVar3 = *(char **)param_10;\n    }\n    std::ctype<char>::widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }" else (compound_statement "{\n    std::string::resize(param_10,uVar4,'\0');\n    pcVar2 = local_28;\n    pcVar3 = *(char **)param_10;\n    pcVar5 = local_28 + uVar4;\n    if (-1 < *(int *)(pcVar3 + -4)) {\n      std::string::_M_leak_hard(param_10);\n      pcVar3 = *(char **)param_10;\n    }\n    std::ctype<char>::widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }" { (labeled_statement "std::string::resize(param_10,uVar4,'\0');" statement_identifier : (ERROR ":" :) (labeled_statement "string::resize(param_10,uVar4,'\0');" statement_identifier : (ERROR ":" :) (expression_statement "resize(param_10,uVar4,'\0');" (call_expression "resize(param_10,uVar4,'\0')" identifier (argument_list "(param_10,uVar4,'\0')" ( identifier , identifier , (char_literal "'\0'" ' escape_sequence ') ))) ;))) (expression_statement "pcVar2 = local_28;" (assignment_expression "pcVar2 = local_28" identifier = identifier) ;) (expression_statement "pcVar3 = *(char **)param_10;" (assignment_expression "pcVar3 = *(char **)param_10" identifier = (pointer_expression "*(char **)param_10" * (cast_expression "(char **)param_10" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "pcVar5 = local_28 + uVar4;" (assignment_expression "pcVar5 = local_28 + uVar4" identifier = (binary_expression "local_28 + uVar4" identifier + identifier)) ;) (if_statement "if (-1 < *(int *)(pcVar3 + -4)) {\n      std::string::_M_leak_hard(param_10);\n      pcVar3 = *(char **)param_10;\n    }" if (parenthesized_expression "(-1 < *(int *)(pcVar3 + -4))" ( (binary_expression "-1 < *(int *)(pcVar3 + -4)" number_literal < (pointer_expression "*(int *)(pcVar3 + -4)" * (cast_expression "(int *)(pcVar3 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar3 + -4)" ( (binary_expression "pcVar3 + -4" identifier + number_literal) ))))) )) (compound_statement "{\n      std::string::_M_leak_hard(param_10);\n      pcVar3 = *(char **)param_10;\n    }" { (labeled_statement "std::string::_M_leak_hard(param_10);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_leak_hard(param_10);" statement_identifier : (ERROR ":" :) (expression_statement "_M_leak_hard(param_10);" (call_expression "_M_leak_hard(param_10)" identifier (argument_list "(param_10)" ( identifier ))) ;))) (expression_statement "pcVar3 = *(char **)param_10;" (assignment_expression "pcVar3 = *(char **)param_10" identifier = (pointer_expression "*(char **)param_10" * (cast_expression "(char **)param_10" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) })) (labeled_statement "std::ctype<char>::widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);" statement_identifier (ERROR "::ctype<char>:" : : (binary_expression "ctype<char" identifier < identifier) > :) : (expression_statement "widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);" (call_expression "widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3)" identifier (argument_list "((ctype<char> *)this,pcVar2,pcVar5,pcVar3)" ( (parenthesized_expression "(ctype<char> *)this,pcVar2,pcVar5,pcVar3)" ( (comma_expression "ctype<char> *)this,pcVar2,pcVar5,pcVar3" (binary_expression "ctype<char> *)this" (binary_expression "ctype<char" identifier < identifier) > (pointer_expression "*)this" * (ERROR ")" )) identifier)) , (comma_expression "pcVar2,pcVar5,pcVar3" identifier , (comma_expression "pcVar5,pcVar3" identifier , identifier))) )) ))) ;)) (expression_statement "*param_1 = local_20;" (assignment_expression "*param_1 = local_20" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = local_1c;" (assignment_expression "param_1[1] = local_1c" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) }))) (if_statement "if (local_28 + -0xc != puVar1) {\n    FUN_00347de0(local_28 + -0xc,auStack_24);\n  }" if (parenthesized_expression "(local_28 + -0xc != puVar1)" ( (binary_expression "local_28 + -0xc != puVar1" (binary_expression "local_28 + -0xc" identifier + number_literal) != identifier) )) (compound_statement "{\n    FUN_00347de0(local_28 + -0xc,auStack_24);\n  }" { (expression_statement "FUN_00347de0(local_28 + -0xc,auStack_24);" (call_expression "FUN_00347de0(local_28 + -0xc,auStack_24)" identifier (argument_list "(local_28 + -0xc,auStack_24)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) , identifier ))) ;) })) (return_statement "return param_1;" return identifier ;) })))
(translation_unit "/* std::money_get<char, std::istreambuf_iterator<char, std::char_traits<char> >\n   >::do_get(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char,\n   std::char_traits<char> >, bool, std::ios_base&, std::_Ios_Iostate&, std::string&) const */\n\nundefined4 *\nstd::money_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::do_get\n          (undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n          undefined4 param_5,undefined4 param_6,char param_7,int param_8,undefined4 param_9,\n          string *param_10)\n\n{\n  undefined *puVar1;\n  char *pcVar2;\n  ctype *this;\n  char *pcVar3;\n  uint uVar4;\n  char *pcVar5;\n  code *pcVar6;\n  char *local_28 [2];\n  undefined4 local_20;\n  undefined4 local_1c;\n  \n  puVar1 = PTR__S_empty_rep_storage_004c1340;\n  this = use_facet<std::ctype<char>>((locale *)(param_8 + 0x6c));\n  local_28[0] = puVar1 + 0xc;\n  pcVar6 = (code *)PTR__M_extract<false>_004c2e08;\n  if (param_7 != '\0') {\n    pcVar6 = (code *)PTR__M_extract<true>_004c2e04;\n  }\n                    /* try { // try from 0035bcf4 to 0035bde7 has its CatchHandler @ 0035bdf8 */\n  (*pcVar6)(&local_20,param_2,param_3,param_4,param_5,param_6,param_8,param_9,local_28);\n  uVar4 = *(uint *)(local_28[0] + -0xc);\n  if (uVar4 == 0) {\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }\n  else {\n    std::string::resize(param_10,uVar4,'\0');\n    pcVar2 = local_28[0];\n    pcVar3 = *(char **)param_10;\n    pcVar5 = local_28[0] + uVar4;\n    if (-1 < *(int *)(pcVar3 + -4)) {\n      std::string::_M_leak_hard(param_10);\n      pcVar3 = *(char **)param_10;\n    }\n    ctype<char>::widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }\n  if ((allocator *)(local_28[0] + -0xc) != (allocator *)puVar1) {\n    std::string::_Rep::_M_dispose((allocator *)(local_28[0] + -0xc));\n  }\n  return param_1;\n}\n\n" comment (ERROR "undefined4 *\nstd::money_get<char," (binary_expression "undefined4 *\nstd::money_get<char" (binary_expression "undefined4 *\nstd" identifier * identifier) (ERROR "::money_get" : : identifier) < identifier) ,) (labeled_statement "std::istreambuf_iterator<char,std::char_traits<char>>>::do_get\n          (undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n          undefined4 param_5,undefined4 param_6,char param_7,int param_8,undefined4 param_9,\n          string *param_10)" statement_identifier (ERROR "::istreambuf_iterator<char,std:" : : (comma_expression "istreambuf_iterator<char,std" (binary_expression "istreambuf_iterator<char" identifier < identifier) , identifier) :) : (expression_statement "char_traits<char>>>::do_get\n          (undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n          undefined4 param_5,undefined4 param_6,char param_7,int param_8,undefined4 param_9,\n          string *param_10)" (binary_expression "char_traits<char>>>::do_get\n          (undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n          undefined4 param_5,undefined4 param_6,char param_7,int param_8,undefined4 param_9,\n          string *param_10)" identifier < (binary_expression "char>>>::do_get\n          (undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n          undefined4 param_5,undefined4 param_6,char param_7,int param_8,undefined4 param_9,\n          string *param_10)" identifier >> (ERROR ">::" > : :) (call_expression "do_get\n          (undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n          undefined4 param_5,undefined4 param_6,char param_7,int param_8,undefined4 param_9,\n          string *param_10)" identifier (argument_list "(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n          undefined4 param_5,undefined4 param_6,char param_7,int param_8,undefined4 param_9,\n          string *param_10)" ( (binary_expression "undefined4 *param_1" identifier * identifier) , identifier (ERROR "param_2" identifier) , identifier (ERROR "param_3" identifier) , identifier (ERROR "param_4" identifier) , identifier (ERROR "param_5" identifier) , identifier (ERROR "param_6" identifier) , (ERROR "char" identifier) identifier , (ERROR "int" identifier) identifier , identifier (ERROR "param_9" identifier) , (binary_expression "string *param_10" identifier * identifier) ))))) ;)) (compound_statement "{\n  undefined *puVar1;\n  char *pcVar2;\n  ctype *this;\n  char *pcVar3;\n  uint uVar4;\n  char *pcVar5;\n  code *pcVar6;\n  char *local_28 [2];\n  undefined4 local_20;\n  undefined4 local_1c;\n  \n  puVar1 = PTR__S_empty_rep_storage_004c1340;\n  this = use_facet<std::ctype<char>>((locale *)(param_8 + 0x6c));\n  local_28[0] = puVar1 + 0xc;\n  pcVar6 = (code *)PTR__M_extract<false>_004c2e08;\n  if (param_7 != '\0') {\n    pcVar6 = (code *)PTR__M_extract<true>_004c2e04;\n  }\n                    /* try { // try from 0035bcf4 to 0035bde7 has its CatchHandler @ 0035bdf8 */\n  (*pcVar6)(&local_20,param_2,param_3,param_4,param_5,param_6,param_8,param_9,local_28);\n  uVar4 = *(uint *)(local_28[0] + -0xc);\n  if (uVar4 == 0) {\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }\n  else {\n    std::string::resize(param_10,uVar4,'\0');\n    pcVar2 = local_28[0];\n    pcVar3 = *(char **)param_10;\n    pcVar5 = local_28[0] + uVar4;\n    if (-1 < *(int *)(pcVar3 + -4)) {\n      std::string::_M_leak_hard(param_10);\n      pcVar3 = *(char **)param_10;\n    }\n    ctype<char>::widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }\n  if ((allocator *)(local_28[0] + -0xc) != (allocator *)puVar1) {\n    std::string::_Rep::_M_dispose((allocator *)(local_28[0] + -0xc));\n  }\n  return param_1;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "ctype *this;" type_identifier (pointer_declarator "*this" * identifier) ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "char *local_28 [2];" primitive_type (pointer_declarator "*local_28 [2]" * (array_declarator "local_28 [2]" identifier [ number_literal ])) ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (declaration "undefined4 local_1c;" type_identifier identifier ;) (expression_statement "puVar1 = PTR__S_empty_rep_storage_004c1340;" (assignment_expression "puVar1 = PTR__S_empty_rep_storage_004c1340" identifier = identifier) ;) (expression_statement "this = use_facet<std::ctype<char>>((locale *)(param_8 + 0x6c));" (binary_expression "this = use_facet<std::ctype<char>>((locale *)(param_8 + 0x6c))" (assignment_expression "this = use_facet<std" identifier = (binary_expression "use_facet<std" identifier < identifier)) (ERROR "::ctype" : : identifier) < (binary_expression "char>>((locale *)(param_8 + 0x6c))" identifier >> (parenthesized_expression "((locale *)(param_8 + 0x6c))" ( (cast_expression "(locale *)(param_8 + 0x6c)" ( (type_descriptor "locale *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_8 + 0x6c)" ( (binary_expression "param_8 + 0x6c" identifier + number_literal) ))) )))) ;) (expression_statement "local_28[0] = puVar1 + 0xc;" (assignment_expression "local_28[0] = puVar1 + 0xc" (subscript_expression "local_28[0]" identifier [ number_literal ]) = (binary_expression "puVar1 + 0xc" identifier + number_literal)) ;) (expression_statement "pcVar6 = (code *)PTR__M_extract<false>_004c2e08;" (assignment_expression "pcVar6 = (code *)PTR__M_extract<false>_004c2e08" identifier = (binary_expression "(code *)PTR__M_extract<false>_004c2e08" (binary_expression "(code *)PTR__M_extract<false" (cast_expression "(code *)PTR__M_extract" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) < false) > identifier)) ;) (if_statement "if (param_7 != '\0') {\n    pcVar6 = (code *)PTR__M_extract<true>_004c2e04;\n  }" if (parenthesized_expression "(param_7 != '\0')" ( (binary_expression "param_7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    pcVar6 = (code *)PTR__M_extract<true>_004c2e04;\n  }" { (expression_statement "pcVar6 = (code *)PTR__M_extract<true>_004c2e04;" (assignment_expression "pcVar6 = (code *)PTR__M_extract<true>_004c2e04" identifier = (binary_expression "(code *)PTR__M_extract<true>_004c2e04" (binary_expression "(code *)PTR__M_extract<true" (cast_expression "(code *)PTR__M_extract" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) < true) > identifier)) ;) })) comment (expression_statement "(*pcVar6)(&local_20,param_2,param_3,param_4,param_5,param_6,param_8,param_9,local_28);" (call_expression "(*pcVar6)(&local_20,param_2,param_3,param_4,param_5,param_6,param_8,param_9,local_28)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(&local_20,param_2,param_3,param_4,param_5,param_6,param_8,param_9,local_28)" ( (pointer_expression "&local_20" & identifier) , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar4 = *(uint *)(local_28[0] + -0xc);" (assignment_expression "uVar4 = *(uint *)(local_28[0] + -0xc)" identifier = (pointer_expression "*(uint *)(local_28[0] + -0xc)" * (cast_expression "(uint *)(local_28[0] + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28[0] + -0xc)" ( (binary_expression "local_28[0] + -0xc" (subscript_expression "local_28[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (if_statement "if (uVar4 == 0) {\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }\n  else {\n    std::string::resize(param_10,uVar4,'\0');\n    pcVar2 = local_28[0];\n    pcVar3 = *(char **)param_10;\n    pcVar5 = local_28[0] + uVar4;\n    if (-1 < *(int *)(pcVar3 + -4)) {\n      std::string::_M_leak_hard(param_10);\n      pcVar3 = *(char **)param_10;\n    }\n    ctype<char>::widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }" { (expression_statement "*param_1 = local_20;" (assignment_expression "*param_1 = local_20" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = local_1c;" (assignment_expression "param_1[1] = local_1c" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n    std::string::resize(param_10,uVar4,'\0');\n    pcVar2 = local_28[0];\n    pcVar3 = *(char **)param_10;\n    pcVar5 = local_28[0] + uVar4;\n    if (-1 < *(int *)(pcVar3 + -4)) {\n      std::string::_M_leak_hard(param_10);\n      pcVar3 = *(char **)param_10;\n    }\n    ctype<char>::widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }" else (compound_statement "{\n    std::string::resize(param_10,uVar4,'\0');\n    pcVar2 = local_28[0];\n    pcVar3 = *(char **)param_10;\n    pcVar5 = local_28[0] + uVar4;\n    if (-1 < *(int *)(pcVar3 + -4)) {\n      std::string::_M_leak_hard(param_10);\n      pcVar3 = *(char **)param_10;\n    }\n    ctype<char>::widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }" { (labeled_statement "std::string::resize(param_10,uVar4,'\0');" statement_identifier : (ERROR ":" :) (labeled_statement "string::resize(param_10,uVar4,'\0');" statement_identifier : (ERROR ":" :) (expression_statement "resize(param_10,uVar4,'\0');" (call_expression "resize(param_10,uVar4,'\0')" identifier (argument_list "(param_10,uVar4,'\0')" ( identifier , identifier , (char_literal "'\0'" ' escape_sequence ') ))) ;))) (expression_statement "pcVar2 = local_28[0];" (assignment_expression "pcVar2 = local_28[0]" identifier = (subscript_expression "local_28[0]" identifier [ number_literal ])) ;) (expression_statement "pcVar3 = *(char **)param_10;" (assignment_expression "pcVar3 = *(char **)param_10" identifier = (pointer_expression "*(char **)param_10" * (cast_expression "(char **)param_10" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "pcVar5 = local_28[0] + uVar4;" (assignment_expression "pcVar5 = local_28[0] + uVar4" identifier = (binary_expression "local_28[0] + uVar4" (subscript_expression "local_28[0]" identifier [ number_literal ]) + identifier)) ;) (if_statement "if (-1 < *(int *)(pcVar3 + -4)) {\n      std::string::_M_leak_hard(param_10);\n      pcVar3 = *(char **)param_10;\n    }" if (parenthesized_expression "(-1 < *(int *)(pcVar3 + -4))" ( (binary_expression "-1 < *(int *)(pcVar3 + -4)" number_literal < (pointer_expression "*(int *)(pcVar3 + -4)" * (cast_expression "(int *)(pcVar3 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar3 + -4)" ( (binary_expression "pcVar3 + -4" identifier + number_literal) ))))) )) (compound_statement "{\n      std::string::_M_leak_hard(param_10);\n      pcVar3 = *(char **)param_10;\n    }" { (labeled_statement "std::string::_M_leak_hard(param_10);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_leak_hard(param_10);" statement_identifier : (ERROR ":" :) (expression_statement "_M_leak_hard(param_10);" (call_expression "_M_leak_hard(param_10)" identifier (argument_list "(param_10)" ( identifier ))) ;))) (expression_statement "pcVar3 = *(char **)param_10;" (assignment_expression "pcVar3 = *(char **)param_10" identifier = (pointer_expression "*(char **)param_10" * (cast_expression "(char **)param_10" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) })) (expression_statement "ctype<char>::widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);" (binary_expression "ctype<char>::widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3)" (binary_expression "ctype<char" identifier < identifier) > (ERROR "::" : :) (call_expression "widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3)" identifier (argument_list "((ctype<char> *)this,pcVar2,pcVar5,pcVar3)" ( (parenthesized_expression "(ctype<char> *)this,pcVar2,pcVar5,pcVar3)" ( (comma_expression "ctype<char> *)this,pcVar2,pcVar5,pcVar3" (binary_expression "ctype<char> *)this" (binary_expression "ctype<char" identifier < identifier) > (pointer_expression "*)this" * (ERROR ")" )) identifier)) , (comma_expression "pcVar2,pcVar5,pcVar3" identifier , (comma_expression "pcVar5,pcVar3" identifier , identifier))) )) )))) ;) (expression_statement "*param_1 = local_20;" (assignment_expression "*param_1 = local_20" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = local_1c;" (assignment_expression "param_1[1] = local_1c" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) }))) (if_statement "if ((allocator *)(local_28[0] + -0xc) != (allocator *)puVar1) {\n    std::string::_Rep::_M_dispose((allocator *)(local_28[0] + -0xc));\n  }" if (parenthesized_expression "((allocator *)(local_28[0] + -0xc) != (allocator *)puVar1)" ( (binary_expression "(allocator *)(local_28[0] + -0xc) != (allocator *)puVar1" (cast_expression "(allocator *)(local_28[0] + -0xc)" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28[0] + -0xc)" ( (binary_expression "local_28[0] + -0xc" (subscript_expression "local_28[0]" identifier [ number_literal ]) + number_literal) ))) != (cast_expression "(allocator *)puVar1" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    std::string::_Rep::_M_dispose((allocator *)(local_28[0] + -0xc));\n  }" { (labeled_statement "std::string::_Rep::_M_dispose((allocator *)(local_28[0] + -0xc));" statement_identifier : (ERROR ":" :) (labeled_statement "string::_Rep::_M_dispose((allocator *)(local_28[0] + -0xc));" statement_identifier : (ERROR ":" :) (labeled_statement "_Rep::_M_dispose((allocator *)(local_28[0] + -0xc));" statement_identifier : (ERROR ":" :) (expression_statement "_M_dispose((allocator *)(local_28[0] + -0xc));" (call_expression "_M_dispose((allocator *)(local_28[0] + -0xc))" identifier (argument_list "((allocator *)(local_28[0] + -0xc))" ( (cast_expression "(allocator *)(local_28[0] + -0xc)" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28[0] + -0xc)" ( (binary_expression "local_28[0] + -0xc" (subscript_expression "local_28[0]" identifier [ number_literal ]) + number_literal) ))) ))) ;)))) })) (return_statement "return param_1;" return identifier ;) }))
(translation_unit "undefined4 *\nFUN_0035bc58(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,char param_7,int param_8,undefined4 param_9,\n            string *param_10)\n\n{\n  undefined *puVar1;\n  char *pcVar2;\n  ctype *this;\n  char *pcVar3;\n  uint uVar4;\n  char *pcVar5;\n  code *pcVar6;\n  char *local_28;\n  undefined1 auStack_24 [4];\n  undefined4 local_20;\n  undefined4 local_1c;\n  \n  puVar1 = PTR__S_empty_rep_storage_004c1340;\n  this = std::use_facet<std::ctype<char>>((locale *)(param_8 + 0x6c));\n  local_28 = puVar1 + 0xc;\n  pcVar6 = (code *)PTR__M_extract<false>_004c2e08;\n  if (param_7 != '\0') {\n    pcVar6 = (code *)PTR__M_extract<true>_004c2e04;\n  }\n                    \n  (*pcVar6)(&local_20,param_2,param_3,param_4,param_5,param_6,param_8,param_9,&local_28);\n  uVar4 = *(uint *)(local_28 + -0xc);\n  if (uVar4 == 0) {\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }\n  else {\n    std::string::resize(param_10,uVar4,'\0');\n    pcVar2 = local_28;\n    pcVar3 = *(char **)param_10;\n    pcVar5 = local_28 + uVar4;\n    if (-1 < *(int *)(pcVar3 + -4)) {\n      std::string::_M_leak_hard(param_10);\n      pcVar3 = *(char **)param_10;\n    }\n    std::ctype<char>::widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }\n  if (local_28 + -0xc != puVar1) {\n    FUN_00347de0(local_28 + -0xc,auStack_24);\n  }\n  return param_1;\n}\n\n" (function_definition "undefined4 *\nFUN_0035bc58(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,char param_7,int param_8,undefined4 param_9,\n            string *param_10)\n\n{\n  undefined *puVar1;\n  char *pcVar2;\n  ctype *this;\n  char *pcVar3;\n  uint uVar4;\n  char *pcVar5;\n  code *pcVar6;\n  char *local_28;\n  undefined1 auStack_24 [4];\n  undefined4 local_20;\n  undefined4 local_1c;\n  \n  puVar1 = PTR__S_empty_rep_storage_004c1340;\n  this = std::use_facet<std::ctype<char>>((locale *)(param_8 + 0x6c));\n  local_28 = puVar1 + 0xc;\n  pcVar6 = (code *)PTR__M_extract<false>_004c2e08;\n  if (param_7 != '\0') {\n    pcVar6 = (code *)PTR__M_extract<true>_004c2e04;\n  }\n                    \n  (*pcVar6)(&local_20,param_2,param_3,param_4,param_5,param_6,param_8,param_9,&local_28);\n  uVar4 = *(uint *)(local_28 + -0xc);\n  if (uVar4 == 0) {\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }\n  else {\n    std::string::resize(param_10,uVar4,'\0');\n    pcVar2 = local_28;\n    pcVar3 = *(char **)param_10;\n    pcVar5 = local_28 + uVar4;\n    if (-1 < *(int *)(pcVar3 + -4)) {\n      std::string::_M_leak_hard(param_10);\n      pcVar3 = *(char **)param_10;\n    }\n    std::ctype<char>::widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }\n  if (local_28 + -0xc != puVar1) {\n    FUN_00347de0(local_28 + -0xc,auStack_24);\n  }\n  return param_1;\n}" type_identifier (pointer_declarator "*\nFUN_0035bc58(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,char param_7,int param_8,undefined4 param_9,\n            string *param_10)" * (function_declarator "FUN_0035bc58(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,char param_7,int param_8,undefined4 param_9,\n            string *param_10)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,char param_7,int param_8,undefined4 param_9,\n            string *param_10)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier 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 "char param_7" primitive_type identifier) , (parameter_declaration "int param_8" primitive_type identifier) , (parameter_declaration "undefined4 param_9" type_identifier identifier) , (parameter_declaration "string *param_10" type_identifier (pointer_declarator "*param_10" * identifier)) )))) (compound_statement "{\n  undefined *puVar1;\n  char *pcVar2;\n  ctype *this;\n  char *pcVar3;\n  uint uVar4;\n  char *pcVar5;\n  code *pcVar6;\n  char *local_28;\n  undefined1 auStack_24 [4];\n  undefined4 local_20;\n  undefined4 local_1c;\n  \n  puVar1 = PTR__S_empty_rep_storage_004c1340;\n  this = std::use_facet<std::ctype<char>>((locale *)(param_8 + 0x6c));\n  local_28 = puVar1 + 0xc;\n  pcVar6 = (code *)PTR__M_extract<false>_004c2e08;\n  if (param_7 != '\0') {\n    pcVar6 = (code *)PTR__M_extract<true>_004c2e04;\n  }\n                    \n  (*pcVar6)(&local_20,param_2,param_3,param_4,param_5,param_6,param_8,param_9,&local_28);\n  uVar4 = *(uint *)(local_28 + -0xc);\n  if (uVar4 == 0) {\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }\n  else {\n    std::string::resize(param_10,uVar4,'\0');\n    pcVar2 = local_28;\n    pcVar3 = *(char **)param_10;\n    pcVar5 = local_28 + uVar4;\n    if (-1 < *(int *)(pcVar3 + -4)) {\n      std::string::_M_leak_hard(param_10);\n      pcVar3 = *(char **)param_10;\n    }\n    std::ctype<char>::widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }\n  if (local_28 + -0xc != puVar1) {\n    FUN_00347de0(local_28 + -0xc,auStack_24);\n  }\n  return param_1;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "ctype *this;" type_identifier (pointer_declarator "*this" * identifier) ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "char *local_28;" primitive_type (pointer_declarator "*local_28" * identifier) ;) (declaration "undefined1 auStack_24 [4];" type_identifier (array_declarator "auStack_24 [4]" identifier [ number_literal ]) ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (declaration "undefined4 local_1c;" type_identifier identifier ;) (expression_statement "puVar1 = PTR__S_empty_rep_storage_004c1340;" (assignment_expression "puVar1 = PTR__S_empty_rep_storage_004c1340" identifier = identifier) ;) (expression_statement "this = std::use_facet<std::ctype<char>>((locale *)(param_8 + 0x6c));" (binary_expression "this = std::use_facet<std::ctype<char>>((locale *)(param_8 + 0x6c))" (binary_expression "this = std::use_facet<std" (assignment_expression "this = std" identifier = identifier) (ERROR "::use_facet" : : identifier) < identifier) (ERROR "::ctype" : : identifier) < (binary_expression "char>>((locale *)(param_8 + 0x6c))" identifier >> (parenthesized_expression "((locale *)(param_8 + 0x6c))" ( (cast_expression "(locale *)(param_8 + 0x6c)" ( (type_descriptor "locale *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_8 + 0x6c)" ( (binary_expression "param_8 + 0x6c" identifier + number_literal) ))) )))) ;) (expression_statement "local_28 = puVar1 + 0xc;" (assignment_expression "local_28 = puVar1 + 0xc" identifier = (binary_expression "puVar1 + 0xc" identifier + number_literal)) ;) (expression_statement "pcVar6 = (code *)PTR__M_extract<false>_004c2e08;" (assignment_expression "pcVar6 = (code *)PTR__M_extract<false>_004c2e08" identifier = (binary_expression "(code *)PTR__M_extract<false>_004c2e08" (binary_expression "(code *)PTR__M_extract<false" (cast_expression "(code *)PTR__M_extract" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) < false) > identifier)) ;) (if_statement "if (param_7 != '\0') {\n    pcVar6 = (code *)PTR__M_extract<true>_004c2e04;\n  }" if (parenthesized_expression "(param_7 != '\0')" ( (binary_expression "param_7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    pcVar6 = (code *)PTR__M_extract<true>_004c2e04;\n  }" { (expression_statement "pcVar6 = (code *)PTR__M_extract<true>_004c2e04;" (assignment_expression "pcVar6 = (code *)PTR__M_extract<true>_004c2e04" identifier = (binary_expression "(code *)PTR__M_extract<true>_004c2e04" (binary_expression "(code *)PTR__M_extract<true" (cast_expression "(code *)PTR__M_extract" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) < true) > identifier)) ;) })) (expression_statement "(*pcVar6)(&local_20,param_2,param_3,param_4,param_5,param_6,param_8,param_9,&local_28);" (call_expression "(*pcVar6)(&local_20,param_2,param_3,param_4,param_5,param_6,param_8,param_9,&local_28)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(&local_20,param_2,param_3,param_4,param_5,param_6,param_8,param_9,&local_28)" ( (pointer_expression "&local_20" & identifier) , identifier , identifier , identifier , identifier , identifier , identifier , identifier , (pointer_expression "&local_28" & identifier) ))) ;) (expression_statement "uVar4 = *(uint *)(local_28 + -0xc);" (assignment_expression "uVar4 = *(uint *)(local_28 + -0xc)" identifier = (pointer_expression "*(uint *)(local_28 + -0xc)" * (cast_expression "(uint *)(local_28 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) ))))) ;) (if_statement "if (uVar4 == 0) {\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }\n  else {\n    std::string::resize(param_10,uVar4,'\0');\n    pcVar2 = local_28;\n    pcVar3 = *(char **)param_10;\n    pcVar5 = local_28 + uVar4;\n    if (-1 < *(int *)(pcVar3 + -4)) {\n      std::string::_M_leak_hard(param_10);\n      pcVar3 = *(char **)param_10;\n    }\n    std::ctype<char>::widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }" { (expression_statement "*param_1 = local_20;" (assignment_expression "*param_1 = local_20" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = local_1c;" (assignment_expression "param_1[1] = local_1c" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n    std::string::resize(param_10,uVar4,'\0');\n    pcVar2 = local_28;\n    pcVar3 = *(char **)param_10;\n    pcVar5 = local_28 + uVar4;\n    if (-1 < *(int *)(pcVar3 + -4)) {\n      std::string::_M_leak_hard(param_10);\n      pcVar3 = *(char **)param_10;\n    }\n    std::ctype<char>::widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }" else (compound_statement "{\n    std::string::resize(param_10,uVar4,'\0');\n    pcVar2 = local_28;\n    pcVar3 = *(char **)param_10;\n    pcVar5 = local_28 + uVar4;\n    if (-1 < *(int *)(pcVar3 + -4)) {\n      std::string::_M_leak_hard(param_10);\n      pcVar3 = *(char **)param_10;\n    }\n    std::ctype<char>::widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }" { (labeled_statement "std::string::resize(param_10,uVar4,'\0');" statement_identifier : (ERROR ":" :) (labeled_statement "string::resize(param_10,uVar4,'\0');" statement_identifier : (ERROR ":" :) (expression_statement "resize(param_10,uVar4,'\0');" (call_expression "resize(param_10,uVar4,'\0')" identifier (argument_list "(param_10,uVar4,'\0')" ( identifier , identifier , (char_literal "'\0'" ' escape_sequence ') ))) ;))) (expression_statement "pcVar2 = local_28;" (assignment_expression "pcVar2 = local_28" identifier = identifier) ;) (expression_statement "pcVar3 = *(char **)param_10;" (assignment_expression "pcVar3 = *(char **)param_10" identifier = (pointer_expression "*(char **)param_10" * (cast_expression "(char **)param_10" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "pcVar5 = local_28 + uVar4;" (assignment_expression "pcVar5 = local_28 + uVar4" identifier = (binary_expression "local_28 + uVar4" identifier + identifier)) ;) (if_statement "if (-1 < *(int *)(pcVar3 + -4)) {\n      std::string::_M_leak_hard(param_10);\n      pcVar3 = *(char **)param_10;\n    }" if (parenthesized_expression "(-1 < *(int *)(pcVar3 + -4))" ( (binary_expression "-1 < *(int *)(pcVar3 + -4)" number_literal < (pointer_expression "*(int *)(pcVar3 + -4)" * (cast_expression "(int *)(pcVar3 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar3 + -4)" ( (binary_expression "pcVar3 + -4" identifier + number_literal) ))))) )) (compound_statement "{\n      std::string::_M_leak_hard(param_10);\n      pcVar3 = *(char **)param_10;\n    }" { (labeled_statement "std::string::_M_leak_hard(param_10);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_leak_hard(param_10);" statement_identifier : (ERROR ":" :) (expression_statement "_M_leak_hard(param_10);" (call_expression "_M_leak_hard(param_10)" identifier (argument_list "(param_10)" ( identifier ))) ;))) (expression_statement "pcVar3 = *(char **)param_10;" (assignment_expression "pcVar3 = *(char **)param_10" identifier = (pointer_expression "*(char **)param_10" * (cast_expression "(char **)param_10" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) })) (labeled_statement "std::ctype<char>::widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);" statement_identifier (ERROR "::ctype<char>:" : : (binary_expression "ctype<char" identifier < identifier) > :) : (expression_statement "widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);" (call_expression "widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3)" identifier (argument_list "((ctype<char> *)this,pcVar2,pcVar5,pcVar3)" ( (parenthesized_expression "(ctype<char> *)this,pcVar2,pcVar5,pcVar3)" ( (comma_expression "ctype<char> *)this,pcVar2,pcVar5,pcVar3" (binary_expression "ctype<char> *)this" (binary_expression "ctype<char" identifier < identifier) > (pointer_expression "*)this" * (ERROR ")" )) identifier)) , (comma_expression "pcVar2,pcVar5,pcVar3" identifier , (comma_expression "pcVar5,pcVar3" identifier , identifier))) )) ))) ;)) (expression_statement "*param_1 = local_20;" (assignment_expression "*param_1 = local_20" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = local_1c;" (assignment_expression "param_1[1] = local_1c" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) }))) (if_statement "if (local_28 + -0xc != puVar1) {\n    FUN_00347de0(local_28 + -0xc,auStack_24);\n  }" if (parenthesized_expression "(local_28 + -0xc != puVar1)" ( (binary_expression "local_28 + -0xc != puVar1" (binary_expression "local_28 + -0xc" identifier + number_literal) != identifier) )) (compound_statement "{\n    FUN_00347de0(local_28 + -0xc,auStack_24);\n  }" { (expression_statement "FUN_00347de0(local_28 + -0xc,auStack_24);" (call_expression "FUN_00347de0(local_28 + -0xc,auStack_24)" identifier (argument_list "(local_28 + -0xc,auStack_24)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) , identifier ))) ;) })) (return_statement "return param_1;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (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) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (binary_expression (binary_expression (assignment_expression IDENT = IDENT) (ERROR : : IDENT) < IDENT) (ERROR : : IDENT) < (binary_expression IDENT >> (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) < BOOL) > IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) < BOOL) > IDENT)) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (char_literal ' escape_sequence ') ))) ;))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) })) (labeled_statement statement_identifier (ERROR : : (binary_expression IDENT < IDENT) > :) : (expression_statement (call_expression IDENT (argument_list ( (parenthesized_expression ( (comma_expression (binary_expression (binary_expression IDENT < IDENT) > (pointer_expression * (ERROR )) IDENT)) , (comma_expression IDENT , (comma_expression IDENT , IDENT))) )) ))) ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT ))) ;) })) (return_statement return IDENT ;) })))
(function_definition "undefined4 *\nFUN_0035bc58(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,char param_7,int param_8,undefined4 param_9,\n            string *param_10)\n\n{\n  undefined *puVar1;\n  char *pcVar2;\n  ctype *this;\n  char *pcVar3;\n  uint uVar4;\n  char *pcVar5;\n  code *pcVar6;\n  char *local_28;\n  undefined1 auStack_24 [4];\n  undefined4 local_20;\n  undefined4 local_1c;\n  \n  puVar1 = PTR__S_empty_rep_storage_004c1340;\n  this = std::use_facet<std::ctype<char>>((locale *)(param_8 + 0x6c));\n  local_28 = puVar1 + 0xc;\n  pcVar6 = (code *)PTR__M_extract<false>_004c2e08;\n  if (param_7 != '\0') {\n    pcVar6 = (code *)PTR__M_extract<true>_004c2e04;\n  }\n                    \n  (*pcVar6)(&local_20,param_2,param_3,param_4,param_5,param_6,param_8,param_9,&local_28);\n  uVar4 = *(uint *)(local_28 + -0xc);\n  if (uVar4 == 0) {\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }\n  else {\n    std::string::resize(param_10,uVar4,'\0');\n    pcVar2 = local_28;\n    pcVar3 = *(char **)param_10;\n    pcVar5 = local_28 + uVar4;\n    if (-1 < *(int *)(pcVar3 + -4)) {\n      std::string::_M_leak_hard(param_10);\n      pcVar3 = *(char **)param_10;\n    }\n    std::ctype<char>::widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }\n  if (local_28 + -0xc != puVar1) {\n    FUN_00347de0(local_28 + -0xc,auStack_24);\n  }\n  return param_1;\n}" (type_identifier "undefined4") (pointer_declarator "*\nFUN_0035bc58(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,char param_7,int param_8,undefined4 param_9,\n            string *param_10)" (* "*") (function_declarator "FUN_0035bc58(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,char param_7,int param_8,undefined4 param_9,\n            string *param_10)" (identifier "FUN_0035bc58") (parameter_list "(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,char param_7,int param_8,undefined4 param_9,\n            string *param_10)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (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 "char param_7" (primitive_type "char") (identifier "param_7")) (, ",") (parameter_declaration "int param_8" (primitive_type "int") (identifier "param_8")) (, ",") (parameter_declaration "undefined4 param_9" (type_identifier "undefined4") (identifier "param_9")) (, ",") (parameter_declaration "string *param_10" (type_identifier "string") (pointer_declarator "*param_10" (* "*") (identifier "param_10"))) () ")")))) (compound_statement "{\n  undefined *puVar1;\n  char *pcVar2;\n  ctype *this;\n  char *pcVar3;\n  uint uVar4;\n  char *pcVar5;\n  code *pcVar6;\n  char *local_28;\n  undefined1 auStack_24 [4];\n  undefined4 local_20;\n  undefined4 local_1c;\n  \n  puVar1 = PTR__S_empty_rep_storage_004c1340;\n  this = std::use_facet<std::ctype<char>>((locale *)(param_8 + 0x6c));\n  local_28 = puVar1 + 0xc;\n  pcVar6 = (code *)PTR__M_extract<false>_004c2e08;\n  if (param_7 != '\0') {\n    pcVar6 = (code *)PTR__M_extract<true>_004c2e04;\n  }\n                    \n  (*pcVar6)(&local_20,param_2,param_3,param_4,param_5,param_6,param_8,param_9,&local_28);\n  uVar4 = *(uint *)(local_28 + -0xc);\n  if (uVar4 == 0) {\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }\n  else {\n    std::string::resize(param_10,uVar4,'\0');\n    pcVar2 = local_28;\n    pcVar3 = *(char **)param_10;\n    pcVar5 = local_28 + uVar4;\n    if (-1 < *(int *)(pcVar3 + -4)) {\n      std::string::_M_leak_hard(param_10);\n      pcVar3 = *(char **)param_10;\n    }\n    std::ctype<char>::widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }\n  if (local_28 + -0xc != puVar1) {\n    FUN_00347de0(local_28 + -0xc,auStack_24);\n  }\n  return param_1;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "char *pcVar2;" (primitive_type "char") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "ctype *this;" (type_identifier "ctype") (pointer_declarator "*this" (* "*") (identifier "this")) (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "code *pcVar6;" (type_identifier "code") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "char *local_28;" (primitive_type "char") (pointer_declarator "*local_28" (* "*") (identifier "local_28")) (; ";")) (declaration "undefined1 auStack_24 [4];" (type_identifier "undefined1") (array_declarator "auStack_24 [4]" (identifier "auStack_24") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "undefined4 local_20;" (type_identifier "undefined4") (identifier "local_20") (; ";")) (declaration "undefined4 local_1c;" (type_identifier "undefined4") (identifier "local_1c") (; ";")) (expression_statement "puVar1 = PTR__S_empty_rep_storage_004c1340;" (assignment_expression "puVar1 = PTR__S_empty_rep_storage_004c1340" (identifier "puVar1") (= "=") (identifier "PTR__S_empty_rep_storage_004c1340")) (; ";")) (expression_statement "this = std::use_facet<std::ctype<char>>((locale *)(param_8 + 0x6c));" (binary_expression "this = std::use_facet<std::ctype<char>>((locale *)(param_8 + 0x6c))" (binary_expression "this = std::use_facet<std" (assignment_expression "this = std" (identifier "this") (= "=") (identifier "std")) (ERROR "::use_facet" (: ":") (: ":") (identifier "use_facet")) (< "<") (identifier "std")) (ERROR "::ctype" (: ":") (: ":") (identifier "ctype")) (< "<") (binary_expression "char>>((locale *)(param_8 + 0x6c))" (identifier "char") (>> ">>") (parenthesized_expression "((locale *)(param_8 + 0x6c))" (( "(") (cast_expression "(locale *)(param_8 + 0x6c)" (( "(") (type_descriptor "locale *" (type_identifier "locale") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_8 + 0x6c)" (( "(") (binary_expression "param_8 + 0x6c" (identifier "param_8") (+ "+") (number_literal "0x6c")) () ")"))) () ")")))) (; ";")) (expression_statement "local_28 = puVar1 + 0xc;" (assignment_expression "local_28 = puVar1 + 0xc" (identifier "local_28") (= "=") (binary_expression "puVar1 + 0xc" (identifier "puVar1") (+ "+") (number_literal "0xc"))) (; ";")) (expression_statement "pcVar6 = (code *)PTR__M_extract<false>_004c2e08;" (assignment_expression "pcVar6 = (code *)PTR__M_extract<false>_004c2e08" (identifier "pcVar6") (= "=") (binary_expression "(code *)PTR__M_extract<false>_004c2e08" (binary_expression "(code *)PTR__M_extract<false" (cast_expression "(code *)PTR__M_extract" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR__M_extract")) (< "<") (false "false")) (> ">") (identifier "_004c2e08"))) (; ";")) (if_statement "if (param_7 != '\0') {\n    pcVar6 = (code *)PTR__M_extract<true>_004c2e04;\n  }" (if "if") (parenthesized_expression "(param_7 != '\0')" (( "(") (binary_expression "param_7 != '\0'" (identifier "param_7") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    pcVar6 = (code *)PTR__M_extract<true>_004c2e04;\n  }" ({ "{") (expression_statement "pcVar6 = (code *)PTR__M_extract<true>_004c2e04;" (assignment_expression "pcVar6 = (code *)PTR__M_extract<true>_004c2e04" (identifier "pcVar6") (= "=") (binary_expression "(code *)PTR__M_extract<true>_004c2e04" (binary_expression "(code *)PTR__M_extract<true" (cast_expression "(code *)PTR__M_extract" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR__M_extract")) (< "<") (true "true")) (> ">") (identifier "_004c2e04"))) (; ";")) (} "}"))) (expression_statement "(*pcVar6)(&local_20,param_2,param_3,param_4,param_5,param_6,param_8,param_9,&local_28);" (call_expression "(*pcVar6)(&local_20,param_2,param_3,param_4,param_5,param_6,param_8,param_9,&local_28)" (parenthesized_expression "(*pcVar6)" (( "(") (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) () ")")) (argument_list "(&local_20,param_2,param_3,param_4,param_5,param_6,param_8,param_9,&local_28)" (( "(") (pointer_expression "&local_20" (& "&") (identifier "local_20")) (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "param_5") (, ",") (identifier "param_6") (, ",") (identifier "param_8") (, ",") (identifier "param_9") (, ",") (pointer_expression "&local_28" (& "&") (identifier "local_28")) () ")"))) (; ";")) (expression_statement "uVar4 = *(uint *)(local_28 + -0xc);" (assignment_expression "uVar4 = *(uint *)(local_28 + -0xc)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(local_28 + -0xc)" (* "*") (cast_expression "(uint *)(local_28 + -0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -0xc)" (( "(") (binary_expression "local_28 + -0xc" (identifier "local_28") (+ "+") (number_literal "-0xc")) () ")"))))) (; ";")) (if_statement "if (uVar4 == 0) {\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }\n  else {\n    std::string::resize(param_10,uVar4,'\0');\n    pcVar2 = local_28;\n    pcVar3 = *(char **)param_10;\n    pcVar5 = local_28 + uVar4;\n    if (-1 < *(int *)(pcVar3 + -4)) {\n      std::string::_M_leak_hard(param_10);\n      pcVar3 = *(char **)param_10;\n    }\n    std::ctype<char>::widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }" (if "if") (parenthesized_expression "(uVar4 == 0)" (( "(") (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }" ({ "{") (expression_statement "*param_1 = local_20;" (assignment_expression "*param_1 = local_20" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "local_20")) (; ";")) (expression_statement "param_1[1] = local_1c;" (assignment_expression "param_1[1] = local_1c" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_1c")) (; ";")) (} "}")) (else_clause "else {\n    std::string::resize(param_10,uVar4,'\0');\n    pcVar2 = local_28;\n    pcVar3 = *(char **)param_10;\n    pcVar5 = local_28 + uVar4;\n    if (-1 < *(int *)(pcVar3 + -4)) {\n      std::string::_M_leak_hard(param_10);\n      pcVar3 = *(char **)param_10;\n    }\n    std::ctype<char>::widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }" (else "else") (compound_statement "{\n    std::string::resize(param_10,uVar4,'\0');\n    pcVar2 = local_28;\n    pcVar3 = *(char **)param_10;\n    pcVar5 = local_28 + uVar4;\n    if (-1 < *(int *)(pcVar3 + -4)) {\n      std::string::_M_leak_hard(param_10);\n      pcVar3 = *(char **)param_10;\n    }\n    std::ctype<char>::widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);\n    *param_1 = local_20;\n    param_1[1] = local_1c;\n  }" ({ "{") (labeled_statement "std::string::resize(param_10,uVar4,'\0');" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "string::resize(param_10,uVar4,'\0');" (statement_identifier "string") (: ":") (ERROR ":" (: ":")) (expression_statement "resize(param_10,uVar4,'\0');" (call_expression "resize(param_10,uVar4,'\0')" (identifier "resize") (argument_list "(param_10,uVar4,'\0')" (( "(") (identifier "param_10") (, ",") (identifier "uVar4") (, ",") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")) () ")"))) (; ";")))) (expression_statement "pcVar2 = local_28;" (assignment_expression "pcVar2 = local_28" (identifier "pcVar2") (= "=") (identifier "local_28")) (; ";")) (expression_statement "pcVar3 = *(char **)param_10;" (assignment_expression "pcVar3 = *(char **)param_10" (identifier "pcVar3") (= "=") (pointer_expression "*(char **)param_10" (* "*") (cast_expression "(char **)param_10" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "param_10")))) (; ";")) (expression_statement "pcVar5 = local_28 + uVar4;" (assignment_expression "pcVar5 = local_28 + uVar4" (identifier "pcVar5") (= "=") (binary_expression "local_28 + uVar4" (identifier "local_28") (+ "+") (identifier "uVar4"))) (; ";")) (if_statement "if (-1 < *(int *)(pcVar3 + -4)) {\n      std::string::_M_leak_hard(param_10);\n      pcVar3 = *(char **)param_10;\n    }" (if "if") (parenthesized_expression "(-1 < *(int *)(pcVar3 + -4))" (( "(") (binary_expression "-1 < *(int *)(pcVar3 + -4)" (number_literal "-1") (< "<") (pointer_expression "*(int *)(pcVar3 + -4)" (* "*") (cast_expression "(int *)(pcVar3 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar3 + -4)" (( "(") (binary_expression "pcVar3 + -4" (identifier "pcVar3") (+ "+") (number_literal "-4")) () ")"))))) () ")")) (compound_statement "{\n      std::string::_M_leak_hard(param_10);\n      pcVar3 = *(char **)param_10;\n    }" ({ "{") (labeled_statement "std::string::_M_leak_hard(param_10);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "string::_M_leak_hard(param_10);" (statement_identifier "string") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_leak_hard(param_10);" (call_expression "_M_leak_hard(param_10)" (identifier "_M_leak_hard") (argument_list "(param_10)" (( "(") (identifier "param_10") () ")"))) (; ";")))) (expression_statement "pcVar3 = *(char **)param_10;" (assignment_expression "pcVar3 = *(char **)param_10" (identifier "pcVar3") (= "=") (pointer_expression "*(char **)param_10" (* "*") (cast_expression "(char **)param_10" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "param_10")))) (; ";")) (} "}"))) (labeled_statement "std::ctype<char>::widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);" (statement_identifier "std") (ERROR "::ctype<char>:" (: ":") (: ":") (binary_expression "ctype<char" (identifier "ctype") (< "<") (identifier "char")) (> ">") (: ":")) (: ":") (expression_statement "widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);" (call_expression "widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3)" (identifier "widen") (argument_list "((ctype<char> *)this,pcVar2,pcVar5,pcVar3)" (( "(") (parenthesized_expression "(ctype<char> *)this,pcVar2,pcVar5,pcVar3)" (( "(") (comma_expression "ctype<char> *)this,pcVar2,pcVar5,pcVar3" (binary_expression "ctype<char> *)this" (binary_expression "ctype<char" (identifier "ctype") (< "<") (identifier "char")) (> ">") (pointer_expression "*)this" (* "*") (ERROR ")" () ")")) (identifier "this"))) (, ",") (comma_expression "pcVar2,pcVar5,pcVar3" (identifier "pcVar2") (, ",") (comma_expression "pcVar5,pcVar3" (identifier "pcVar5") (, ",") (identifier "pcVar3")))) () ")")) () ""))) (; ";"))) (expression_statement "*param_1 = local_20;" (assignment_expression "*param_1 = local_20" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "local_20")) (; ";")) (expression_statement "param_1[1] = local_1c;" (assignment_expression "param_1[1] = local_1c" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_1c")) (; ";")) (} "}")))) (if_statement "if (local_28 + -0xc != puVar1) {\n    FUN_00347de0(local_28 + -0xc,auStack_24);\n  }" (if "if") (parenthesized_expression "(local_28 + -0xc != puVar1)" (( "(") (binary_expression "local_28 + -0xc != puVar1" (binary_expression "local_28 + -0xc" (identifier "local_28") (+ "+") (number_literal "-0xc")) (!= "!=") (identifier "puVar1")) () ")")) (compound_statement "{\n    FUN_00347de0(local_28 + -0xc,auStack_24);\n  }" ({ "{") (expression_statement "FUN_00347de0(local_28 + -0xc,auStack_24);" (call_expression "FUN_00347de0(local_28 + -0xc,auStack_24)" (identifier "FUN_00347de0") (argument_list "(local_28 + -0xc,auStack_24)" (( "(") (binary_expression "local_28 + -0xc" (identifier "local_28") (+ "+") (number_literal "-0xc")) (, ",") (identifier "auStack_24") () ")"))) (; ";")) (} "}"))) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) 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: (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)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier)))))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (binary_expression left: (binary_expression left: (assignment_expression left: (identifier) right: (identifier)) (ERROR (identifier)) right: (identifier)) (ERROR (identifier)) right: (binary_expression left: (identifier) right: (parenthesized_expression (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)) right: (false)) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)) right: (true)) right: (identifier)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (ERROR) (labeled_statement label: (statement_identifier) (ERROR) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (char_literal (escape_sequence))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (ERROR) (labeled_statement label: (statement_identifier) (ERROR) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))))) (labeled_statement label: (statement_identifier) (ERROR (binary_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (parenthesized_expression (comma_expression left: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (pointer_expression (ERROR) argument: (identifier))) right: (comma_expression left: (identifier) right: (comma_expression left: (identifier) right: (identifier))))) (MISSING ")"))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier)))))) (return_statement (identifier)))))

undefined4 *
MASKED(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6,char param_7,int param_8,undefined4 param_9,
            string *param_10)

{
  undefined *puVar1;
  char *pcVar2;
  ctype *this;
  char *pcVar3;
  uint uVar4;
  char *pcVar5;
  code *pcVar6;
  char *local_28;
  undefined1 auStack_24 [4];
  undefined4 local_20;
  undefined4 local_1c;
  
  puVar1 = PTR__S_empty_rep_storage_004c1340;
  this = std::use_facet<std::ctype<char>>((locale *)(param_8 + 0x6c));
  local_28 = puVar1 + 0xc;
  pcVar6 = (code *)PTR__M_extract<false>_004c2e08;
  if (param_7 != '\0') {
    pcVar6 = (code *)PTR__M_extract<true>_004c2e04;
  }
                    /* try { // try from 0035bcf4 to 0035bde7 has its CatchHandler @ 0035bdf8 */
  (*pcVar6)(&local_20,param_2,param_3,param_4,param_5,param_6,param_8,param_9,&local_28);
  uVar4 = *(uint *)(local_28 + -0xc);
  if (uVar4 == 0) {
    *param_1 = local_20;
    param_1[1] = local_1c;
  }
  else {
    std::string::resize(param_10,uVar4,'\0');
    pcVar2 = local_28;
    pcVar3 = *(char **)param_10;
    pcVar5 = local_28 + uVar4;
    if (-1 < *(int *)(pcVar3 + -4)) {
      std::string::_M_leak_hard(param_10);
      pcVar3 = *(char **)param_10;
    }
    std::ctype<char>::widen((ctype<char> *)this,pcVar2,pcVar5,pcVar3);
    *param_1 = local_20;
    param_1[1] = local_1c;
  }
  if (local_28 + -0xc != puVar1) {
    FUN_00347de0(local_28 + -0xc,auStack_24);
  }
  return param_1;
}

