
/* std::money_put<char, std::ostreambuf_iterator<char, std::char_traits<char> >
   >::do_put(std::ostreambuf_iterator<char, std::char_traits<char> >, bool, std::ios_base&, char,
   long double) const */

undefined4
std::money_put<char,std::ostreambuf_iterator<char,std::char_traits<char>>>::do_put
          (undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,byte param_5,
          int param_6,char param_7,undefined4 param_8,undefined8 param_9)

{
  int iVar1;
  undefined *puVar2;
  int *piVar3;
  int iVar4;
  undefined1 *puVar5;
  undefined1 *puVar6;
  code *pcVar7;
  undefined1 *puVar8;
  undefined1 auStack_c8 [16];
  undefined4 local_b8 [2];
  undefined8 local_b0;
  undefined1 auStack_a8 [64];
  undefined1 *local_60 [2];
  undefined1 auStack_58 [16];
  undefined1 auStack_48 [8];
  uint local_40;
  int local_3c;
  undefined1 *local_38;
  undefined1 *local_34;
  
  local_40 = (uint)param_5;
  local_3c = (int)param_7;
  (*(code *)PTR_locale_004c2d24)(auStack_48,param_6 + 0x6c);
                    /* try { // try from 003c327c to 003c3347 has its CatchHandler @ 003c34dc */
  piVar3 = (int *)(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)(auStack_48);
  puVar8 = auStack_c8;
  puVar6 = auStack_a8;
  local_60[0] = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();
  puVar2 = PTR_UINT_004c12dc;
  local_b8[0] = 0;
  local_b0 = param_9;
  iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,0x40,PTR_UINT_004c12dc + -0x398c)
  ;
  if (0x3f < iVar4) {
    iVar1 = -(iVar4 + 8U & 0xfffffff8);
    puVar8 = auStack_c8 + iVar1;
    puVar6 = auStack_a8 + iVar1;
    puVar5 = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();
    *(undefined8 *)(auStack_a8 + iVar1 + -8) = param_9;
    *(undefined4 *)((int)local_b8 + iVar1) = 0;
    local_60[0] = puVar5;
    iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c);
  }
  local_60[0] = auStack_58;
  (*(code *)PTR__M_construct_004c32d0)(local_60,iVar4,0);
  local_34 = puVar6 + iVar4;
  local_38 = local_60[0];
  if (*(char *)(piVar3 + 7) == '\x01') {
    if (puVar6 + iVar4 != puVar6) {
      (*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);
    }
    goto LAB_003c33a0;
  }
  if (*(char *)(piVar3 + 7) == '\0') {
    (*(code *)PTR__M_widen_init_004c22c0)(piVar3);
    pcVar7 = *(code **)(*piVar3 + 0x1c);
    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) goto LAB_003c3468;
  }
  else {
    pcVar7 = *(code **)(*piVar3 + 0x1c);
    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) {
LAB_003c3468:
      (*pcVar7)(piVar3,puVar6,local_34,local_38);
      goto LAB_003c33a0;
    }
  }
  if (puVar6 + iVar4 != puVar6) {
    (*(code *)PTR_memcpy_004c5ba8)(local_38,puVar6,iVar4);
  }
LAB_003c33a0:
  iVar4 = local_3c;
  pcVar7 = (code *)PTR__M_insert<true>_004c32d8;
  if (local_40 == 0) {
    pcVar7 = (code *)PTR__M_insert<false>_004c32d4;
  }
  *(undefined1 ***)(puVar8 + 0x18) = local_60;
  *(int *)(puVar8 + 0x14) = iVar4;
                    /* try { // try from 003c33cc to 003c3477 has its CatchHandler @ 003c34a0 */
  *(int *)(puVar8 + 0x10) = param_6;
  (*pcVar7)(param_1,param_2,param_3,param_4);
  if (local_60[0] != auStack_58) {
    (*(code *)PTR_operator_delete_004c12fc)();
  }
  (*(code *)PTR__locale_004c22f0)(auStack_48);
  return param_1;
}



undefined4
FUN_003c31f4(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            byte param_5,int param_6,char param_7,undefined4 param_8,undefined8 param_9)

{
  int iVar1;
  undefined *puVar2;
  int *piVar3;
  int iVar4;
  undefined1 *puVar5;
  undefined1 *puVar6;
  code *pcVar7;
  undefined1 *puVar8;
  undefined1 auStack_c8 [16];
  undefined4 local_b8 [2];
  undefined8 local_b0;
  undefined1 auStack_a8 [64];
  undefined1 *local_60 [2];
  undefined1 auStack_58 [16];
  undefined1 auStack_48 [8];
  uint local_40;
  int local_3c;
  undefined1 *local_38;
  undefined1 *local_34;
  
  local_40 = (uint)param_5;
  local_3c = (int)param_7;
  (*(code *)PTR_locale_004c2d24)(auStack_48,param_6 + 0x6c);
                    /* try { // try from 003c327c to 003c3347 has its CatchHandler @ 003c34dc */
  piVar3 = (int *)(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)(auStack_48);
  puVar8 = auStack_c8;
  puVar6 = auStack_a8;
  local_60[0] = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();
  puVar2 = PTR_UINT_004c12dc;
  local_b8[0] = 0;
  local_b0 = param_9;
  iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,0x40,PTR_UINT_004c12dc + -0x398c)
  ;
  if (0x3f < iVar4) {
    iVar1 = -(iVar4 + 8U & 0xfffffff8);
    puVar8 = auStack_c8 + iVar1;
    puVar6 = auStack_a8 + iVar1;
    puVar5 = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();
    *(undefined8 *)(auStack_a8 + iVar1 + -8) = param_9;
    *(undefined4 *)((int)local_b8 + iVar1) = 0;
    local_60[0] = puVar5;
    iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c);
  }
  local_60[0] = auStack_58;
  (*(code *)PTR__M_construct_004c32d0)(local_60,iVar4,0);
  local_34 = puVar6 + iVar4;
  local_38 = local_60[0];
  if (*(char *)(piVar3 + 7) == '\x01') {
    if (puVar6 + iVar4 != puVar6) {
      (*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);
    }
    goto LAB_003c33a0;
  }
  if (*(char *)(piVar3 + 7) == '\0') {
    (*(code *)PTR__M_widen_init_004c22c0)(piVar3);
    pcVar7 = *(code **)(*piVar3 + 0x1c);
    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) goto LAB_003c3468;
  }
  else {
    pcVar7 = *(code **)(*piVar3 + 0x1c);
    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) {
LAB_003c3468:
      (*pcVar7)(piVar3,puVar6,local_34,local_38);
      goto LAB_003c33a0;
    }
  }
  if (puVar6 + iVar4 != puVar6) {
    (*(code *)PTR_memcpy_004c5ba8)(local_38,puVar6,iVar4);
  }
LAB_003c33a0:
  iVar4 = local_3c;
  pcVar7 = (code *)PTR__M_insert<true>_004c32d8;
  if (local_40 == 0) {
    pcVar7 = (code *)PTR__M_insert<false>_004c32d4;
  }
  *(undefined1 ***)(puVar8 + 0x18) = local_60;
  *(int *)(puVar8 + 0x14) = iVar4;
                    /* try { // try from 003c33cc to 003c3477 has its CatchHandler @ 003c34a0 */
  *(int *)(puVar8 + 0x10) = param_6;
  (*pcVar7)(param_1,param_2,param_3,param_4);
  if (local_60[0] != auStack_58) {
    (*(code *)PTR_operator_delete_004c12fc)();
  }
  (*(code *)PTR__locale_004c22f0)(auStack_48);
  return param_1;
}


lui gp,0x10
addiu gp,gp,0x604c
addu gp,gp,t9
addiu sp,sp,-0x88
lw t9,-0x651c(gp)
sdc1 f20,0x80(sp)
sw s8,0x78(sp)
or s8,sp,zero
sw s6,0x70(sp)
or s6,a1,zero
lbu v0,0x9b(s8)
sw s3,0x64(sp)
addiu s3,s8,0x40
sw s5,0x6c(sp)
or s5,a0,zero
sw v0,0x48(s8)
or a0,s3,zero
lw v0,0x9c(s8)
sw gp,0x20(sp)
sw ra,0x7c(sp)
addiu a1,v0,0x6c
sw s7,0x74(sp)
sw s4,0x68(sp)
sw s2,0x60(sp)
sw s1,0x5c(sp)
sw s0,0x58(sp)
sw a2,0x90(s8)
sw a3,0x94(s8)
lb v0,0xa3(s8)
ldc1 f20,0xa8(s8)
jalr t9
_sw v0,0x4c(s8)
lw gp,0x20(s8)
lw t9,-0x65bc(gp)
jalr t9
_or a0,s3,zero
lw gp,0x20(s8)
addiu sp,sp,-0x40
or s4,v0,zero
lw t9,-0x7e80(gp)
jalr t9
_addiu s1,sp,0x20
lw gp,0x20(s8)
addiu s2,s8,0x28
li a2,0x40
sdc1 f20,0x18(sp)
or a1,s1,zero
sw zero,0x10(sp)
or a0,s2,zero
sw v0,0x28(s8)
lw s7,-0x7f64(gp)
lw t9,-0x6518(gp)
jalr t9
_addiu a3,s7,-0x398c
or s0,v0,zero
slti v0,v0,0x40
bne v0,zero,0x003c332c
_lw gp,0x20(s8)
addiu v0,s0,0x8
lw t9,-0x7e80(gp)
addiu s0,s0,0x1
srl v0,v0,0x3
sll v0,v0,0x3
subu sp,sp,v0
jalr t9
_addiu s1,sp,0x20
lw gp,0x20(s8)
addiu a3,s7,-0x398c
sdc1 f20,0x18(sp)
or a2,s0,zero
sw zero,0x10(sp)
or a1,s1,zero
or a0,s2,zero
lw t9,-0x6518(gp)
jalr t9
_sw v0,0x28(s8)
lw gp,0x20(s8)
or s0,v0,zero
addiu s7,s8,0x30
lw t9,-0x5f70(gp)
or a2,zero,zero
sw s7,0x28(s8)
or a1,s0,zero
jalr t9
_or a0,s2,zero
addu a0,s1,s0
lb v0,0x1c(s4)
li v1,0x1
lw gp,0x20(s8)
sw a0,0x54(s8)
lw a0,0x28(s8)
beq v0,v1,0x003c3480
_sw a0,0x50(s8)
beq v0,zero,0x003c3440
_lw v0,-0x6650(gp)
lw v1,0x0(s4)
lw t9,0x1c(v1)
bne t9,v0,0x003c3468
_lw a3,0x50(s8)
addu v0,s1,s0
beq v0,s1,0x003c33a0
_lw t9,-0x3698(gp)
or a2,s0,zero
lw a0,0x50(s8)
jalr t9
_or a1,s1,zero
lw gp,0x20(s8)
lw v0,0x48(s8)
or a1,s6,zero
lw a2,0x90(s8)
or a0,s5,zero
bne v0,zero,0x003c3438
_lw a3,0x94(s8)
lw t9,-0x5f6c(gp)
lw v0,0x4c(s8)
sw s2,0x18(sp)
sw v0,0x14(sp)
lw v0,0x9c(s8)
jalr t9
_sw v0,0x10(sp)
lw a0,0x28(s8)
beq a0,s7,0x003c33f0
_lw gp,0x20(s8)
lw t9,-0x7f44(gp)
jalr t9
_nop
lw gp,0x20(s8)
lw t9,-0x6f50(gp)
jalr t9
_or a0,s3,zero
or sp,s8,zero
or v0,s5,zero
ldc1 f20,0x80(sp)
lw ra,0x7c(sp)
lw s8,0x78(sp)
lw s7,0x74(sp)
lw s6,0x70(sp)
lw s5,0x6c(sp)
lw s4,0x68(sp)
lw s3,0x64(sp)
lw s2,0x60(sp)
lw s1,0x5c(sp)
lw s0,0x58(sp)
jr ra
_addiu sp,sp,0x88
b 0x003c33bc
_lw t9,-0x5f68(gp)
lw t9,-0x6f80(gp)
jalr t9
_or a0,s4,zero
lw gp,0x20(s8)
lw v1,0x0(s4)
lw v0,-0x6650(gp)
lw t9,0x1c(v1)
beq t9,v0,0x003c3384
_addu v0,s1,s0
lw a3,0x50(s8)
or a1,s1,zero
lw a2,0x54(s8)
jalr t9
_or a0,s4,zero
b 0x003c33a0
_lw gp,0x20(s8)
addu v0,s1,s0
beq v0,s1,0x003c33a0
_lw t9,-0x3698(gp)
or a2,s0,zero
jalr t9
_or a1,s1,zero
b 0x003c33a0
_lw gp,0x20(s8)
(translation_unit "undefined4\nFUN_003c31f4(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            byte param_5,int param_6,char param_7,undefined4 param_8,undefined8 param_9)\n\n{\n  int iVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined1 *puVar6;\n  code *pcVar7;\n  undefined1 *puVar8;\n  undefined1 auStack_c8 [16];\n  undefined4 local_b8 [2];\n  undefined8 local_b0;\n  undefined1 auStack_a8 [64];\n  undefined1 *local_60 [2];\n  undefined1 auStack_58 [16];\n  undefined1 auStack_48 [8];\n  uint local_40;\n  int local_3c;\n  undefined1 *local_38;\n  undefined1 *local_34;\n  \n  local_40 = (uint)param_5;\n  local_3c = (int)param_7;\n  (*(code *)PTR_locale_004c2d24)(auStack_48,param_6 + 0x6c);\n                    /* try { // try from 003c327c to 003c3347 has its CatchHandler @ 003c34dc */\n  piVar3 = (int *)(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)(auStack_48);\n  puVar8 = auStack_c8;\n  puVar6 = auStack_a8;\n  local_60[0] = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();\n  puVar2 = PTR_UINT_004c12dc;\n  local_b8[0] = 0;\n  local_b0 = param_9;\n  iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,0x40,PTR_UINT_004c12dc + -0x398c)\n  ;\n  if (0x3f < iVar4) {\n    iVar1 = -(iVar4 + 8U & 0xfffffff8);\n    puVar8 = auStack_c8 + iVar1;\n    puVar6 = auStack_a8 + iVar1;\n    puVar5 = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();\n    *(undefined8 *)(auStack_a8 + iVar1 + -8) = param_9;\n    *(undefined4 *)((int)local_b8 + iVar1) = 0;\n    local_60[0] = puVar5;\n    iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c);\n  }\n  local_60[0] = auStack_58;\n  (*(code *)PTR__M_construct_004c32d0)(local_60,iVar4,0);\n  local_34 = puVar6 + iVar4;\n  local_38 = local_60[0];\n  if (*(char *)(piVar3 + 7) == '\x01') {\n    if (puVar6 + iVar4 != puVar6) {\n      (*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);\n    }\n    goto LAB_003c33a0;\n  }\n  if (*(char *)(piVar3 + 7) == '\0') {\n    (*(code *)PTR__M_widen_init_004c22c0)(piVar3);\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) goto LAB_003c3468;\n  }\n  else {\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) {\nLAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);\n      goto LAB_003c33a0;\n    }\n  }\n  if (puVar6 + iVar4 != puVar6) {\n    (*(code *)PTR_memcpy_004c5ba8)(local_38,puVar6,iVar4);\n  }\nLAB_003c33a0:\n  iVar4 = local_3c;\n  pcVar7 = (code *)PTR__M_insert<true>_004c32d8;\n  if (local_40 == 0) {\n    pcVar7 = (code *)PTR__M_insert<false>_004c32d4;\n  }\n  *(undefined1 ***)(puVar8 + 0x18) = local_60;\n  *(int *)(puVar8 + 0x14) = iVar4;\n                    /* try { // try from 003c33cc to 003c3477 has its CatchHandler @ 003c34a0 */\n  *(int *)(puVar8 + 0x10) = param_6;\n  (*pcVar7)(param_1,param_2,param_3,param_4);\n  if (local_60[0] != auStack_58) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  (*(code *)PTR__locale_004c22f0)(auStack_48);\n  return param_1;\n}\n\n" (function_definition "undefined4\nFUN_003c31f4(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            byte param_5,int param_6,char param_7,undefined4 param_8,undefined8 param_9)\n\n{\n  int iVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined1 *puVar6;\n  code *pcVar7;\n  undefined1 *puVar8;\n  undefined1 auStack_c8 [16];\n  undefined4 local_b8 [2];\n  undefined8 local_b0;\n  undefined1 auStack_a8 [64];\n  undefined1 *local_60 [2];\n  undefined1 auStack_58 [16];\n  undefined1 auStack_48 [8];\n  uint local_40;\n  int local_3c;\n  undefined1 *local_38;\n  undefined1 *local_34;\n  \n  local_40 = (uint)param_5;\n  local_3c = (int)param_7;\n  (*(code *)PTR_locale_004c2d24)(auStack_48,param_6 + 0x6c);\n                    /* try { // try from 003c327c to 003c3347 has its CatchHandler @ 003c34dc */\n  piVar3 = (int *)(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)(auStack_48);\n  puVar8 = auStack_c8;\n  puVar6 = auStack_a8;\n  local_60[0] = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();\n  puVar2 = PTR_UINT_004c12dc;\n  local_b8[0] = 0;\n  local_b0 = param_9;\n  iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,0x40,PTR_UINT_004c12dc + -0x398c)\n  ;\n  if (0x3f < iVar4) {\n    iVar1 = -(iVar4 + 8U & 0xfffffff8);\n    puVar8 = auStack_c8 + iVar1;\n    puVar6 = auStack_a8 + iVar1;\n    puVar5 = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();\n    *(undefined8 *)(auStack_a8 + iVar1 + -8) = param_9;\n    *(undefined4 *)((int)local_b8 + iVar1) = 0;\n    local_60[0] = puVar5;\n    iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c);\n  }\n  local_60[0] = auStack_58;\n  (*(code *)PTR__M_construct_004c32d0)(local_60,iVar4,0);\n  local_34 = puVar6 + iVar4;\n  local_38 = local_60[0];\n  if (*(char *)(piVar3 + 7) == '\x01') {\n    if (puVar6 + iVar4 != puVar6) {\n      (*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);\n    }\n    goto LAB_003c33a0;\n  }\n  if (*(char *)(piVar3 + 7) == '\0') {\n    (*(code *)PTR__M_widen_init_004c22c0)(piVar3);\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) goto LAB_003c3468;\n  }\n  else {\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) {\nLAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);\n      goto LAB_003c33a0;\n    }\n  }\n  if (puVar6 + iVar4 != puVar6) {\n    (*(code *)PTR_memcpy_004c5ba8)(local_38,puVar6,iVar4);\n  }\nLAB_003c33a0:\n  iVar4 = local_3c;\n  pcVar7 = (code *)PTR__M_insert<true>_004c32d8;\n  if (local_40 == 0) {\n    pcVar7 = (code *)PTR__M_insert<false>_004c32d4;\n  }\n  *(undefined1 ***)(puVar8 + 0x18) = local_60;\n  *(int *)(puVar8 + 0x14) = iVar4;\n                    /* try { // try from 003c33cc to 003c3477 has its CatchHandler @ 003c34a0 */\n  *(int *)(puVar8 + 0x10) = param_6;\n  (*pcVar7)(param_1,param_2,param_3,param_4);\n  if (local_60[0] != auStack_58) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  (*(code *)PTR__locale_004c22f0)(auStack_48);\n  return param_1;\n}" type_identifier (function_declarator "FUN_003c31f4(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            byte param_5,int param_6,char param_7,undefined4 param_8,undefined8 param_9)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            byte param_5,int param_6,char param_7,undefined4 param_8,undefined8 param_9)" ( (parameter_declaration "undefined4 param_1" type_identifier 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 "byte param_5" type_identifier identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "char param_7" primitive_type identifier) , (parameter_declaration "undefined4 param_8" type_identifier identifier) , (parameter_declaration "undefined8 param_9" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined1 *puVar6;\n  code *pcVar7;\n  undefined1 *puVar8;\n  undefined1 auStack_c8 [16];\n  undefined4 local_b8 [2];\n  undefined8 local_b0;\n  undefined1 auStack_a8 [64];\n  undefined1 *local_60 [2];\n  undefined1 auStack_58 [16];\n  undefined1 auStack_48 [8];\n  uint local_40;\n  int local_3c;\n  undefined1 *local_38;\n  undefined1 *local_34;\n  \n  local_40 = (uint)param_5;\n  local_3c = (int)param_7;\n  (*(code *)PTR_locale_004c2d24)(auStack_48,param_6 + 0x6c);\n                    /* try { // try from 003c327c to 003c3347 has its CatchHandler @ 003c34dc */\n  piVar3 = (int *)(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)(auStack_48);\n  puVar8 = auStack_c8;\n  puVar6 = auStack_a8;\n  local_60[0] = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();\n  puVar2 = PTR_UINT_004c12dc;\n  local_b8[0] = 0;\n  local_b0 = param_9;\n  iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,0x40,PTR_UINT_004c12dc + -0x398c)\n  ;\n  if (0x3f < iVar4) {\n    iVar1 = -(iVar4 + 8U & 0xfffffff8);\n    puVar8 = auStack_c8 + iVar1;\n    puVar6 = auStack_a8 + iVar1;\n    puVar5 = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();\n    *(undefined8 *)(auStack_a8 + iVar1 + -8) = param_9;\n    *(undefined4 *)((int)local_b8 + iVar1) = 0;\n    local_60[0] = puVar5;\n    iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c);\n  }\n  local_60[0] = auStack_58;\n  (*(code *)PTR__M_construct_004c32d0)(local_60,iVar4,0);\n  local_34 = puVar6 + iVar4;\n  local_38 = local_60[0];\n  if (*(char *)(piVar3 + 7) == '\x01') {\n    if (puVar6 + iVar4 != puVar6) {\n      (*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);\n    }\n    goto LAB_003c33a0;\n  }\n  if (*(char *)(piVar3 + 7) == '\0') {\n    (*(code *)PTR__M_widen_init_004c22c0)(piVar3);\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) goto LAB_003c3468;\n  }\n  else {\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) {\nLAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);\n      goto LAB_003c33a0;\n    }\n  }\n  if (puVar6 + iVar4 != puVar6) {\n    (*(code *)PTR_memcpy_004c5ba8)(local_38,puVar6,iVar4);\n  }\nLAB_003c33a0:\n  iVar4 = local_3c;\n  pcVar7 = (code *)PTR__M_insert<true>_004c32d8;\n  if (local_40 == 0) {\n    pcVar7 = (code *)PTR__M_insert<false>_004c32d4;\n  }\n  *(undefined1 ***)(puVar8 + 0x18) = local_60;\n  *(int *)(puVar8 + 0x14) = iVar4;\n                    /* try { // try from 003c33cc to 003c3477 has its CatchHandler @ 003c34a0 */\n  *(int *)(puVar8 + 0x10) = param_6;\n  (*pcVar7)(param_1,param_2,param_3,param_4);\n  if (local_60[0] != auStack_58) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  (*(code *)PTR__locale_004c22f0)(auStack_48);\n  return param_1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined1 auStack_c8 [16];" type_identifier (array_declarator "auStack_c8 [16]" identifier [ number_literal ]) ;) (declaration "undefined4 local_b8 [2];" type_identifier (array_declarator "local_b8 [2]" identifier [ number_literal ]) ;) (declaration "undefined8 local_b0;" type_identifier identifier ;) (declaration "undefined1 auStack_a8 [64];" type_identifier (array_declarator "auStack_a8 [64]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_60 [2];" type_identifier (pointer_declarator "*local_60 [2]" * (array_declarator "local_60 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 auStack_58 [16];" type_identifier (array_declarator "auStack_58 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_48 [8];" type_identifier (array_declarator "auStack_48 [8]" identifier [ number_literal ]) ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "undefined1 *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "undefined1 *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (expression_statement "local_40 = (uint)param_5;" (assignment_expression "local_40 = (uint)param_5" identifier = (cast_expression "(uint)param_5" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_3c = (int)param_7;" (assignment_expression "local_3c = (int)param_7" identifier = (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "(*(code *)PTR_locale_004c2d24)(auStack_48,param_6 + 0x6c);" (call_expression "(*(code *)PTR_locale_004c2d24)(auStack_48,param_6 + 0x6c)" (parenthesized_expression "(*(code *)PTR_locale_004c2d24)" ( (pointer_expression "*(code *)PTR_locale_004c2d24" * (cast_expression "(code *)PTR_locale_004c2d24" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_48,param_6 + 0x6c)" ( identifier , (binary_expression "param_6 + 0x6c" identifier + number_literal) ))) ;) comment (expression_statement "piVar3 = (int *)(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)(auStack_48);" (assignment_expression "piVar3 = (int *)(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)(auStack_48)" identifier = (cast_expression "(int *)(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)(auStack_48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)(auStack_48)" (parenthesized_expression "(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)" ( (binary_expression "*(code *)PTR_use_facet<std_ctype<char>>_004c2c84" (binary_expression "*(code *)PTR_use_facet<std_ctype" (pointer_expression "*(code *)PTR_use_facet" * (cast_expression "(code *)PTR_use_facet" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) < identifier) < (binary_expression "char>>_004c2c84" identifier >> identifier)) )) (argument_list "(auStack_48)" ( identifier ))))) ;) (expression_statement "puVar8 = auStack_c8;" (assignment_expression "puVar8 = auStack_c8" identifier = identifier) ;) (expression_statement "puVar6 = auStack_a8;" (assignment_expression "puVar6 = auStack_a8" identifier = identifier) ;) (expression_statement "local_60[0] = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();" (assignment_expression "local_60[0] = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)()" (subscript_expression "local_60[0]" identifier [ number_literal ]) = (cast_expression "(undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)()" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR__S_get_c_locale_004c13c0)()" (parenthesized_expression "(*(code *)PTR__S_get_c_locale_004c13c0)" ( (pointer_expression "*(code *)PTR__S_get_c_locale_004c13c0" * (cast_expression "(code *)PTR__S_get_c_locale_004c13c0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (expression_statement "puVar2 = PTR_UINT_004c12dc;" (assignment_expression "puVar2 = PTR_UINT_004c12dc" identifier = identifier) ;) (expression_statement "local_b8[0] = 0;" (assignment_expression "local_b8[0] = 0" (subscript_expression "local_b8[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_b0 = param_9;" (assignment_expression "local_b0 = param_9" identifier = identifier) ;) (expression_statement "iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,0x40,PTR_UINT_004c12dc + -0x398c)\n  ;" (assignment_expression "iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,0x40,PTR_UINT_004c12dc + -0x398c)" identifier = (call_expression "(*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,0x40,PTR_UINT_004c12dc + -0x398c)" (parenthesized_expression "(*(code *)PTR___convert_from_v_004c2d28)" ( (pointer_expression "*(code *)PTR___convert_from_v_004c2d28" * (cast_expression "(code *)PTR___convert_from_v_004c2d28" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_60,puVar6,0x40,PTR_UINT_004c12dc + -0x398c)" ( identifier , identifier , number_literal , (binary_expression "PTR_UINT_004c12dc + -0x398c" identifier + number_literal) )))) ;) (if_statement "if (0x3f < iVar4) {\n    iVar1 = -(iVar4 + 8U & 0xfffffff8);\n    puVar8 = auStack_c8 + iVar1;\n    puVar6 = auStack_a8 + iVar1;\n    puVar5 = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();\n    *(undefined8 *)(auStack_a8 + iVar1 + -8) = param_9;\n    *(undefined4 *)((int)local_b8 + iVar1) = 0;\n    local_60[0] = puVar5;\n    iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c);\n  }" if (parenthesized_expression "(0x3f < iVar4)" ( (binary_expression "0x3f < iVar4" number_literal < identifier) )) (compound_statement "{\n    iVar1 = -(iVar4 + 8U & 0xfffffff8);\n    puVar8 = auStack_c8 + iVar1;\n    puVar6 = auStack_a8 + iVar1;\n    puVar5 = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();\n    *(undefined8 *)(auStack_a8 + iVar1 + -8) = param_9;\n    *(undefined4 *)((int)local_b8 + iVar1) = 0;\n    local_60[0] = puVar5;\n    iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c);\n  }" { (expression_statement "iVar1 = -(iVar4 + 8U & 0xfffffff8);" (assignment_expression "iVar1 = -(iVar4 + 8U & 0xfffffff8)" identifier = (unary_expression "-(iVar4 + 8U & 0xfffffff8)" - (parenthesized_expression "(iVar4 + 8U & 0xfffffff8)" ( (binary_expression "iVar4 + 8U & 0xfffffff8" (binary_expression "iVar4 + 8U" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar8 = auStack_c8 + iVar1;" (assignment_expression "puVar8 = auStack_c8 + iVar1" identifier = (binary_expression "auStack_c8 + iVar1" identifier + identifier)) ;) (expression_statement "puVar6 = auStack_a8 + iVar1;" (assignment_expression "puVar6 = auStack_a8 + iVar1" identifier = (binary_expression "auStack_a8 + iVar1" identifier + identifier)) ;) (expression_statement "puVar5 = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();" (assignment_expression "puVar5 = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)()" identifier = (cast_expression "(undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)()" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR__S_get_c_locale_004c13c0)()" (parenthesized_expression "(*(code *)PTR__S_get_c_locale_004c13c0)" ( (pointer_expression "*(code *)PTR__S_get_c_locale_004c13c0" * (cast_expression "(code *)PTR__S_get_c_locale_004c13c0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (expression_statement "*(undefined8 *)(auStack_a8 + iVar1 + -8) = param_9;" (assignment_expression "*(undefined8 *)(auStack_a8 + iVar1 + -8) = param_9" (pointer_expression "*(undefined8 *)(auStack_a8 + iVar1 + -8)" * (cast_expression "(undefined8 *)(auStack_a8 + iVar1 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_a8 + iVar1 + -8)" ( (binary_expression "auStack_a8 + iVar1 + -8" (binary_expression "auStack_a8 + iVar1" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)local_b8 + iVar1) = 0;" (assignment_expression "*(undefined4 *)((int)local_b8 + iVar1) = 0" (pointer_expression "*(undefined4 *)((int)local_b8 + iVar1)" * (cast_expression "(undefined4 *)((int)local_b8 + iVar1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_b8 + iVar1)" ( (binary_expression "(int)local_b8 + iVar1" (cast_expression "(int)local_b8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "local_60[0] = puVar5;" (assignment_expression "local_60[0] = puVar5" (subscript_expression "local_60[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c);" (assignment_expression "iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c)" identifier = (call_expression "(*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c)" (parenthesized_expression "(*(code *)PTR___convert_from_v_004c2d28)" ( (pointer_expression "*(code *)PTR___convert_from_v_004c2d28" * (cast_expression "(code *)PTR___convert_from_v_004c2d28" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c)" ( identifier , identifier , (binary_expression "iVar4 + 1" identifier + number_literal) , (binary_expression "puVar2 + -0x398c" identifier + number_literal) )))) ;) })) (expression_statement "local_60[0] = auStack_58;" (assignment_expression "local_60[0] = auStack_58" (subscript_expression "local_60[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "(*(code *)PTR__M_construct_004c32d0)(local_60,iVar4,0);" (call_expression "(*(code *)PTR__M_construct_004c32d0)(local_60,iVar4,0)" (parenthesized_expression "(*(code *)PTR__M_construct_004c32d0)" ( (pointer_expression "*(code *)PTR__M_construct_004c32d0" * (cast_expression "(code *)PTR__M_construct_004c32d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_60,iVar4,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "local_34 = puVar6 + iVar4;" (assignment_expression "local_34 = puVar6 + iVar4" identifier = (binary_expression "puVar6 + iVar4" identifier + identifier)) ;) (expression_statement "local_38 = local_60[0];" (assignment_expression "local_38 = local_60[0]" identifier = (subscript_expression "local_60[0]" identifier [ number_literal ])) ;) (if_statement "if (*(char *)(piVar3 + 7) == '\x01') {\n    if (puVar6 + iVar4 != puVar6) {\n      (*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);\n    }\n    goto LAB_003c33a0;\n  }" if (parenthesized_expression "(*(char *)(piVar3 + 7) == '\x01')" ( (binary_expression "*(char *)(piVar3 + 7) == '\x01'" (pointer_expression "*(char *)(piVar3 + 7)" * (cast_expression "(char *)(piVar3 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 7)" ( (binary_expression "piVar3 + 7" identifier + number_literal) )))) == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n    if (puVar6 + iVar4 != puVar6) {\n      (*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);\n    }\n    goto LAB_003c33a0;\n  }" { (if_statement "if (puVar6 + iVar4 != puVar6) {\n      (*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);\n    }" if (parenthesized_expression "(puVar6 + iVar4 != puVar6)" ( (binary_expression "puVar6 + iVar4 != puVar6" (binary_expression "puVar6 + iVar4" identifier + identifier) != identifier) )) (compound_statement "{\n      (*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);\n    }" { (expression_statement "(*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);" (call_expression "(*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4)" (parenthesized_expression "(*(code *)PTR_memcpy_004c5ba8)" ( (pointer_expression "*(code *)PTR_memcpy_004c5ba8" * (cast_expression "(code *)PTR_memcpy_004c5ba8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_60[0],puVar6,iVar4)" ( (subscript_expression "local_60[0]" identifier [ number_literal ]) , identifier , identifier ))) ;) })) (goto_statement "goto LAB_003c33a0;" goto statement_identifier ;) })) (if_statement "if (*(char *)(piVar3 + 7) == '\0') {\n    (*(code *)PTR__M_widen_init_004c22c0)(piVar3);\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) goto LAB_003c3468;\n  }\n  else {\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) {\nLAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);\n      goto LAB_003c33a0;\n    }\n  }" if (parenthesized_expression "(*(char *)(piVar3 + 7) == '\0')" ( (binary_expression "*(char *)(piVar3 + 7) == '\0'" (pointer_expression "*(char *)(piVar3 + 7)" * (cast_expression "(char *)(piVar3 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 7)" ( (binary_expression "piVar3 + 7" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    (*(code *)PTR__M_widen_init_004c22c0)(piVar3);\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) goto LAB_003c3468;\n  }" { (expression_statement "(*(code *)PTR__M_widen_init_004c22c0)(piVar3);" (call_expression "(*(code *)PTR__M_widen_init_004c22c0)(piVar3)" (parenthesized_expression "(*(code *)PTR__M_widen_init_004c22c0)" ( (pointer_expression "*(code *)PTR__M_widen_init_004c22c0" * (cast_expression "(code *)PTR__M_widen_init_004c22c0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar3)" ( identifier ))) ;) (expression_statement "pcVar7 = *(code **)(*piVar3 + 0x1c);" (assignment_expression "pcVar7 = *(code **)(*piVar3 + 0x1c)" identifier = (pointer_expression "*(code **)(*piVar3 + 0x1c)" * (cast_expression "(code **)(*piVar3 + 0x1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar3 + 0x1c)" ( (binary_expression "*piVar3 + 0x1c" (pointer_expression "*piVar3" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar7 != (code *)PTR_do_widen_004c2bf0) goto LAB_003c3468;" if (parenthesized_expression "(pcVar7 != (code *)PTR_do_widen_004c2bf0)" ( (binary_expression "pcVar7 != (code *)PTR_do_widen_004c2bf0" identifier != (cast_expression "(code *)PTR_do_widen_004c2bf0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (goto_statement "goto LAB_003c3468;" goto statement_identifier ;)) }) (else_clause "else {\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) {\nLAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);\n      goto LAB_003c33a0;\n    }\n  }" else (compound_statement "{\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) {\nLAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);\n      goto LAB_003c33a0;\n    }\n  }" { (expression_statement "pcVar7 = *(code **)(*piVar3 + 0x1c);" (assignment_expression "pcVar7 = *(code **)(*piVar3 + 0x1c)" identifier = (pointer_expression "*(code **)(*piVar3 + 0x1c)" * (cast_expression "(code **)(*piVar3 + 0x1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar3 + 0x1c)" ( (binary_expression "*piVar3 + 0x1c" (pointer_expression "*piVar3" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar7 != (code *)PTR_do_widen_004c2bf0) {\nLAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);\n      goto LAB_003c33a0;\n    }" if (parenthesized_expression "(pcVar7 != (code *)PTR_do_widen_004c2bf0)" ( (binary_expression "pcVar7 != (code *)PTR_do_widen_004c2bf0" identifier != (cast_expression "(code *)PTR_do_widen_004c2bf0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\nLAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);\n      goto LAB_003c33a0;\n    }" { (labeled_statement "LAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);" statement_identifier : (expression_statement "(*pcVar7)(piVar3,puVar6,local_34,local_38);" (call_expression "(*pcVar7)(piVar3,puVar6,local_34,local_38)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(piVar3,puVar6,local_34,local_38)" ( identifier , identifier , identifier , identifier ))) ;)) (goto_statement "goto LAB_003c33a0;" goto statement_identifier ;) })) }))) (if_statement "if (puVar6 + iVar4 != puVar6) {\n    (*(code *)PTR_memcpy_004c5ba8)(local_38,puVar6,iVar4);\n  }" if (parenthesized_expression "(puVar6 + iVar4 != puVar6)" ( (binary_expression "puVar6 + iVar4 != puVar6" (binary_expression "puVar6 + iVar4" identifier + identifier) != identifier) )) (compound_statement "{\n    (*(code *)PTR_memcpy_004c5ba8)(local_38,puVar6,iVar4);\n  }" { (expression_statement "(*(code *)PTR_memcpy_004c5ba8)(local_38,puVar6,iVar4);" (call_expression "(*(code *)PTR_memcpy_004c5ba8)(local_38,puVar6,iVar4)" (parenthesized_expression "(*(code *)PTR_memcpy_004c5ba8)" ( (pointer_expression "*(code *)PTR_memcpy_004c5ba8" * (cast_expression "(code *)PTR_memcpy_004c5ba8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_38,puVar6,iVar4)" ( identifier , identifier , identifier ))) ;) })) (labeled_statement "LAB_003c33a0:\n  iVar4 = local_3c;" statement_identifier : (expression_statement "iVar4 = local_3c;" (assignment_expression "iVar4 = local_3c" identifier = identifier) ;)) (expression_statement "pcVar7 = (code *)PTR__M_insert<true>_004c32d8;" (assignment_expression "pcVar7 = (code *)PTR__M_insert<true>_004c32d8" identifier = (binary_expression "(code *)PTR__M_insert<true>_004c32d8" (binary_expression "(code *)PTR__M_insert<true" (cast_expression "(code *)PTR__M_insert" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) < true) > identifier)) ;) (if_statement "if (local_40 == 0) {\n    pcVar7 = (code *)PTR__M_insert<false>_004c32d4;\n  }" if (parenthesized_expression "(local_40 == 0)" ( (binary_expression "local_40 == 0" identifier == number_literal) )) (compound_statement "{\n    pcVar7 = (code *)PTR__M_insert<false>_004c32d4;\n  }" { (expression_statement "pcVar7 = (code *)PTR__M_insert<false>_004c32d4;" (assignment_expression "pcVar7 = (code *)PTR__M_insert<false>_004c32d4" identifier = (binary_expression "(code *)PTR__M_insert<false>_004c32d4" (binary_expression "(code *)PTR__M_insert<false" (cast_expression "(code *)PTR__M_insert" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) < false) > identifier)) ;) })) (expression_statement "*(undefined1 ***)(puVar8 + 0x18) = local_60;" (assignment_expression "*(undefined1 ***)(puVar8 + 0x18) = local_60" (pointer_expression "*(undefined1 ***)(puVar8 + 0x18)" * (cast_expression "(undefined1 ***)(puVar8 + 0x18)" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar8 + 0x18)" ( (binary_expression "puVar8 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar8 + 0x14) = iVar4;" (assignment_expression "*(int *)(puVar8 + 0x14) = iVar4" (pointer_expression "*(int *)(puVar8 + 0x14)" * (cast_expression "(int *)(puVar8 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x14)" ( (binary_expression "puVar8 + 0x14" identifier + number_literal) )))) = identifier) ;) comment (expression_statement "*(int *)(puVar8 + 0x10) = param_6;" (assignment_expression "*(int *)(puVar8 + 0x10) = param_6" (pointer_expression "*(int *)(puVar8 + 0x10)" * (cast_expression "(int *)(puVar8 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x10)" ( (binary_expression "puVar8 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar7)(param_1,param_2,param_3,param_4);" (call_expression "(*pcVar7)(param_1,param_2,param_3,param_4)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(param_1,param_2,param_3,param_4)" ( identifier , identifier , identifier , identifier ))) ;) (if_statement "if (local_60[0] != auStack_58) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }" if (parenthesized_expression "(local_60[0] != auStack_58)" ( (binary_expression "local_60[0] != auStack_58" (subscript_expression "local_60[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 "()" ( ))) ;) })) (expression_statement "(*(code *)PTR__locale_004c22f0)(auStack_48);" (call_expression "(*(code *)PTR__locale_004c22f0)(auStack_48)" (parenthesized_expression "(*(code *)PTR__locale_004c22f0)" ( (pointer_expression "*(code *)PTR__locale_004c22f0" * (cast_expression "(code *)PTR__locale_004c22f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_48)" ( identifier ))) ;) (return_statement "return param_1;" return identifier ;) })))
(translation_unit "/* std::money_put<char, std::ostreambuf_iterator<char, std::char_traits<char> >\n   >::do_put(std::ostreambuf_iterator<char, std::char_traits<char> >, bool, std::ios_base&, char,\n   long double) const */\n\nundefined4\nstd::money_put<char,std::ostreambuf_iterator<char,std::char_traits<char>>>::do_put\n          (undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,byte param_5,\n          int param_6,char param_7,undefined4 param_8,undefined8 param_9)\n\n{\n  int iVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined1 *puVar6;\n  code *pcVar7;\n  undefined1 *puVar8;\n  undefined1 auStack_c8 [16];\n  undefined4 local_b8 [2];\n  undefined8 local_b0;\n  undefined1 auStack_a8 [64];\n  undefined1 *local_60 [2];\n  undefined1 auStack_58 [16];\n  undefined1 auStack_48 [8];\n  uint local_40;\n  int local_3c;\n  undefined1 *local_38;\n  undefined1 *local_34;\n  \n  local_40 = (uint)param_5;\n  local_3c = (int)param_7;\n  (*(code *)PTR_locale_004c2d24)(auStack_48,param_6 + 0x6c);\n                    /* try { // try from 003c327c to 003c3347 has its CatchHandler @ 003c34dc */\n  piVar3 = (int *)(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)(auStack_48);\n  puVar8 = auStack_c8;\n  puVar6 = auStack_a8;\n  local_60[0] = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();\n  puVar2 = PTR_UINT_004c12dc;\n  local_b8[0] = 0;\n  local_b0 = param_9;\n  iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,0x40,PTR_UINT_004c12dc + -0x398c)\n  ;\n  if (0x3f < iVar4) {\n    iVar1 = -(iVar4 + 8U & 0xfffffff8);\n    puVar8 = auStack_c8 + iVar1;\n    puVar6 = auStack_a8 + iVar1;\n    puVar5 = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();\n    *(undefined8 *)(auStack_a8 + iVar1 + -8) = param_9;\n    *(undefined4 *)((int)local_b8 + iVar1) = 0;\n    local_60[0] = puVar5;\n    iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c);\n  }\n  local_60[0] = auStack_58;\n  (*(code *)PTR__M_construct_004c32d0)(local_60,iVar4,0);\n  local_34 = puVar6 + iVar4;\n  local_38 = local_60[0];\n  if (*(char *)(piVar3 + 7) == '\x01') {\n    if (puVar6 + iVar4 != puVar6) {\n      (*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);\n    }\n    goto LAB_003c33a0;\n  }\n  if (*(char *)(piVar3 + 7) == '\0') {\n    (*(code *)PTR__M_widen_init_004c22c0)(piVar3);\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) goto LAB_003c3468;\n  }\n  else {\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) {\nLAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);\n      goto LAB_003c33a0;\n    }\n  }\n  if (puVar6 + iVar4 != puVar6) {\n    (*(code *)PTR_memcpy_004c5ba8)(local_38,puVar6,iVar4);\n  }\nLAB_003c33a0:\n  iVar4 = local_3c;\n  pcVar7 = (code *)PTR__M_insert<true>_004c32d8;\n  if (local_40 == 0) {\n    pcVar7 = (code *)PTR__M_insert<false>_004c32d4;\n  }\n  *(undefined1 ***)(puVar8 + 0x18) = local_60;\n  *(int *)(puVar8 + 0x14) = iVar4;\n                    /* try { // try from 003c33cc to 003c3477 has its CatchHandler @ 003c34a0 */\n  *(int *)(puVar8 + 0x10) = param_6;\n  (*pcVar7)(param_1,param_2,param_3,param_4);\n  if (local_60[0] != auStack_58) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  (*(code *)PTR__locale_004c22f0)(auStack_48);\n  return param_1;\n}\n\n" comment (declaration "undefined4\nstd::money_put<char,std::ostreambuf_iterator<char,std::char_traits<char>>>::do_put\n          (undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,byte param_5,\n          int param_6,char param_7,undefined4 param_8,undefined8 param_9)\n\n{\n  int iVar1;" type_identifier (ERROR "std::" identifier : :) identifier (ERROR "<char" < primitive_type) , (ERROR "std::" identifier : :) identifier (ERROR "<char" < primitive_type) , (ERROR "std::char_traits<char>>>::do_put\n          (undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,byte param_5,\n          int param_6,char param_7,undefined4 param_8,undefined8 param_9)\n\n{\n  int" identifier : : identifier < primitive_type >> > : : (function_declarator "do_put\n          (undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,byte param_5,\n          int param_6,char param_7,undefined4 param_8,undefined8 param_9)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,byte param_5,\n          int param_6,char param_7,undefined4 param_8,undefined8 param_9)" ( (parameter_declaration "undefined4 param_1" type_identifier 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 "byte param_5" type_identifier identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "char param_7" primitive_type identifier) , (parameter_declaration "undefined4 param_8" type_identifier identifier) , (parameter_declaration "undefined8 param_9" type_identifier identifier) ))) { primitive_type) identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined1 auStack_c8 [16];" type_identifier (array_declarator "auStack_c8 [16]" identifier [ number_literal ]) ;) (declaration "undefined4 local_b8 [2];" type_identifier (array_declarator "local_b8 [2]" identifier [ number_literal ]) ;) (declaration "undefined8 local_b0;" type_identifier identifier ;) (declaration "undefined1 auStack_a8 [64];" type_identifier (array_declarator "auStack_a8 [64]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_60 [2];" type_identifier (pointer_declarator "*local_60 [2]" * (array_declarator "local_60 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 auStack_58 [16];" type_identifier (array_declarator "auStack_58 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_48 [8];" type_identifier (array_declarator "auStack_48 [8]" identifier [ number_literal ]) ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "undefined1 *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "undefined1 *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (expression_statement "local_40 = (uint)param_5;" (assignment_expression "local_40 = (uint)param_5" identifier = (cast_expression "(uint)param_5" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_3c = (int)param_7;" (assignment_expression "local_3c = (int)param_7" identifier = (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "(*(code *)PTR_locale_004c2d24)(auStack_48,param_6 + 0x6c);" (call_expression "(*(code *)PTR_locale_004c2d24)(auStack_48,param_6 + 0x6c)" (parenthesized_expression "(*(code *)PTR_locale_004c2d24)" ( (pointer_expression "*(code *)PTR_locale_004c2d24" * (cast_expression "(code *)PTR_locale_004c2d24" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_48,param_6 + 0x6c)" ( identifier , (binary_expression "param_6 + 0x6c" identifier + number_literal) ))) ;) comment (expression_statement "piVar3 = (int *)(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)(auStack_48);" (assignment_expression "piVar3 = (int *)(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)(auStack_48)" identifier = (cast_expression "(int *)(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)(auStack_48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)(auStack_48)" (parenthesized_expression "(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)" ( (binary_expression "*(code *)PTR_use_facet<std_ctype<char>>_004c2c84" (binary_expression "*(code *)PTR_use_facet<std_ctype" (pointer_expression "*(code *)PTR_use_facet" * (cast_expression "(code *)PTR_use_facet" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) < identifier) < (binary_expression "char>>_004c2c84" identifier >> identifier)) )) (argument_list "(auStack_48)" ( identifier ))))) ;) (expression_statement "puVar8 = auStack_c8;" (assignment_expression "puVar8 = auStack_c8" identifier = identifier) ;) (expression_statement "puVar6 = auStack_a8;" (assignment_expression "puVar6 = auStack_a8" identifier = identifier) ;) (expression_statement "local_60[0] = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();" (assignment_expression "local_60[0] = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)()" (subscript_expression "local_60[0]" identifier [ number_literal ]) = (cast_expression "(undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)()" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR__S_get_c_locale_004c13c0)()" (parenthesized_expression "(*(code *)PTR__S_get_c_locale_004c13c0)" ( (pointer_expression "*(code *)PTR__S_get_c_locale_004c13c0" * (cast_expression "(code *)PTR__S_get_c_locale_004c13c0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (expression_statement "puVar2 = PTR_UINT_004c12dc;" (assignment_expression "puVar2 = PTR_UINT_004c12dc" identifier = identifier) ;) (expression_statement "local_b8[0] = 0;" (assignment_expression "local_b8[0] = 0" (subscript_expression "local_b8[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_b0 = param_9;" (assignment_expression "local_b0 = param_9" identifier = identifier) ;) (expression_statement "iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,0x40,PTR_UINT_004c12dc + -0x398c)\n  ;" (assignment_expression "iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,0x40,PTR_UINT_004c12dc + -0x398c)" identifier = (call_expression "(*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,0x40,PTR_UINT_004c12dc + -0x398c)" (parenthesized_expression "(*(code *)PTR___convert_from_v_004c2d28)" ( (pointer_expression "*(code *)PTR___convert_from_v_004c2d28" * (cast_expression "(code *)PTR___convert_from_v_004c2d28" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_60,puVar6,0x40,PTR_UINT_004c12dc + -0x398c)" ( identifier , identifier , number_literal , (binary_expression "PTR_UINT_004c12dc + -0x398c" identifier + number_literal) )))) ;) (if_statement "if (0x3f < iVar4) {\n    iVar1 = -(iVar4 + 8U & 0xfffffff8);\n    puVar8 = auStack_c8 + iVar1;\n    puVar6 = auStack_a8 + iVar1;\n    puVar5 = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();\n    *(undefined8 *)(auStack_a8 + iVar1 + -8) = param_9;\n    *(undefined4 *)((int)local_b8 + iVar1) = 0;\n    local_60[0] = puVar5;\n    iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c);\n  }" if (parenthesized_expression "(0x3f < iVar4)" ( (binary_expression "0x3f < iVar4" number_literal < identifier) )) (compound_statement "{\n    iVar1 = -(iVar4 + 8U & 0xfffffff8);\n    puVar8 = auStack_c8 + iVar1;\n    puVar6 = auStack_a8 + iVar1;\n    puVar5 = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();\n    *(undefined8 *)(auStack_a8 + iVar1 + -8) = param_9;\n    *(undefined4 *)((int)local_b8 + iVar1) = 0;\n    local_60[0] = puVar5;\n    iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c);\n  }" { (expression_statement "iVar1 = -(iVar4 + 8U & 0xfffffff8);" (assignment_expression "iVar1 = -(iVar4 + 8U & 0xfffffff8)" identifier = (unary_expression "-(iVar4 + 8U & 0xfffffff8)" - (parenthesized_expression "(iVar4 + 8U & 0xfffffff8)" ( (binary_expression "iVar4 + 8U & 0xfffffff8" (binary_expression "iVar4 + 8U" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar8 = auStack_c8 + iVar1;" (assignment_expression "puVar8 = auStack_c8 + iVar1" identifier = (binary_expression "auStack_c8 + iVar1" identifier + identifier)) ;) (expression_statement "puVar6 = auStack_a8 + iVar1;" (assignment_expression "puVar6 = auStack_a8 + iVar1" identifier = (binary_expression "auStack_a8 + iVar1" identifier + identifier)) ;) (expression_statement "puVar5 = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();" (assignment_expression "puVar5 = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)()" identifier = (cast_expression "(undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)()" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR__S_get_c_locale_004c13c0)()" (parenthesized_expression "(*(code *)PTR__S_get_c_locale_004c13c0)" ( (pointer_expression "*(code *)PTR__S_get_c_locale_004c13c0" * (cast_expression "(code *)PTR__S_get_c_locale_004c13c0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (expression_statement "*(undefined8 *)(auStack_a8 + iVar1 + -8) = param_9;" (assignment_expression "*(undefined8 *)(auStack_a8 + iVar1 + -8) = param_9" (pointer_expression "*(undefined8 *)(auStack_a8 + iVar1 + -8)" * (cast_expression "(undefined8 *)(auStack_a8 + iVar1 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_a8 + iVar1 + -8)" ( (binary_expression "auStack_a8 + iVar1 + -8" (binary_expression "auStack_a8 + iVar1" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)local_b8 + iVar1) = 0;" (assignment_expression "*(undefined4 *)((int)local_b8 + iVar1) = 0" (pointer_expression "*(undefined4 *)((int)local_b8 + iVar1)" * (cast_expression "(undefined4 *)((int)local_b8 + iVar1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_b8 + iVar1)" ( (binary_expression "(int)local_b8 + iVar1" (cast_expression "(int)local_b8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "local_60[0] = puVar5;" (assignment_expression "local_60[0] = puVar5" (subscript_expression "local_60[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c);" (assignment_expression "iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c)" identifier = (call_expression "(*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c)" (parenthesized_expression "(*(code *)PTR___convert_from_v_004c2d28)" ( (pointer_expression "*(code *)PTR___convert_from_v_004c2d28" * (cast_expression "(code *)PTR___convert_from_v_004c2d28" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c)" ( identifier , identifier , (binary_expression "iVar4 + 1" identifier + number_literal) , (binary_expression "puVar2 + -0x398c" identifier + number_literal) )))) ;) })) (expression_statement "local_60[0] = auStack_58;" (assignment_expression "local_60[0] = auStack_58" (subscript_expression "local_60[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "(*(code *)PTR__M_construct_004c32d0)(local_60,iVar4,0);" (call_expression "(*(code *)PTR__M_construct_004c32d0)(local_60,iVar4,0)" (parenthesized_expression "(*(code *)PTR__M_construct_004c32d0)" ( (pointer_expression "*(code *)PTR__M_construct_004c32d0" * (cast_expression "(code *)PTR__M_construct_004c32d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_60,iVar4,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "local_34 = puVar6 + iVar4;" (assignment_expression "local_34 = puVar6 + iVar4" identifier = (binary_expression "puVar6 + iVar4" identifier + identifier)) ;) (expression_statement "local_38 = local_60[0];" (assignment_expression "local_38 = local_60[0]" identifier = (subscript_expression "local_60[0]" identifier [ number_literal ])) ;) (if_statement "if (*(char *)(piVar3 + 7) == '\x01') {\n    if (puVar6 + iVar4 != puVar6) {\n      (*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);\n    }\n    goto LAB_003c33a0;\n  }" if (parenthesized_expression "(*(char *)(piVar3 + 7) == '\x01')" ( (binary_expression "*(char *)(piVar3 + 7) == '\x01'" (pointer_expression "*(char *)(piVar3 + 7)" * (cast_expression "(char *)(piVar3 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 7)" ( (binary_expression "piVar3 + 7" identifier + number_literal) )))) == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n    if (puVar6 + iVar4 != puVar6) {\n      (*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);\n    }\n    goto LAB_003c33a0;\n  }" { (if_statement "if (puVar6 + iVar4 != puVar6) {\n      (*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);\n    }" if (parenthesized_expression "(puVar6 + iVar4 != puVar6)" ( (binary_expression "puVar6 + iVar4 != puVar6" (binary_expression "puVar6 + iVar4" identifier + identifier) != identifier) )) (compound_statement "{\n      (*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);\n    }" { (expression_statement "(*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);" (call_expression "(*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4)" (parenthesized_expression "(*(code *)PTR_memcpy_004c5ba8)" ( (pointer_expression "*(code *)PTR_memcpy_004c5ba8" * (cast_expression "(code *)PTR_memcpy_004c5ba8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_60[0],puVar6,iVar4)" ( (subscript_expression "local_60[0]" identifier [ number_literal ]) , identifier , identifier ))) ;) })) (goto_statement "goto LAB_003c33a0;" goto statement_identifier ;) })) (if_statement "if (*(char *)(piVar3 + 7) == '\0') {\n    (*(code *)PTR__M_widen_init_004c22c0)(piVar3);\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) goto LAB_003c3468;\n  }\n  else {\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) {\nLAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);\n      goto LAB_003c33a0;\n    }\n  }" if (parenthesized_expression "(*(char *)(piVar3 + 7) == '\0')" ( (binary_expression "*(char *)(piVar3 + 7) == '\0'" (pointer_expression "*(char *)(piVar3 + 7)" * (cast_expression "(char *)(piVar3 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 7)" ( (binary_expression "piVar3 + 7" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    (*(code *)PTR__M_widen_init_004c22c0)(piVar3);\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) goto LAB_003c3468;\n  }" { (expression_statement "(*(code *)PTR__M_widen_init_004c22c0)(piVar3);" (call_expression "(*(code *)PTR__M_widen_init_004c22c0)(piVar3)" (parenthesized_expression "(*(code *)PTR__M_widen_init_004c22c0)" ( (pointer_expression "*(code *)PTR__M_widen_init_004c22c0" * (cast_expression "(code *)PTR__M_widen_init_004c22c0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar3)" ( identifier ))) ;) (expression_statement "pcVar7 = *(code **)(*piVar3 + 0x1c);" (assignment_expression "pcVar7 = *(code **)(*piVar3 + 0x1c)" identifier = (pointer_expression "*(code **)(*piVar3 + 0x1c)" * (cast_expression "(code **)(*piVar3 + 0x1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar3 + 0x1c)" ( (binary_expression "*piVar3 + 0x1c" (pointer_expression "*piVar3" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar7 != (code *)PTR_do_widen_004c2bf0) goto LAB_003c3468;" if (parenthesized_expression "(pcVar7 != (code *)PTR_do_widen_004c2bf0)" ( (binary_expression "pcVar7 != (code *)PTR_do_widen_004c2bf0" identifier != (cast_expression "(code *)PTR_do_widen_004c2bf0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (goto_statement "goto LAB_003c3468;" goto statement_identifier ;)) }) (else_clause "else {\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) {\nLAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);\n      goto LAB_003c33a0;\n    }\n  }" else (compound_statement "{\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) {\nLAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);\n      goto LAB_003c33a0;\n    }\n  }" { (expression_statement "pcVar7 = *(code **)(*piVar3 + 0x1c);" (assignment_expression "pcVar7 = *(code **)(*piVar3 + 0x1c)" identifier = (pointer_expression "*(code **)(*piVar3 + 0x1c)" * (cast_expression "(code **)(*piVar3 + 0x1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar3 + 0x1c)" ( (binary_expression "*piVar3 + 0x1c" (pointer_expression "*piVar3" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar7 != (code *)PTR_do_widen_004c2bf0) {\nLAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);\n      goto LAB_003c33a0;\n    }" if (parenthesized_expression "(pcVar7 != (code *)PTR_do_widen_004c2bf0)" ( (binary_expression "pcVar7 != (code *)PTR_do_widen_004c2bf0" identifier != (cast_expression "(code *)PTR_do_widen_004c2bf0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\nLAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);\n      goto LAB_003c33a0;\n    }" { (labeled_statement "LAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);" statement_identifier : (expression_statement "(*pcVar7)(piVar3,puVar6,local_34,local_38);" (call_expression "(*pcVar7)(piVar3,puVar6,local_34,local_38)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(piVar3,puVar6,local_34,local_38)" ( identifier , identifier , identifier , identifier ))) ;)) (goto_statement "goto LAB_003c33a0;" goto statement_identifier ;) })) }))) (if_statement "if (puVar6 + iVar4 != puVar6) {\n    (*(code *)PTR_memcpy_004c5ba8)(local_38,puVar6,iVar4);\n  }" if (parenthesized_expression "(puVar6 + iVar4 != puVar6)" ( (binary_expression "puVar6 + iVar4 != puVar6" (binary_expression "puVar6 + iVar4" identifier + identifier) != identifier) )) (compound_statement "{\n    (*(code *)PTR_memcpy_004c5ba8)(local_38,puVar6,iVar4);\n  }" { (expression_statement "(*(code *)PTR_memcpy_004c5ba8)(local_38,puVar6,iVar4);" (call_expression "(*(code *)PTR_memcpy_004c5ba8)(local_38,puVar6,iVar4)" (parenthesized_expression "(*(code *)PTR_memcpy_004c5ba8)" ( (pointer_expression "*(code *)PTR_memcpy_004c5ba8" * (cast_expression "(code *)PTR_memcpy_004c5ba8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_38,puVar6,iVar4)" ( identifier , identifier , identifier ))) ;) })) (labeled_statement "LAB_003c33a0:\n  iVar4 = local_3c;" statement_identifier : (expression_statement "iVar4 = local_3c;" (assignment_expression "iVar4 = local_3c" identifier = identifier) ;)) (expression_statement "pcVar7 = (code *)PTR__M_insert<true>_004c32d8;" (assignment_expression "pcVar7 = (code *)PTR__M_insert<true>_004c32d8" identifier = (binary_expression "(code *)PTR__M_insert<true>_004c32d8" (binary_expression "(code *)PTR__M_insert<true" (cast_expression "(code *)PTR__M_insert" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) < true) > identifier)) ;) (if_statement "if (local_40 == 0) {\n    pcVar7 = (code *)PTR__M_insert<false>_004c32d4;\n  }" if (parenthesized_expression "(local_40 == 0)" ( (binary_expression "local_40 == 0" identifier == number_literal) )) (compound_statement "{\n    pcVar7 = (code *)PTR__M_insert<false>_004c32d4;\n  }" { (expression_statement "pcVar7 = (code *)PTR__M_insert<false>_004c32d4;" (assignment_expression "pcVar7 = (code *)PTR__M_insert<false>_004c32d4" identifier = (binary_expression "(code *)PTR__M_insert<false>_004c32d4" (binary_expression "(code *)PTR__M_insert<false" (cast_expression "(code *)PTR__M_insert" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) < false) > identifier)) ;) })) (expression_statement "*(undefined1 ***)(puVar8 + 0x18) = local_60;" (assignment_expression "*(undefined1 ***)(puVar8 + 0x18) = local_60" (pointer_expression "*(undefined1 ***)(puVar8 + 0x18)" * (cast_expression "(undefined1 ***)(puVar8 + 0x18)" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar8 + 0x18)" ( (binary_expression "puVar8 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar8 + 0x14) = iVar4;" (assignment_expression "*(int *)(puVar8 + 0x14) = iVar4" (pointer_expression "*(int *)(puVar8 + 0x14)" * (cast_expression "(int *)(puVar8 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x14)" ( (binary_expression "puVar8 + 0x14" identifier + number_literal) )))) = identifier) ;) comment (expression_statement "*(int *)(puVar8 + 0x10) = param_6;" (assignment_expression "*(int *)(puVar8 + 0x10) = param_6" (pointer_expression "*(int *)(puVar8 + 0x10)" * (cast_expression "(int *)(puVar8 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x10)" ( (binary_expression "puVar8 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar7)(param_1,param_2,param_3,param_4);" (call_expression "(*pcVar7)(param_1,param_2,param_3,param_4)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(param_1,param_2,param_3,param_4)" ( identifier , identifier , identifier , identifier ))) ;) (if_statement "if (local_60[0] != auStack_58) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }" if (parenthesized_expression "(local_60[0] != auStack_58)" ( (binary_expression "local_60[0] != auStack_58" (subscript_expression "local_60[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 "()" ( ))) ;) })) (expression_statement "(*(code *)PTR__locale_004c22f0)(auStack_48);" (call_expression "(*(code *)PTR__locale_004c22f0)(auStack_48)" (parenthesized_expression "(*(code *)PTR__locale_004c22f0)" ( (pointer_expression "*(code *)PTR__locale_004c22f0" * (cast_expression "(code *)PTR__locale_004c22f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_48)" ( identifier ))) ;) (return_statement "return param_1;" return identifier ;) (ERROR "}" }))
(translation_unit "undefined4\nFUN_003c31f4(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            byte param_5,int param_6,char param_7,undefined4 param_8,undefined8 param_9)\n\n{\n  int iVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined1 *puVar6;\n  code *pcVar7;\n  undefined1 *puVar8;\n  undefined1 auStack_c8 [16];\n  undefined4 local_b8 [2];\n  undefined8 local_b0;\n  undefined1 auStack_a8 [64];\n  undefined1 *local_60 [2];\n  undefined1 auStack_58 [16];\n  undefined1 auStack_48 [8];\n  uint local_40;\n  int local_3c;\n  undefined1 *local_38;\n  undefined1 *local_34;\n  \n  local_40 = (uint)param_5;\n  local_3c = (int)param_7;\n  (*(code *)PTR_locale_004c2d24)(auStack_48,param_6 + 0x6c);\n                    \n  piVar3 = (int *)(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)(auStack_48);\n  puVar8 = auStack_c8;\n  puVar6 = auStack_a8;\n  local_60[0] = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();\n  puVar2 = PTR_UINT_004c12dc;\n  local_b8[0] = 0;\n  local_b0 = param_9;\n  iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,0x40,PTR_UINT_004c12dc + -0x398c)\n  ;\n  if (0x3f < iVar4) {\n    iVar1 = -(iVar4 + 8U & 0xfffffff8);\n    puVar8 = auStack_c8 + iVar1;\n    puVar6 = auStack_a8 + iVar1;\n    puVar5 = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();\n    *(undefined8 *)(auStack_a8 + iVar1 + -8) = param_9;\n    *(undefined4 *)((int)local_b8 + iVar1) = 0;\n    local_60[0] = puVar5;\n    iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c);\n  }\n  local_60[0] = auStack_58;\n  (*(code *)PTR__M_construct_004c32d0)(local_60,iVar4,0);\n  local_34 = puVar6 + iVar4;\n  local_38 = local_60[0];\n  if (*(char *)(piVar3 + 7) == '\x01') {\n    if (puVar6 + iVar4 != puVar6) {\n      (*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);\n    }\n    goto LAB_003c33a0;\n  }\n  if (*(char *)(piVar3 + 7) == '\0') {\n    (*(code *)PTR__M_widen_init_004c22c0)(piVar3);\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) goto LAB_003c3468;\n  }\n  else {\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) {\nLAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);\n      goto LAB_003c33a0;\n    }\n  }\n  if (puVar6 + iVar4 != puVar6) {\n    (*(code *)PTR_memcpy_004c5ba8)(local_38,puVar6,iVar4);\n  }\nLAB_003c33a0:\n  iVar4 = local_3c;\n  pcVar7 = (code *)PTR__M_insert<true>_004c32d8;\n  if (local_40 == 0) {\n    pcVar7 = (code *)PTR__M_insert<false>_004c32d4;\n  }\n  *(undefined1 ***)(puVar8 + 0x18) = local_60;\n  *(int *)(puVar8 + 0x14) = iVar4;\n                    \n  *(int *)(puVar8 + 0x10) = param_6;\n  (*pcVar7)(param_1,param_2,param_3,param_4);\n  if (local_60[0] != auStack_58) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  (*(code *)PTR__locale_004c22f0)(auStack_48);\n  return param_1;\n}\n\n" (function_definition "undefined4\nFUN_003c31f4(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            byte param_5,int param_6,char param_7,undefined4 param_8,undefined8 param_9)\n\n{\n  int iVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined1 *puVar6;\n  code *pcVar7;\n  undefined1 *puVar8;\n  undefined1 auStack_c8 [16];\n  undefined4 local_b8 [2];\n  undefined8 local_b0;\n  undefined1 auStack_a8 [64];\n  undefined1 *local_60 [2];\n  undefined1 auStack_58 [16];\n  undefined1 auStack_48 [8];\n  uint local_40;\n  int local_3c;\n  undefined1 *local_38;\n  undefined1 *local_34;\n  \n  local_40 = (uint)param_5;\n  local_3c = (int)param_7;\n  (*(code *)PTR_locale_004c2d24)(auStack_48,param_6 + 0x6c);\n                    \n  piVar3 = (int *)(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)(auStack_48);\n  puVar8 = auStack_c8;\n  puVar6 = auStack_a8;\n  local_60[0] = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();\n  puVar2 = PTR_UINT_004c12dc;\n  local_b8[0] = 0;\n  local_b0 = param_9;\n  iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,0x40,PTR_UINT_004c12dc + -0x398c)\n  ;\n  if (0x3f < iVar4) {\n    iVar1 = -(iVar4 + 8U & 0xfffffff8);\n    puVar8 = auStack_c8 + iVar1;\n    puVar6 = auStack_a8 + iVar1;\n    puVar5 = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();\n    *(undefined8 *)(auStack_a8 + iVar1 + -8) = param_9;\n    *(undefined4 *)((int)local_b8 + iVar1) = 0;\n    local_60[0] = puVar5;\n    iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c);\n  }\n  local_60[0] = auStack_58;\n  (*(code *)PTR__M_construct_004c32d0)(local_60,iVar4,0);\n  local_34 = puVar6 + iVar4;\n  local_38 = local_60[0];\n  if (*(char *)(piVar3 + 7) == '\x01') {\n    if (puVar6 + iVar4 != puVar6) {\n      (*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);\n    }\n    goto LAB_003c33a0;\n  }\n  if (*(char *)(piVar3 + 7) == '\0') {\n    (*(code *)PTR__M_widen_init_004c22c0)(piVar3);\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) goto LAB_003c3468;\n  }\n  else {\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) {\nLAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);\n      goto LAB_003c33a0;\n    }\n  }\n  if (puVar6 + iVar4 != puVar6) {\n    (*(code *)PTR_memcpy_004c5ba8)(local_38,puVar6,iVar4);\n  }\nLAB_003c33a0:\n  iVar4 = local_3c;\n  pcVar7 = (code *)PTR__M_insert<true>_004c32d8;\n  if (local_40 == 0) {\n    pcVar7 = (code *)PTR__M_insert<false>_004c32d4;\n  }\n  *(undefined1 ***)(puVar8 + 0x18) = local_60;\n  *(int *)(puVar8 + 0x14) = iVar4;\n                    \n  *(int *)(puVar8 + 0x10) = param_6;\n  (*pcVar7)(param_1,param_2,param_3,param_4);\n  if (local_60[0] != auStack_58) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  (*(code *)PTR__locale_004c22f0)(auStack_48);\n  return param_1;\n}" type_identifier (function_declarator "FUN_003c31f4(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            byte param_5,int param_6,char param_7,undefined4 param_8,undefined8 param_9)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            byte param_5,int param_6,char param_7,undefined4 param_8,undefined8 param_9)" ( (parameter_declaration "undefined4 param_1" type_identifier 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 "byte param_5" type_identifier identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "char param_7" primitive_type identifier) , (parameter_declaration "undefined4 param_8" type_identifier identifier) , (parameter_declaration "undefined8 param_9" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined1 *puVar6;\n  code *pcVar7;\n  undefined1 *puVar8;\n  undefined1 auStack_c8 [16];\n  undefined4 local_b8 [2];\n  undefined8 local_b0;\n  undefined1 auStack_a8 [64];\n  undefined1 *local_60 [2];\n  undefined1 auStack_58 [16];\n  undefined1 auStack_48 [8];\n  uint local_40;\n  int local_3c;\n  undefined1 *local_38;\n  undefined1 *local_34;\n  \n  local_40 = (uint)param_5;\n  local_3c = (int)param_7;\n  (*(code *)PTR_locale_004c2d24)(auStack_48,param_6 + 0x6c);\n                    \n  piVar3 = (int *)(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)(auStack_48);\n  puVar8 = auStack_c8;\n  puVar6 = auStack_a8;\n  local_60[0] = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();\n  puVar2 = PTR_UINT_004c12dc;\n  local_b8[0] = 0;\n  local_b0 = param_9;\n  iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,0x40,PTR_UINT_004c12dc + -0x398c)\n  ;\n  if (0x3f < iVar4) {\n    iVar1 = -(iVar4 + 8U & 0xfffffff8);\n    puVar8 = auStack_c8 + iVar1;\n    puVar6 = auStack_a8 + iVar1;\n    puVar5 = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();\n    *(undefined8 *)(auStack_a8 + iVar1 + -8) = param_9;\n    *(undefined4 *)((int)local_b8 + iVar1) = 0;\n    local_60[0] = puVar5;\n    iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c);\n  }\n  local_60[0] = auStack_58;\n  (*(code *)PTR__M_construct_004c32d0)(local_60,iVar4,0);\n  local_34 = puVar6 + iVar4;\n  local_38 = local_60[0];\n  if (*(char *)(piVar3 + 7) == '\x01') {\n    if (puVar6 + iVar4 != puVar6) {\n      (*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);\n    }\n    goto LAB_003c33a0;\n  }\n  if (*(char *)(piVar3 + 7) == '\0') {\n    (*(code *)PTR__M_widen_init_004c22c0)(piVar3);\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) goto LAB_003c3468;\n  }\n  else {\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) {\nLAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);\n      goto LAB_003c33a0;\n    }\n  }\n  if (puVar6 + iVar4 != puVar6) {\n    (*(code *)PTR_memcpy_004c5ba8)(local_38,puVar6,iVar4);\n  }\nLAB_003c33a0:\n  iVar4 = local_3c;\n  pcVar7 = (code *)PTR__M_insert<true>_004c32d8;\n  if (local_40 == 0) {\n    pcVar7 = (code *)PTR__M_insert<false>_004c32d4;\n  }\n  *(undefined1 ***)(puVar8 + 0x18) = local_60;\n  *(int *)(puVar8 + 0x14) = iVar4;\n                    \n  *(int *)(puVar8 + 0x10) = param_6;\n  (*pcVar7)(param_1,param_2,param_3,param_4);\n  if (local_60[0] != auStack_58) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  (*(code *)PTR__locale_004c22f0)(auStack_48);\n  return param_1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined1 auStack_c8 [16];" type_identifier (array_declarator "auStack_c8 [16]" identifier [ number_literal ]) ;) (declaration "undefined4 local_b8 [2];" type_identifier (array_declarator "local_b8 [2]" identifier [ number_literal ]) ;) (declaration "undefined8 local_b0;" type_identifier identifier ;) (declaration "undefined1 auStack_a8 [64];" type_identifier (array_declarator "auStack_a8 [64]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_60 [2];" type_identifier (pointer_declarator "*local_60 [2]" * (array_declarator "local_60 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 auStack_58 [16];" type_identifier (array_declarator "auStack_58 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_48 [8];" type_identifier (array_declarator "auStack_48 [8]" identifier [ number_literal ]) ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "undefined1 *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "undefined1 *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (expression_statement "local_40 = (uint)param_5;" (assignment_expression "local_40 = (uint)param_5" identifier = (cast_expression "(uint)param_5" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_3c = (int)param_7;" (assignment_expression "local_3c = (int)param_7" identifier = (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "(*(code *)PTR_locale_004c2d24)(auStack_48,param_6 + 0x6c);" (call_expression "(*(code *)PTR_locale_004c2d24)(auStack_48,param_6 + 0x6c)" (parenthesized_expression "(*(code *)PTR_locale_004c2d24)" ( (pointer_expression "*(code *)PTR_locale_004c2d24" * (cast_expression "(code *)PTR_locale_004c2d24" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_48,param_6 + 0x6c)" ( identifier , (binary_expression "param_6 + 0x6c" identifier + number_literal) ))) ;) (expression_statement "piVar3 = (int *)(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)(auStack_48);" (assignment_expression "piVar3 = (int *)(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)(auStack_48)" identifier = (cast_expression "(int *)(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)(auStack_48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)(auStack_48)" (parenthesized_expression "(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)" ( (binary_expression "*(code *)PTR_use_facet<std_ctype<char>>_004c2c84" (binary_expression "*(code *)PTR_use_facet<std_ctype" (pointer_expression "*(code *)PTR_use_facet" * (cast_expression "(code *)PTR_use_facet" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) < identifier) < (binary_expression "char>>_004c2c84" identifier >> identifier)) )) (argument_list "(auStack_48)" ( identifier ))))) ;) (expression_statement "puVar8 = auStack_c8;" (assignment_expression "puVar8 = auStack_c8" identifier = identifier) ;) (expression_statement "puVar6 = auStack_a8;" (assignment_expression "puVar6 = auStack_a8" identifier = identifier) ;) (expression_statement "local_60[0] = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();" (assignment_expression "local_60[0] = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)()" (subscript_expression "local_60[0]" identifier [ number_literal ]) = (cast_expression "(undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)()" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR__S_get_c_locale_004c13c0)()" (parenthesized_expression "(*(code *)PTR__S_get_c_locale_004c13c0)" ( (pointer_expression "*(code *)PTR__S_get_c_locale_004c13c0" * (cast_expression "(code *)PTR__S_get_c_locale_004c13c0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (expression_statement "puVar2 = PTR_UINT_004c12dc;" (assignment_expression "puVar2 = PTR_UINT_004c12dc" identifier = identifier) ;) (expression_statement "local_b8[0] = 0;" (assignment_expression "local_b8[0] = 0" (subscript_expression "local_b8[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_b0 = param_9;" (assignment_expression "local_b0 = param_9" identifier = identifier) ;) (expression_statement "iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,0x40,PTR_UINT_004c12dc + -0x398c)\n  ;" (assignment_expression "iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,0x40,PTR_UINT_004c12dc + -0x398c)" identifier = (call_expression "(*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,0x40,PTR_UINT_004c12dc + -0x398c)" (parenthesized_expression "(*(code *)PTR___convert_from_v_004c2d28)" ( (pointer_expression "*(code *)PTR___convert_from_v_004c2d28" * (cast_expression "(code *)PTR___convert_from_v_004c2d28" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_60,puVar6,0x40,PTR_UINT_004c12dc + -0x398c)" ( identifier , identifier , number_literal , (binary_expression "PTR_UINT_004c12dc + -0x398c" identifier + number_literal) )))) ;) (if_statement "if (0x3f < iVar4) {\n    iVar1 = -(iVar4 + 8U & 0xfffffff8);\n    puVar8 = auStack_c8 + iVar1;\n    puVar6 = auStack_a8 + iVar1;\n    puVar5 = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();\n    *(undefined8 *)(auStack_a8 + iVar1 + -8) = param_9;\n    *(undefined4 *)((int)local_b8 + iVar1) = 0;\n    local_60[0] = puVar5;\n    iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c);\n  }" if (parenthesized_expression "(0x3f < iVar4)" ( (binary_expression "0x3f < iVar4" number_literal < identifier) )) (compound_statement "{\n    iVar1 = -(iVar4 + 8U & 0xfffffff8);\n    puVar8 = auStack_c8 + iVar1;\n    puVar6 = auStack_a8 + iVar1;\n    puVar5 = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();\n    *(undefined8 *)(auStack_a8 + iVar1 + -8) = param_9;\n    *(undefined4 *)((int)local_b8 + iVar1) = 0;\n    local_60[0] = puVar5;\n    iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c);\n  }" { (expression_statement "iVar1 = -(iVar4 + 8U & 0xfffffff8);" (assignment_expression "iVar1 = -(iVar4 + 8U & 0xfffffff8)" identifier = (unary_expression "-(iVar4 + 8U & 0xfffffff8)" - (parenthesized_expression "(iVar4 + 8U & 0xfffffff8)" ( (binary_expression "iVar4 + 8U & 0xfffffff8" (binary_expression "iVar4 + 8U" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar8 = auStack_c8 + iVar1;" (assignment_expression "puVar8 = auStack_c8 + iVar1" identifier = (binary_expression "auStack_c8 + iVar1" identifier + identifier)) ;) (expression_statement "puVar6 = auStack_a8 + iVar1;" (assignment_expression "puVar6 = auStack_a8 + iVar1" identifier = (binary_expression "auStack_a8 + iVar1" identifier + identifier)) ;) (expression_statement "puVar5 = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();" (assignment_expression "puVar5 = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)()" identifier = (cast_expression "(undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)()" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR__S_get_c_locale_004c13c0)()" (parenthesized_expression "(*(code *)PTR__S_get_c_locale_004c13c0)" ( (pointer_expression "*(code *)PTR__S_get_c_locale_004c13c0" * (cast_expression "(code *)PTR__S_get_c_locale_004c13c0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (expression_statement "*(undefined8 *)(auStack_a8 + iVar1 + -8) = param_9;" (assignment_expression "*(undefined8 *)(auStack_a8 + iVar1 + -8) = param_9" (pointer_expression "*(undefined8 *)(auStack_a8 + iVar1 + -8)" * (cast_expression "(undefined8 *)(auStack_a8 + iVar1 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_a8 + iVar1 + -8)" ( (binary_expression "auStack_a8 + iVar1 + -8" (binary_expression "auStack_a8 + iVar1" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)local_b8 + iVar1) = 0;" (assignment_expression "*(undefined4 *)((int)local_b8 + iVar1) = 0" (pointer_expression "*(undefined4 *)((int)local_b8 + iVar1)" * (cast_expression "(undefined4 *)((int)local_b8 + iVar1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_b8 + iVar1)" ( (binary_expression "(int)local_b8 + iVar1" (cast_expression "(int)local_b8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "local_60[0] = puVar5;" (assignment_expression "local_60[0] = puVar5" (subscript_expression "local_60[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c);" (assignment_expression "iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c)" identifier = (call_expression "(*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c)" (parenthesized_expression "(*(code *)PTR___convert_from_v_004c2d28)" ( (pointer_expression "*(code *)PTR___convert_from_v_004c2d28" * (cast_expression "(code *)PTR___convert_from_v_004c2d28" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c)" ( identifier , identifier , (binary_expression "iVar4 + 1" identifier + number_literal) , (binary_expression "puVar2 + -0x398c" identifier + number_literal) )))) ;) })) (expression_statement "local_60[0] = auStack_58;" (assignment_expression "local_60[0] = auStack_58" (subscript_expression "local_60[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "(*(code *)PTR__M_construct_004c32d0)(local_60,iVar4,0);" (call_expression "(*(code *)PTR__M_construct_004c32d0)(local_60,iVar4,0)" (parenthesized_expression "(*(code *)PTR__M_construct_004c32d0)" ( (pointer_expression "*(code *)PTR__M_construct_004c32d0" * (cast_expression "(code *)PTR__M_construct_004c32d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_60,iVar4,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "local_34 = puVar6 + iVar4;" (assignment_expression "local_34 = puVar6 + iVar4" identifier = (binary_expression "puVar6 + iVar4" identifier + identifier)) ;) (expression_statement "local_38 = local_60[0];" (assignment_expression "local_38 = local_60[0]" identifier = (subscript_expression "local_60[0]" identifier [ number_literal ])) ;) (if_statement "if (*(char *)(piVar3 + 7) == '\x01') {\n    if (puVar6 + iVar4 != puVar6) {\n      (*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);\n    }\n    goto LAB_003c33a0;\n  }" if (parenthesized_expression "(*(char *)(piVar3 + 7) == '\x01')" ( (binary_expression "*(char *)(piVar3 + 7) == '\x01'" (pointer_expression "*(char *)(piVar3 + 7)" * (cast_expression "(char *)(piVar3 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 7)" ( (binary_expression "piVar3 + 7" identifier + number_literal) )))) == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n    if (puVar6 + iVar4 != puVar6) {\n      (*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);\n    }\n    goto LAB_003c33a0;\n  }" { (if_statement "if (puVar6 + iVar4 != puVar6) {\n      (*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);\n    }" if (parenthesized_expression "(puVar6 + iVar4 != puVar6)" ( (binary_expression "puVar6 + iVar4 != puVar6" (binary_expression "puVar6 + iVar4" identifier + identifier) != identifier) )) (compound_statement "{\n      (*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);\n    }" { (expression_statement "(*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);" (call_expression "(*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4)" (parenthesized_expression "(*(code *)PTR_memcpy_004c5ba8)" ( (pointer_expression "*(code *)PTR_memcpy_004c5ba8" * (cast_expression "(code *)PTR_memcpy_004c5ba8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_60[0],puVar6,iVar4)" ( (subscript_expression "local_60[0]" identifier [ number_literal ]) , identifier , identifier ))) ;) })) (goto_statement "goto LAB_003c33a0;" goto statement_identifier ;) })) (if_statement "if (*(char *)(piVar3 + 7) == '\0') {\n    (*(code *)PTR__M_widen_init_004c22c0)(piVar3);\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) goto LAB_003c3468;\n  }\n  else {\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) {\nLAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);\n      goto LAB_003c33a0;\n    }\n  }" if (parenthesized_expression "(*(char *)(piVar3 + 7) == '\0')" ( (binary_expression "*(char *)(piVar3 + 7) == '\0'" (pointer_expression "*(char *)(piVar3 + 7)" * (cast_expression "(char *)(piVar3 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 7)" ( (binary_expression "piVar3 + 7" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    (*(code *)PTR__M_widen_init_004c22c0)(piVar3);\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) goto LAB_003c3468;\n  }" { (expression_statement "(*(code *)PTR__M_widen_init_004c22c0)(piVar3);" (call_expression "(*(code *)PTR__M_widen_init_004c22c0)(piVar3)" (parenthesized_expression "(*(code *)PTR__M_widen_init_004c22c0)" ( (pointer_expression "*(code *)PTR__M_widen_init_004c22c0" * (cast_expression "(code *)PTR__M_widen_init_004c22c0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar3)" ( identifier ))) ;) (expression_statement "pcVar7 = *(code **)(*piVar3 + 0x1c);" (assignment_expression "pcVar7 = *(code **)(*piVar3 + 0x1c)" identifier = (pointer_expression "*(code **)(*piVar3 + 0x1c)" * (cast_expression "(code **)(*piVar3 + 0x1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar3 + 0x1c)" ( (binary_expression "*piVar3 + 0x1c" (pointer_expression "*piVar3" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar7 != (code *)PTR_do_widen_004c2bf0) goto LAB_003c3468;" if (parenthesized_expression "(pcVar7 != (code *)PTR_do_widen_004c2bf0)" ( (binary_expression "pcVar7 != (code *)PTR_do_widen_004c2bf0" identifier != (cast_expression "(code *)PTR_do_widen_004c2bf0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (goto_statement "goto LAB_003c3468;" goto statement_identifier ;)) }) (else_clause "else {\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) {\nLAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);\n      goto LAB_003c33a0;\n    }\n  }" else (compound_statement "{\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) {\nLAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);\n      goto LAB_003c33a0;\n    }\n  }" { (expression_statement "pcVar7 = *(code **)(*piVar3 + 0x1c);" (assignment_expression "pcVar7 = *(code **)(*piVar3 + 0x1c)" identifier = (pointer_expression "*(code **)(*piVar3 + 0x1c)" * (cast_expression "(code **)(*piVar3 + 0x1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar3 + 0x1c)" ( (binary_expression "*piVar3 + 0x1c" (pointer_expression "*piVar3" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar7 != (code *)PTR_do_widen_004c2bf0) {\nLAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);\n      goto LAB_003c33a0;\n    }" if (parenthesized_expression "(pcVar7 != (code *)PTR_do_widen_004c2bf0)" ( (binary_expression "pcVar7 != (code *)PTR_do_widen_004c2bf0" identifier != (cast_expression "(code *)PTR_do_widen_004c2bf0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\nLAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);\n      goto LAB_003c33a0;\n    }" { (labeled_statement "LAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);" statement_identifier : (expression_statement "(*pcVar7)(piVar3,puVar6,local_34,local_38);" (call_expression "(*pcVar7)(piVar3,puVar6,local_34,local_38)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(piVar3,puVar6,local_34,local_38)" ( identifier , identifier , identifier , identifier ))) ;)) (goto_statement "goto LAB_003c33a0;" goto statement_identifier ;) })) }))) (if_statement "if (puVar6 + iVar4 != puVar6) {\n    (*(code *)PTR_memcpy_004c5ba8)(local_38,puVar6,iVar4);\n  }" if (parenthesized_expression "(puVar6 + iVar4 != puVar6)" ( (binary_expression "puVar6 + iVar4 != puVar6" (binary_expression "puVar6 + iVar4" identifier + identifier) != identifier) )) (compound_statement "{\n    (*(code *)PTR_memcpy_004c5ba8)(local_38,puVar6,iVar4);\n  }" { (expression_statement "(*(code *)PTR_memcpy_004c5ba8)(local_38,puVar6,iVar4);" (call_expression "(*(code *)PTR_memcpy_004c5ba8)(local_38,puVar6,iVar4)" (parenthesized_expression "(*(code *)PTR_memcpy_004c5ba8)" ( (pointer_expression "*(code *)PTR_memcpy_004c5ba8" * (cast_expression "(code *)PTR_memcpy_004c5ba8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_38,puVar6,iVar4)" ( identifier , identifier , identifier ))) ;) })) (labeled_statement "LAB_003c33a0:\n  iVar4 = local_3c;" statement_identifier : (expression_statement "iVar4 = local_3c;" (assignment_expression "iVar4 = local_3c" identifier = identifier) ;)) (expression_statement "pcVar7 = (code *)PTR__M_insert<true>_004c32d8;" (assignment_expression "pcVar7 = (code *)PTR__M_insert<true>_004c32d8" identifier = (binary_expression "(code *)PTR__M_insert<true>_004c32d8" (binary_expression "(code *)PTR__M_insert<true" (cast_expression "(code *)PTR__M_insert" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) < true) > identifier)) ;) (if_statement "if (local_40 == 0) {\n    pcVar7 = (code *)PTR__M_insert<false>_004c32d4;\n  }" if (parenthesized_expression "(local_40 == 0)" ( (binary_expression "local_40 == 0" identifier == number_literal) )) (compound_statement "{\n    pcVar7 = (code *)PTR__M_insert<false>_004c32d4;\n  }" { (expression_statement "pcVar7 = (code *)PTR__M_insert<false>_004c32d4;" (assignment_expression "pcVar7 = (code *)PTR__M_insert<false>_004c32d4" identifier = (binary_expression "(code *)PTR__M_insert<false>_004c32d4" (binary_expression "(code *)PTR__M_insert<false" (cast_expression "(code *)PTR__M_insert" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) < false) > identifier)) ;) })) (expression_statement "*(undefined1 ***)(puVar8 + 0x18) = local_60;" (assignment_expression "*(undefined1 ***)(puVar8 + 0x18) = local_60" (pointer_expression "*(undefined1 ***)(puVar8 + 0x18)" * (cast_expression "(undefined1 ***)(puVar8 + 0x18)" ( (type_descriptor "undefined1 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar8 + 0x18)" ( (binary_expression "puVar8 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar8 + 0x14) = iVar4;" (assignment_expression "*(int *)(puVar8 + 0x14) = iVar4" (pointer_expression "*(int *)(puVar8 + 0x14)" * (cast_expression "(int *)(puVar8 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x14)" ( (binary_expression "puVar8 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar8 + 0x10) = param_6;" (assignment_expression "*(int *)(puVar8 + 0x10) = param_6" (pointer_expression "*(int *)(puVar8 + 0x10)" * (cast_expression "(int *)(puVar8 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x10)" ( (binary_expression "puVar8 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar7)(param_1,param_2,param_3,param_4);" (call_expression "(*pcVar7)(param_1,param_2,param_3,param_4)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(param_1,param_2,param_3,param_4)" ( identifier , identifier , identifier , identifier ))) ;) (if_statement "if (local_60[0] != auStack_58) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }" if (parenthesized_expression "(local_60[0] != auStack_58)" ( (binary_expression "local_60[0] != auStack_58" (subscript_expression "local_60[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 "()" ( ))) ;) })) (expression_statement "(*(code *)PTR__locale_004c22f0)(auStack_48);" (call_expression "(*(code *)PTR__locale_004c22f0)(auStack_48)" (parenthesized_expression "(*(code *)PTR__locale_004c22f0)" ( (pointer_expression "*(code *)PTR__locale_004c22f0" * (cast_expression "(code *)PTR__locale_004c22f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_48)" ( identifier ))) ;) (return_statement "return param_1;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (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 IDENT) ))) (compound_statement { (declaration TYPE 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 (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) < IDENT) < (binary_expression IDENT >> IDENT)) )) (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , LIT , (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) )))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) != IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT , IDENT ))) ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;)) (goto_statement goto statement_identifier ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) != IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (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 == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) < BOOL) > IDENT)) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (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 ( ))) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (return_statement return IDENT ;) })))
(function_definition "undefined4\nFUN_003c31f4(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            byte param_5,int param_6,char param_7,undefined4 param_8,undefined8 param_9)\n\n{\n  int iVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined1 *puVar6;\n  code *pcVar7;\n  undefined1 *puVar8;\n  undefined1 auStack_c8 [16];\n  undefined4 local_b8 [2];\n  undefined8 local_b0;\n  undefined1 auStack_a8 [64];\n  undefined1 *local_60 [2];\n  undefined1 auStack_58 [16];\n  undefined1 auStack_48 [8];\n  uint local_40;\n  int local_3c;\n  undefined1 *local_38;\n  undefined1 *local_34;\n  \n  local_40 = (uint)param_5;\n  local_3c = (int)param_7;\n  (*(code *)PTR_locale_004c2d24)(auStack_48,param_6 + 0x6c);\n                    \n  piVar3 = (int *)(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)(auStack_48);\n  puVar8 = auStack_c8;\n  puVar6 = auStack_a8;\n  local_60[0] = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();\n  puVar2 = PTR_UINT_004c12dc;\n  local_b8[0] = 0;\n  local_b0 = param_9;\n  iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,0x40,PTR_UINT_004c12dc + -0x398c)\n  ;\n  if (0x3f < iVar4) {\n    iVar1 = -(iVar4 + 8U & 0xfffffff8);\n    puVar8 = auStack_c8 + iVar1;\n    puVar6 = auStack_a8 + iVar1;\n    puVar5 = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();\n    *(undefined8 *)(auStack_a8 + iVar1 + -8) = param_9;\n    *(undefined4 *)((int)local_b8 + iVar1) = 0;\n    local_60[0] = puVar5;\n    iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c);\n  }\n  local_60[0] = auStack_58;\n  (*(code *)PTR__M_construct_004c32d0)(local_60,iVar4,0);\n  local_34 = puVar6 + iVar4;\n  local_38 = local_60[0];\n  if (*(char *)(piVar3 + 7) == '\x01') {\n    if (puVar6 + iVar4 != puVar6) {\n      (*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);\n    }\n    goto LAB_003c33a0;\n  }\n  if (*(char *)(piVar3 + 7) == '\0') {\n    (*(code *)PTR__M_widen_init_004c22c0)(piVar3);\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) goto LAB_003c3468;\n  }\n  else {\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) {\nLAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);\n      goto LAB_003c33a0;\n    }\n  }\n  if (puVar6 + iVar4 != puVar6) {\n    (*(code *)PTR_memcpy_004c5ba8)(local_38,puVar6,iVar4);\n  }\nLAB_003c33a0:\n  iVar4 = local_3c;\n  pcVar7 = (code *)PTR__M_insert<true>_004c32d8;\n  if (local_40 == 0) {\n    pcVar7 = (code *)PTR__M_insert<false>_004c32d4;\n  }\n  *(undefined1 ***)(puVar8 + 0x18) = local_60;\n  *(int *)(puVar8 + 0x14) = iVar4;\n                    \n  *(int *)(puVar8 + 0x10) = param_6;\n  (*pcVar7)(param_1,param_2,param_3,param_4);\n  if (local_60[0] != auStack_58) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  (*(code *)PTR__locale_004c22f0)(auStack_48);\n  return param_1;\n}" (type_identifier "undefined4") (function_declarator "FUN_003c31f4(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            byte param_5,int param_6,char param_7,undefined4 param_8,undefined8 param_9)" (identifier "FUN_003c31f4") (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            byte param_5,int param_6,char param_7,undefined4 param_8,undefined8 param_9)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (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 "byte param_5" (type_identifier "byte") (identifier "param_5")) (, ",") (parameter_declaration "int param_6" (primitive_type "int") (identifier "param_6")) (, ",") (parameter_declaration "char param_7" (primitive_type "char") (identifier "param_7")) (, ",") (parameter_declaration "undefined4 param_8" (type_identifier "undefined4") (identifier "param_8")) (, ",") (parameter_declaration "undefined8 param_9" (type_identifier "undefined8") (identifier "param_9")) () ")"))) (compound_statement "{\n  int iVar1;\n  undefined *puVar2;\n  int *piVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  undefined1 *puVar6;\n  code *pcVar7;\n  undefined1 *puVar8;\n  undefined1 auStack_c8 [16];\n  undefined4 local_b8 [2];\n  undefined8 local_b0;\n  undefined1 auStack_a8 [64];\n  undefined1 *local_60 [2];\n  undefined1 auStack_58 [16];\n  undefined1 auStack_48 [8];\n  uint local_40;\n  int local_3c;\n  undefined1 *local_38;\n  undefined1 *local_34;\n  \n  local_40 = (uint)param_5;\n  local_3c = (int)param_7;\n  (*(code *)PTR_locale_004c2d24)(auStack_48,param_6 + 0x6c);\n                    \n  piVar3 = (int *)(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)(auStack_48);\n  puVar8 = auStack_c8;\n  puVar6 = auStack_a8;\n  local_60[0] = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();\n  puVar2 = PTR_UINT_004c12dc;\n  local_b8[0] = 0;\n  local_b0 = param_9;\n  iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,0x40,PTR_UINT_004c12dc + -0x398c)\n  ;\n  if (0x3f < iVar4) {\n    iVar1 = -(iVar4 + 8U & 0xfffffff8);\n    puVar8 = auStack_c8 + iVar1;\n    puVar6 = auStack_a8 + iVar1;\n    puVar5 = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();\n    *(undefined8 *)(auStack_a8 + iVar1 + -8) = param_9;\n    *(undefined4 *)((int)local_b8 + iVar1) = 0;\n    local_60[0] = puVar5;\n    iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c);\n  }\n  local_60[0] = auStack_58;\n  (*(code *)PTR__M_construct_004c32d0)(local_60,iVar4,0);\n  local_34 = puVar6 + iVar4;\n  local_38 = local_60[0];\n  if (*(char *)(piVar3 + 7) == '\x01') {\n    if (puVar6 + iVar4 != puVar6) {\n      (*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);\n    }\n    goto LAB_003c33a0;\n  }\n  if (*(char *)(piVar3 + 7) == '\0') {\n    (*(code *)PTR__M_widen_init_004c22c0)(piVar3);\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) goto LAB_003c3468;\n  }\n  else {\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) {\nLAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);\n      goto LAB_003c33a0;\n    }\n  }\n  if (puVar6 + iVar4 != puVar6) {\n    (*(code *)PTR_memcpy_004c5ba8)(local_38,puVar6,iVar4);\n  }\nLAB_003c33a0:\n  iVar4 = local_3c;\n  pcVar7 = (code *)PTR__M_insert<true>_004c32d8;\n  if (local_40 == 0) {\n    pcVar7 = (code *)PTR__M_insert<false>_004c32d4;\n  }\n  *(undefined1 ***)(puVar8 + 0x18) = local_60;\n  *(int *)(puVar8 + 0x14) = iVar4;\n                    \n  *(int *)(puVar8 + 0x10) = param_6;\n  (*pcVar7)(param_1,param_2,param_3,param_4);\n  if (local_60[0] != auStack_58) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }\n  (*(code *)PTR__locale_004c22f0)(auStack_48);\n  return param_1;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined1 *puVar5;" (type_identifier "undefined1") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined1 *puVar6;" (type_identifier "undefined1") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "code *pcVar7;" (type_identifier "code") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "undefined1 *puVar8;" (type_identifier "undefined1") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "undefined1 auStack_c8 [16];" (type_identifier "undefined1") (array_declarator "auStack_c8 [16]" (identifier "auStack_c8") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined4 local_b8 [2];" (type_identifier "undefined4") (array_declarator "local_b8 [2]" (identifier "local_b8") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "undefined8 local_b0;" (type_identifier "undefined8") (identifier "local_b0") (; ";")) (declaration "undefined1 auStack_a8 [64];" (type_identifier "undefined1") (array_declarator "auStack_a8 [64]" (identifier "auStack_a8") ([ "[") (number_literal "64") (] "]")) (; ";")) (declaration "undefined1 *local_60 [2];" (type_identifier "undefined1") (pointer_declarator "*local_60 [2]" (* "*") (array_declarator "local_60 [2]" (identifier "local_60") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "undefined1 auStack_58 [16];" (type_identifier "undefined1") (array_declarator "auStack_58 [16]" (identifier "auStack_58") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined1 auStack_48 [8];" (type_identifier "undefined1") (array_declarator "auStack_48 [8]" (identifier "auStack_48") ([ "[") (number_literal "8") (] "]")) (; ";")) (declaration "uint local_40;" (type_identifier "uint") (identifier "local_40") (; ";")) (declaration "int local_3c;" (primitive_type "int") (identifier "local_3c") (; ";")) (declaration "undefined1 *local_38;" (type_identifier "undefined1") (pointer_declarator "*local_38" (* "*") (identifier "local_38")) (; ";")) (declaration "undefined1 *local_34;" (type_identifier "undefined1") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (expression_statement "local_40 = (uint)param_5;" (assignment_expression "local_40 = (uint)param_5" (identifier "local_40") (= "=") (cast_expression "(uint)param_5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_5"))) (; ";")) (expression_statement "local_3c = (int)param_7;" (assignment_expression "local_3c = (int)param_7" (identifier "local_3c") (= "=") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7"))) (; ";")) (expression_statement "(*(code *)PTR_locale_004c2d24)(auStack_48,param_6 + 0x6c);" (call_expression "(*(code *)PTR_locale_004c2d24)(auStack_48,param_6 + 0x6c)" (parenthesized_expression "(*(code *)PTR_locale_004c2d24)" (( "(") (pointer_expression "*(code *)PTR_locale_004c2d24" (* "*") (cast_expression "(code *)PTR_locale_004c2d24" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_locale_004c2d24"))) () ")")) (argument_list "(auStack_48,param_6 + 0x6c)" (( "(") (identifier "auStack_48") (, ",") (binary_expression "param_6 + 0x6c" (identifier "param_6") (+ "+") (number_literal "0x6c")) () ")"))) (; ";")) (expression_statement "piVar3 = (int *)(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)(auStack_48);" (assignment_expression "piVar3 = (int *)(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)(auStack_48)" (identifier "piVar3") (= "=") (cast_expression "(int *)(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)(auStack_48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)(auStack_48)" (parenthesized_expression "(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)" (( "(") (binary_expression "*(code *)PTR_use_facet<std_ctype<char>>_004c2c84" (binary_expression "*(code *)PTR_use_facet<std_ctype" (pointer_expression "*(code *)PTR_use_facet" (* "*") (cast_expression "(code *)PTR_use_facet" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_use_facet"))) (< "<") (identifier "std_ctype")) (< "<") (binary_expression "char>>_004c2c84" (identifier "char") (>> ">>") (identifier "_004c2c84"))) () ")")) (argument_list "(auStack_48)" (( "(") (identifier "auStack_48") () ")"))))) (; ";")) (expression_statement "puVar8 = auStack_c8;" (assignment_expression "puVar8 = auStack_c8" (identifier "puVar8") (= "=") (identifier "auStack_c8")) (; ";")) (expression_statement "puVar6 = auStack_a8;" (assignment_expression "puVar6 = auStack_a8" (identifier "puVar6") (= "=") (identifier "auStack_a8")) (; ";")) (expression_statement "local_60[0] = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();" (assignment_expression "local_60[0] = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)()" (subscript_expression "local_60[0]" (identifier "local_60") ([ "[") (number_literal "0") (] "]")) (= "=") (cast_expression "(undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)()" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR__S_get_c_locale_004c13c0)()" (parenthesized_expression "(*(code *)PTR__S_get_c_locale_004c13c0)" (( "(") (pointer_expression "*(code *)PTR__S_get_c_locale_004c13c0" (* "*") (cast_expression "(code *)PTR__S_get_c_locale_004c13c0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR__S_get_c_locale_004c13c0"))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "puVar2 = PTR_UINT_004c12dc;" (assignment_expression "puVar2 = PTR_UINT_004c12dc" (identifier "puVar2") (= "=") (identifier "PTR_UINT_004c12dc")) (; ";")) (expression_statement "local_b8[0] = 0;" (assignment_expression "local_b8[0] = 0" (subscript_expression "local_b8[0]" (identifier "local_b8") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_b0 = param_9;" (assignment_expression "local_b0 = param_9" (identifier "local_b0") (= "=") (identifier "param_9")) (; ";")) (expression_statement "iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,0x40,PTR_UINT_004c12dc + -0x398c)\n  ;" (assignment_expression "iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,0x40,PTR_UINT_004c12dc + -0x398c)" (identifier "iVar4") (= "=") (call_expression "(*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,0x40,PTR_UINT_004c12dc + -0x398c)" (parenthesized_expression "(*(code *)PTR___convert_from_v_004c2d28)" (( "(") (pointer_expression "*(code *)PTR___convert_from_v_004c2d28" (* "*") (cast_expression "(code *)PTR___convert_from_v_004c2d28" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___convert_from_v_004c2d28"))) () ")")) (argument_list "(local_60,puVar6,0x40,PTR_UINT_004c12dc + -0x398c)" (( "(") (identifier "local_60") (, ",") (identifier "puVar6") (, ",") (number_literal "0x40") (, ",") (binary_expression "PTR_UINT_004c12dc + -0x398c" (identifier "PTR_UINT_004c12dc") (+ "+") (number_literal "-0x398c")) () ")")))) (; ";")) (if_statement "if (0x3f < iVar4) {\n    iVar1 = -(iVar4 + 8U & 0xfffffff8);\n    puVar8 = auStack_c8 + iVar1;\n    puVar6 = auStack_a8 + iVar1;\n    puVar5 = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();\n    *(undefined8 *)(auStack_a8 + iVar1 + -8) = param_9;\n    *(undefined4 *)((int)local_b8 + iVar1) = 0;\n    local_60[0] = puVar5;\n    iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c);\n  }" (if "if") (parenthesized_expression "(0x3f < iVar4)" (( "(") (binary_expression "0x3f < iVar4" (number_literal "0x3f") (< "<") (identifier "iVar4")) () ")")) (compound_statement "{\n    iVar1 = -(iVar4 + 8U & 0xfffffff8);\n    puVar8 = auStack_c8 + iVar1;\n    puVar6 = auStack_a8 + iVar1;\n    puVar5 = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();\n    *(undefined8 *)(auStack_a8 + iVar1 + -8) = param_9;\n    *(undefined4 *)((int)local_b8 + iVar1) = 0;\n    local_60[0] = puVar5;\n    iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c);\n  }" ({ "{") (expression_statement "iVar1 = -(iVar4 + 8U & 0xfffffff8);" (assignment_expression "iVar1 = -(iVar4 + 8U & 0xfffffff8)" (identifier "iVar1") (= "=") (unary_expression "-(iVar4 + 8U & 0xfffffff8)" (- "-") (parenthesized_expression "(iVar4 + 8U & 0xfffffff8)" (( "(") (binary_expression "iVar4 + 8U & 0xfffffff8" (binary_expression "iVar4 + 8U" (identifier "iVar4") (+ "+") (number_literal "8U")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar8 = auStack_c8 + iVar1;" (assignment_expression "puVar8 = auStack_c8 + iVar1" (identifier "puVar8") (= "=") (binary_expression "auStack_c8 + iVar1" (identifier "auStack_c8") (+ "+") (identifier "iVar1"))) (; ";")) (expression_statement "puVar6 = auStack_a8 + iVar1;" (assignment_expression "puVar6 = auStack_a8 + iVar1" (identifier "puVar6") (= "=") (binary_expression "auStack_a8 + iVar1" (identifier "auStack_a8") (+ "+") (identifier "iVar1"))) (; ";")) (expression_statement "puVar5 = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();" (assignment_expression "puVar5 = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)()" (identifier "puVar5") (= "=") (cast_expression "(undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)()" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR__S_get_c_locale_004c13c0)()" (parenthesized_expression "(*(code *)PTR__S_get_c_locale_004c13c0)" (( "(") (pointer_expression "*(code *)PTR__S_get_c_locale_004c13c0" (* "*") (cast_expression "(code *)PTR__S_get_c_locale_004c13c0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR__S_get_c_locale_004c13c0"))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*(undefined8 *)(auStack_a8 + iVar1 + -8) = param_9;" (assignment_expression "*(undefined8 *)(auStack_a8 + iVar1 + -8) = param_9" (pointer_expression "*(undefined8 *)(auStack_a8 + iVar1 + -8)" (* "*") (cast_expression "(undefined8 *)(auStack_a8 + iVar1 + -8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auStack_a8 + iVar1 + -8)" (( "(") (binary_expression "auStack_a8 + iVar1 + -8" (binary_expression "auStack_a8 + iVar1" (identifier "auStack_a8") (+ "+") (identifier "iVar1")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "param_9")) (; ";")) (expression_statement "*(undefined4 *)((int)local_b8 + iVar1) = 0;" (assignment_expression "*(undefined4 *)((int)local_b8 + iVar1) = 0" (pointer_expression "*(undefined4 *)((int)local_b8 + iVar1)" (* "*") (cast_expression "(undefined4 *)((int)local_b8 + iVar1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_b8 + iVar1)" (( "(") (binary_expression "(int)local_b8 + iVar1" (cast_expression "(int)local_b8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_b8")) (+ "+") (identifier "iVar1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_60[0] = puVar5;" (assignment_expression "local_60[0] = puVar5" (subscript_expression "local_60[0]" (identifier "local_60") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "puVar5")) (; ";")) (expression_statement "iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c);" (assignment_expression "iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c)" (identifier "iVar4") (= "=") (call_expression "(*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c)" (parenthesized_expression "(*(code *)PTR___convert_from_v_004c2d28)" (( "(") (pointer_expression "*(code *)PTR___convert_from_v_004c2d28" (* "*") (cast_expression "(code *)PTR___convert_from_v_004c2d28" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___convert_from_v_004c2d28"))) () ")")) (argument_list "(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c)" (( "(") (identifier "local_60") (, ",") (identifier "puVar6") (, ",") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1")) (, ",") (binary_expression "puVar2 + -0x398c" (identifier "puVar2") (+ "+") (number_literal "-0x398c")) () ")")))) (; ";")) (} "}"))) (expression_statement "local_60[0] = auStack_58;" (assignment_expression "local_60[0] = auStack_58" (subscript_expression "local_60[0]" (identifier "local_60") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "auStack_58")) (; ";")) (expression_statement "(*(code *)PTR__M_construct_004c32d0)(local_60,iVar4,0);" (call_expression "(*(code *)PTR__M_construct_004c32d0)(local_60,iVar4,0)" (parenthesized_expression "(*(code *)PTR__M_construct_004c32d0)" (( "(") (pointer_expression "*(code *)PTR__M_construct_004c32d0" (* "*") (cast_expression "(code *)PTR__M_construct_004c32d0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR__M_construct_004c32d0"))) () ")")) (argument_list "(local_60,iVar4,0)" (( "(") (identifier "local_60") (, ",") (identifier "iVar4") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "local_34 = puVar6 + iVar4;" (assignment_expression "local_34 = puVar6 + iVar4" (identifier "local_34") (= "=") (binary_expression "puVar6 + iVar4" (identifier "puVar6") (+ "+") (identifier "iVar4"))) (; ";")) (expression_statement "local_38 = local_60[0];" (assignment_expression "local_38 = local_60[0]" (identifier "local_38") (= "=") (subscript_expression "local_60[0]" (identifier "local_60") ([ "[") (number_literal "0") (] "]"))) (; ";")) (if_statement "if (*(char *)(piVar3 + 7) == '\x01') {\n    if (puVar6 + iVar4 != puVar6) {\n      (*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);\n    }\n    goto LAB_003c33a0;\n  }" (if "if") (parenthesized_expression "(*(char *)(piVar3 + 7) == '\x01')" (( "(") (binary_expression "*(char *)(piVar3 + 7) == '\x01'" (pointer_expression "*(char *)(piVar3 + 7)" (* "*") (cast_expression "(char *)(piVar3 + 7)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar3 + 7)" (( "(") (binary_expression "piVar3 + 7" (identifier "piVar3") (+ "+") (number_literal "7")) () ")")))) (== "==") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")")) (compound_statement "{\n    if (puVar6 + iVar4 != puVar6) {\n      (*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);\n    }\n    goto LAB_003c33a0;\n  }" ({ "{") (if_statement "if (puVar6 + iVar4 != puVar6) {\n      (*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);\n    }" (if "if") (parenthesized_expression "(puVar6 + iVar4 != puVar6)" (( "(") (binary_expression "puVar6 + iVar4 != puVar6" (binary_expression "puVar6 + iVar4" (identifier "puVar6") (+ "+") (identifier "iVar4")) (!= "!=") (identifier "puVar6")) () ")")) (compound_statement "{\n      (*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);\n    }" ({ "{") (expression_statement "(*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);" (call_expression "(*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4)" (parenthesized_expression "(*(code *)PTR_memcpy_004c5ba8)" (( "(") (pointer_expression "*(code *)PTR_memcpy_004c5ba8" (* "*") (cast_expression "(code *)PTR_memcpy_004c5ba8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_004c5ba8"))) () ")")) (argument_list "(local_60[0],puVar6,iVar4)" (( "(") (subscript_expression "local_60[0]" (identifier "local_60") ([ "[") (number_literal "0") (] "]")) (, ",") (identifier "puVar6") (, ",") (identifier "iVar4") () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_003c33a0;" (goto "goto") (statement_identifier "LAB_003c33a0") (; ";")) (} "}"))) (if_statement "if (*(char *)(piVar3 + 7) == '\0') {\n    (*(code *)PTR__M_widen_init_004c22c0)(piVar3);\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) goto LAB_003c3468;\n  }\n  else {\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) {\nLAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);\n      goto LAB_003c33a0;\n    }\n  }" (if "if") (parenthesized_expression "(*(char *)(piVar3 + 7) == '\0')" (( "(") (binary_expression "*(char *)(piVar3 + 7) == '\0'" (pointer_expression "*(char *)(piVar3 + 7)" (* "*") (cast_expression "(char *)(piVar3 + 7)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar3 + 7)" (( "(") (binary_expression "piVar3 + 7" (identifier "piVar3") (+ "+") (number_literal "7")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    (*(code *)PTR__M_widen_init_004c22c0)(piVar3);\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) goto LAB_003c3468;\n  }" ({ "{") (expression_statement "(*(code *)PTR__M_widen_init_004c22c0)(piVar3);" (call_expression "(*(code *)PTR__M_widen_init_004c22c0)(piVar3)" (parenthesized_expression "(*(code *)PTR__M_widen_init_004c22c0)" (( "(") (pointer_expression "*(code *)PTR__M_widen_init_004c22c0" (* "*") (cast_expression "(code *)PTR__M_widen_init_004c22c0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR__M_widen_init_004c22c0"))) () ")")) (argument_list "(piVar3)" (( "(") (identifier "piVar3") () ")"))) (; ";")) (expression_statement "pcVar7 = *(code **)(*piVar3 + 0x1c);" (assignment_expression "pcVar7 = *(code **)(*piVar3 + 0x1c)" (identifier "pcVar7") (= "=") (pointer_expression "*(code **)(*piVar3 + 0x1c)" (* "*") (cast_expression "(code **)(*piVar3 + 0x1c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar3 + 0x1c)" (( "(") (binary_expression "*piVar3 + 0x1c" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (if_statement "if (pcVar7 != (code *)PTR_do_widen_004c2bf0) goto LAB_003c3468;" (if "if") (parenthesized_expression "(pcVar7 != (code *)PTR_do_widen_004c2bf0)" (( "(") (binary_expression "pcVar7 != (code *)PTR_do_widen_004c2bf0" (identifier "pcVar7") (!= "!=") (cast_expression "(code *)PTR_do_widen_004c2bf0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_do_widen_004c2bf0"))) () ")")) (goto_statement "goto LAB_003c3468;" (goto "goto") (statement_identifier "LAB_003c3468") (; ";"))) (} "}")) (else_clause "else {\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) {\nLAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);\n      goto LAB_003c33a0;\n    }\n  }" (else "else") (compound_statement "{\n    pcVar7 = *(code **)(*piVar3 + 0x1c);\n    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) {\nLAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);\n      goto LAB_003c33a0;\n    }\n  }" ({ "{") (expression_statement "pcVar7 = *(code **)(*piVar3 + 0x1c);" (assignment_expression "pcVar7 = *(code **)(*piVar3 + 0x1c)" (identifier "pcVar7") (= "=") (pointer_expression "*(code **)(*piVar3 + 0x1c)" (* "*") (cast_expression "(code **)(*piVar3 + 0x1c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar3 + 0x1c)" (( "(") (binary_expression "*piVar3 + 0x1c" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (if_statement "if (pcVar7 != (code *)PTR_do_widen_004c2bf0) {\nLAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);\n      goto LAB_003c33a0;\n    }" (if "if") (parenthesized_expression "(pcVar7 != (code *)PTR_do_widen_004c2bf0)" (( "(") (binary_expression "pcVar7 != (code *)PTR_do_widen_004c2bf0" (identifier "pcVar7") (!= "!=") (cast_expression "(code *)PTR_do_widen_004c2bf0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_do_widen_004c2bf0"))) () ")")) (compound_statement "{\nLAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);\n      goto LAB_003c33a0;\n    }" ({ "{") (labeled_statement "LAB_003c3468:\n      (*pcVar7)(piVar3,puVar6,local_34,local_38);" (statement_identifier "LAB_003c3468") (: ":") (expression_statement "(*pcVar7)(piVar3,puVar6,local_34,local_38);" (call_expression "(*pcVar7)(piVar3,puVar6,local_34,local_38)" (parenthesized_expression "(*pcVar7)" (( "(") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7")) () ")")) (argument_list "(piVar3,puVar6,local_34,local_38)" (( "(") (identifier "piVar3") (, ",") (identifier "puVar6") (, ",") (identifier "local_34") (, ",") (identifier "local_38") () ")"))) (; ";"))) (goto_statement "goto LAB_003c33a0;" (goto "goto") (statement_identifier "LAB_003c33a0") (; ";")) (} "}"))) (} "}")))) (if_statement "if (puVar6 + iVar4 != puVar6) {\n    (*(code *)PTR_memcpy_004c5ba8)(local_38,puVar6,iVar4);\n  }" (if "if") (parenthesized_expression "(puVar6 + iVar4 != puVar6)" (( "(") (binary_expression "puVar6 + iVar4 != puVar6" (binary_expression "puVar6 + iVar4" (identifier "puVar6") (+ "+") (identifier "iVar4")) (!= "!=") (identifier "puVar6")) () ")")) (compound_statement "{\n    (*(code *)PTR_memcpy_004c5ba8)(local_38,puVar6,iVar4);\n  }" ({ "{") (expression_statement "(*(code *)PTR_memcpy_004c5ba8)(local_38,puVar6,iVar4);" (call_expression "(*(code *)PTR_memcpy_004c5ba8)(local_38,puVar6,iVar4)" (parenthesized_expression "(*(code *)PTR_memcpy_004c5ba8)" (( "(") (pointer_expression "*(code *)PTR_memcpy_004c5ba8" (* "*") (cast_expression "(code *)PTR_memcpy_004c5ba8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_004c5ba8"))) () ")")) (argument_list "(local_38,puVar6,iVar4)" (( "(") (identifier "local_38") (, ",") (identifier "puVar6") (, ",") (identifier "iVar4") () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_003c33a0:\n  iVar4 = local_3c;" (statement_identifier "LAB_003c33a0") (: ":") (expression_statement "iVar4 = local_3c;" (assignment_expression "iVar4 = local_3c" (identifier "iVar4") (= "=") (identifier "local_3c")) (; ";"))) (expression_statement "pcVar7 = (code *)PTR__M_insert<true>_004c32d8;" (assignment_expression "pcVar7 = (code *)PTR__M_insert<true>_004c32d8" (identifier "pcVar7") (= "=") (binary_expression "(code *)PTR__M_insert<true>_004c32d8" (binary_expression "(code *)PTR__M_insert<true" (cast_expression "(code *)PTR__M_insert" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR__M_insert")) (< "<") (true "true")) (> ">") (identifier "_004c32d8"))) (; ";")) (if_statement "if (local_40 == 0) {\n    pcVar7 = (code *)PTR__M_insert<false>_004c32d4;\n  }" (if "if") (parenthesized_expression "(local_40 == 0)" (( "(") (binary_expression "local_40 == 0" (identifier "local_40") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    pcVar7 = (code *)PTR__M_insert<false>_004c32d4;\n  }" ({ "{") (expression_statement "pcVar7 = (code *)PTR__M_insert<false>_004c32d4;" (assignment_expression "pcVar7 = (code *)PTR__M_insert<false>_004c32d4" (identifier "pcVar7") (= "=") (binary_expression "(code *)PTR__M_insert<false>_004c32d4" (binary_expression "(code *)PTR__M_insert<false" (cast_expression "(code *)PTR__M_insert" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR__M_insert")) (< "<") (false "false")) (> ">") (identifier "_004c32d4"))) (; ";")) (} "}"))) (expression_statement "*(undefined1 ***)(puVar8 + 0x18) = local_60;" (assignment_expression "*(undefined1 ***)(puVar8 + 0x18) = local_60" (pointer_expression "*(undefined1 ***)(puVar8 + 0x18)" (* "*") (cast_expression "(undefined1 ***)(puVar8 + 0x18)" (( "(") (type_descriptor "undefined1 ***" (type_identifier "undefined1") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar8 + 0x18)" (( "(") (binary_expression "puVar8 + 0x18" (identifier "puVar8") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "local_60")) (; ";")) (expression_statement "*(int *)(puVar8 + 0x14) = iVar4;" (assignment_expression "*(int *)(puVar8 + 0x14) = iVar4" (pointer_expression "*(int *)(puVar8 + 0x14)" (* "*") (cast_expression "(int *)(puVar8 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 0x14)" (( "(") (binary_expression "puVar8 + 0x14" (identifier "puVar8") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "iVar4")) (; ";")) (expression_statement "*(int *)(puVar8 + 0x10) = param_6;" (assignment_expression "*(int *)(puVar8 + 0x10) = param_6" (pointer_expression "*(int *)(puVar8 + 0x10)" (* "*") (cast_expression "(int *)(puVar8 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 0x10)" (( "(") (binary_expression "puVar8 + 0x10" (identifier "puVar8") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "param_6")) (; ";")) (expression_statement "(*pcVar7)(param_1,param_2,param_3,param_4);" (call_expression "(*pcVar7)(param_1,param_2,param_3,param_4)" (parenthesized_expression "(*pcVar7)" (( "(") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7")) () ")")) (argument_list "(param_1,param_2,param_3,param_4)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") () ")"))) (; ";")) (if_statement "if (local_60[0] != auStack_58) {\n    (*(code *)PTR_operator_delete_004c12fc)();\n  }" (if "if") (parenthesized_expression "(local_60[0] != auStack_58)" (( "(") (binary_expression "local_60[0] != auStack_58" (subscript_expression "local_60[0]" (identifier "local_60") ([ "[") (number_literal "0") (] "]")) (!= "!=") (identifier "auStack_58")) () ")")) (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 "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR__locale_004c22f0)(auStack_48);" (call_expression "(*(code *)PTR__locale_004c22f0)(auStack_48)" (parenthesized_expression "(*(code *)PTR__locale_004c22f0)" (( "(") (pointer_expression "*(code *)PTR__locale_004c22f0" (* "*") (cast_expression "(code *)PTR__locale_004c22f0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR__locale_004c22f0"))) () ")")) (argument_list "(auStack_48)" (( "(") (identifier "auStack_48") () ")"))) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (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: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (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))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (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) (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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)) right: (binary_expression left: (identifier) right: (identifier)))) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (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) (number_literal) (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (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: (number_literal)) (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (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) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (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))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (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 (subscript_expression argument: (identifier) index: (number_literal)) (identifier) (identifier)))))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (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))))) right: (char_literal (escape_sequence)))) 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 (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (goto_statement label: (statement_identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (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 (identifier) (identifier) (identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) 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: (false)) right: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (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))))) right: (identifier))) (expression_statement (assignment_expression left: (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))))) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier)))) (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))))) (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)))) (return_statement (identifier)))))

undefined4
MASKED(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            byte param_5,int param_6,char param_7,undefined4 param_8,undefined8 param_9)

{
  int iVar1;
  undefined *puVar2;
  int *piVar3;
  int iVar4;
  undefined1 *puVar5;
  undefined1 *puVar6;
  code *pcVar7;
  undefined1 *puVar8;
  undefined1 auStack_c8 [16];
  undefined4 local_b8 [2];
  undefined8 local_b0;
  undefined1 auStack_a8 [64];
  undefined1 *local_60 [2];
  undefined1 auStack_58 [16];
  undefined1 auStack_48 [8];
  uint local_40;
  int local_3c;
  undefined1 *local_38;
  undefined1 *local_34;
  
  local_40 = (uint)param_5;
  local_3c = (int)param_7;
  (*(code *)PTR_locale_004c2d24)(auStack_48,param_6 + 0x6c);
                    /* try { // try from 003c327c to 003c3347 has its CatchHandler @ 003c34dc */
  piVar3 = (int *)(*(code *)PTR_use_facet<std_ctype<char>>_004c2c84)(auStack_48);
  puVar8 = auStack_c8;
  puVar6 = auStack_a8;
  local_60[0] = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();
  puVar2 = PTR_UINT_004c12dc;
  local_b8[0] = 0;
  local_b0 = param_9;
  iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,0x40,PTR_UINT_004c12dc + -0x398c)
  ;
  if (0x3f < iVar4) {
    iVar1 = -(iVar4 + 8U & 0xfffffff8);
    puVar8 = auStack_c8 + iVar1;
    puVar6 = auStack_a8 + iVar1;
    puVar5 = (undefined1 *)(*(code *)PTR__S_get_c_locale_004c13c0)();
    *(undefined8 *)(auStack_a8 + iVar1 + -8) = param_9;
    *(undefined4 *)((int)local_b8 + iVar1) = 0;
    local_60[0] = puVar5;
    iVar4 = (*(code *)PTR___convert_from_v_004c2d28)(local_60,puVar6,iVar4 + 1,puVar2 + -0x398c);
  }
  local_60[0] = auStack_58;
  (*(code *)PTR__M_construct_004c32d0)(local_60,iVar4,0);
  local_34 = puVar6 + iVar4;
  local_38 = local_60[0];
  if (*(char *)(piVar3 + 7) == '\x01') {
    if (puVar6 + iVar4 != puVar6) {
      (*(code *)PTR_memcpy_004c5ba8)(local_60[0],puVar6,iVar4);
    }
    goto LAB_003c33a0;
  }
  if (*(char *)(piVar3 + 7) == '\0') {
    (*(code *)PTR__M_widen_init_004c22c0)(piVar3);
    pcVar7 = *(code **)(*piVar3 + 0x1c);
    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) goto LAB_003c3468;
  }
  else {
    pcVar7 = *(code **)(*piVar3 + 0x1c);
    if (pcVar7 != (code *)PTR_do_widen_004c2bf0) {
LAB_003c3468:
      (*pcVar7)(piVar3,puVar6,local_34,local_38);
      goto LAB_003c33a0;
    }
  }
  if (puVar6 + iVar4 != puVar6) {
    (*(code *)PTR_memcpy_004c5ba8)(local_38,puVar6,iVar4);
  }
LAB_003c33a0:
  iVar4 = local_3c;
  pcVar7 = (code *)PTR__M_insert<true>_004c32d8;
  if (local_40 == 0) {
    pcVar7 = (code *)PTR__M_insert<false>_004c32d4;
  }
  *(undefined1 ***)(puVar8 + 0x18) = local_60;
  *(int *)(puVar8 + 0x14) = iVar4;
                    /* try { // try from 003c33cc to 003c3477 has its CatchHandler @ 003c34a0 */
  *(int *)(puVar8 + 0x10) = param_6;
  (*pcVar7)(param_1,param_2,param_3,param_4);
  if (local_60[0] != auStack_58) {
    (*(code *)PTR_operator_delete_004c12fc)();
  }
  (*(code *)PTR__locale_004c22f0)(auStack_48);
  return param_1;
}

