
/* std::__timepunct<wchar_t>::__timepunct(__locale_struct*, char const*, unsigned int) */

void __thiscall
std::__timepunct<wchar_t>::__timepunct
          (__timepunct<wchar_t> *this,__locale_struct *param_1,char *param_2,uint param_3)

{
  int iVar1;
  undefined4 uVar2;
  int in_t9;
  code *pcVar3;
  
  iVar1 = *(int *)(in_t9 + 0x126df4);
  pcVar3 = *(code **)(in_t9 + 0x126b24);
  *(uint *)(this + 4) = (uint)(param_3 != 0);
  *(undefined4 *)(this + 8) = 0;
  *(undefined4 *)(this + 0xc) = 0;
  *(int *)this = iVar1 + 8;
  *(undefined4 *)(this + 0x10) = 0;
  uVar2 = (*pcVar3)();
  iVar1 = (**(code **)(in_t9 + 0x1299cc))(param_2,uVar2);
  if (iVar1 == 0) {
    *(undefined4 *)(this + 0x10) = uVar2;
  }
  else {
    iVar1 = (**(code **)(in_t9 + 0x129b00))(param_2);
                    /* try { // try from 0039c168 to 0039c16f has its CatchHandler @ 0039c194 */
    uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1);
    uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_2,iVar1 + 1);
    *(undefined4 *)(this + 0x10) = uVar2;
  }
                    /* try { // try from 0039c128 to 0039c12f has its CatchHandler @ 0039c1b8 */
  _M_initialize_timepunct(this,param_1);
  return;
}



void FUN_0039c09c(__timepunct<wchar_t> *param_1,__locale_struct *param_2,undefined4 param_3,
                 int param_4)

{
  int iVar1;
  undefined4 uVar2;
  int in_t9;
  code *pcVar3;
  
  iVar1 = *(int *)(in_t9 + 0x126df4);
  pcVar3 = *(code **)(in_t9 + 0x126b24);
  *(uint *)(param_1 + 4) = (uint)(param_4 != 0);
  *(undefined4 *)(param_1 + 8) = 0;
  *(undefined4 *)(param_1 + 0xc) = 0;
  *(int *)param_1 = iVar1 + 8;
  *(undefined4 *)(param_1 + 0x10) = 0;
  uVar2 = (*pcVar3)();
  iVar1 = (**(code **)(in_t9 + 0x1299cc))(param_3,uVar2);
  if (iVar1 == 0) {
    *(undefined4 *)(param_1 + 0x10) = uVar2;
  }
  else {
    iVar1 = (**(code **)(in_t9 + 0x129b00))(param_3);
                    /* try { // try from 0039c168 to 0039c16f has its CatchHandler @ 0039c194 */
    uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1);
    uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_3,iVar1 + 1);
    *(undefined4 *)(param_1 + 0x10) = uVar2;
  }
                    /* try { // try from 0039c128 to 0039c12f has its CatchHandler @ 0039c1b8 */
  std::__timepunct<wchar_t>::_M_initialize_timepunct(param_1,param_2);
  return;
}


lui gp,0x13
addiu gp,gp,-0x2e5c
addu gp,gp,t9
lw v0,-0x63b0(gp)
addiu sp,sp,-0x30
lw t9,-0x6680(gp)
sltu a3,zero,a3
addiu v0,v0,0x8
sw gp,0x10(sp)
sw ra,0x2c(sp)
sw s3,0x24(sp)
or s3,a1,zero
sw s2,0x20(sp)
or s2,a2,zero
sw s1,0x1c(sp)
sw s0,0x18(sp)
or s0,a0,zero
sw s4,0x28(sp)
sw a3,0x4(a0)
sw zero,0x8(a0)
sw zero,0xc(a0)
sw v0,0x0(a0)
jalr t9
_sw zero,0x10(a0)
or a0,s2,zero
lw gp,0x10(sp)
or a1,v0,zero
lw t9,-0x37d8(gp)
jalr t9
_or s1,v0,zero
bne v0,zero,0x0039c150
_lw gp,0x10(sp)
sw s1,0x10(s0)
lw t9,-0x6324(gp)
or a1,s3,zero
bal 0x0038e6ec
_or a0,s0,zero
lw ra,0x2c(sp)
lw s4,0x28(sp)
lw s3,0x24(sp)
lw s2,0x20(sp)
lw s1,0x1c(sp)
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x30
lw t9,-0x36a4(gp)
jalr t9
_or a0,s2,zero
lw gp,0x10(sp)
addiu s4,v0,0x1
lw t9,-0x7ef4(gp)
jalr t9
_or a0,s4,zero
lw gp,0x10(sp)
or a2,s4,zero
or a1,s2,zero
lw t9,-0x3698(gp)
jalr t9
_or a0,v0,zero
lw gp,0x10(sp)
b 0x0039c120
_sw v0,0x10(s0)
(translation_unit "void FUN_0039c09c(__timepunct<wchar_t> *param_1,__locale_struct *param_2,undefined4 param_3,\n                 int param_4)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int in_t9;\n  code *pcVar3;\n  \n  iVar1 = *(int *)(in_t9 + 0x126df4);\n  pcVar3 = *(code **)(in_t9 + 0x126b24);\n  *(uint *)(param_1 + 4) = (uint)(param_4 != 0);\n  *(undefined4 *)(param_1 + 8) = 0;\n  *(undefined4 *)(param_1 + 0xc) = 0;\n  *(int *)param_1 = iVar1 + 8;\n  *(undefined4 *)(param_1 + 0x10) = 0;\n  uVar2 = (*pcVar3)();\n  iVar1 = (**(code **)(in_t9 + 0x1299cc))(param_3,uVar2);\n  if (iVar1 == 0) {\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }\n  else {\n    iVar1 = (**(code **)(in_t9 + 0x129b00))(param_3);\n                    /* try { // try from 0039c168 to 0039c16f has its CatchHandler @ 0039c194 */\n    uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1);\n    uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_3,iVar1 + 1);\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }\n                    /* try { // try from 0039c128 to 0039c12f has its CatchHandler @ 0039c1b8 */\n  std::__timepunct<wchar_t>::_M_initialize_timepunct(param_1,param_2);\n  return;\n}\n\n" (function_definition "void FUN_0039c09c(__timepunct<wchar_t> *param_1,__locale_struct *param_2,undefined4 param_3,\n                 int param_4)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int in_t9;\n  code *pcVar3;\n  \n  iVar1 = *(int *)(in_t9 + 0x126df4);\n  pcVar3 = *(code **)(in_t9 + 0x126b24);\n  *(uint *)(param_1 + 4) = (uint)(param_4 != 0);\n  *(undefined4 *)(param_1 + 8) = 0;\n  *(undefined4 *)(param_1 + 0xc) = 0;\n  *(int *)param_1 = iVar1 + 8;\n  *(undefined4 *)(param_1 + 0x10) = 0;\n  uVar2 = (*pcVar3)();\n  iVar1 = (**(code **)(in_t9 + 0x1299cc))(param_3,uVar2);\n  if (iVar1 == 0) {\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }\n  else {\n    iVar1 = (**(code **)(in_t9 + 0x129b00))(param_3);\n                    /* try { // try from 0039c168 to 0039c16f has its CatchHandler @ 0039c194 */\n    uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1);\n    uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_3,iVar1 + 1);\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }\n                    /* try { // try from 0039c128 to 0039c12f has its CatchHandler @ 0039c1b8 */\n  std::__timepunct<wchar_t>::_M_initialize_timepunct(param_1,param_2);\n  return;\n}" primitive_type (function_declarator "FUN_0039c09c(__timepunct<wchar_t> *param_1,__locale_struct *param_2,undefined4 param_3,\n                 int param_4)" identifier (parameter_list "(__timepunct<wchar_t> *param_1,__locale_struct *param_2,undefined4 param_3,\n                 int param_4)" ( (parameter_declaration "__timepunct<wchar_t> *param_1" type_identifier (ERROR "<wchar_t>" < identifier >) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "__locale_struct *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  int in_t9;\n  code *pcVar3;\n  \n  iVar1 = *(int *)(in_t9 + 0x126df4);\n  pcVar3 = *(code **)(in_t9 + 0x126b24);\n  *(uint *)(param_1 + 4) = (uint)(param_4 != 0);\n  *(undefined4 *)(param_1 + 8) = 0;\n  *(undefined4 *)(param_1 + 0xc) = 0;\n  *(int *)param_1 = iVar1 + 8;\n  *(undefined4 *)(param_1 + 0x10) = 0;\n  uVar2 = (*pcVar3)();\n  iVar1 = (**(code **)(in_t9 + 0x1299cc))(param_3,uVar2);\n  if (iVar1 == 0) {\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }\n  else {\n    iVar1 = (**(code **)(in_t9 + 0x129b00))(param_3);\n                    /* try { // try from 0039c168 to 0039c16f has its CatchHandler @ 0039c194 */\n    uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1);\n    uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_3,iVar1 + 1);\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }\n                    /* try { // try from 0039c128 to 0039c12f has its CatchHandler @ 0039c1b8 */\n  std::__timepunct<wchar_t>::_M_initialize_timepunct(param_1,param_2);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int in_t9;" primitive_type identifier ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (expression_statement "iVar1 = *(int *)(in_t9 + 0x126df4);" (assignment_expression "iVar1 = *(int *)(in_t9 + 0x126df4)" identifier = (pointer_expression "*(int *)(in_t9 + 0x126df4)" * (cast_expression "(int *)(in_t9 + 0x126df4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x126df4)" ( (binary_expression "in_t9 + 0x126df4" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = *(code **)(in_t9 + 0x126b24);" (assignment_expression "pcVar3 = *(code **)(in_t9 + 0x126b24)" identifier = (pointer_expression "*(code **)(in_t9 + 0x126b24)" * (cast_expression "(code **)(in_t9 + 0x126b24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x126b24)" ( (binary_expression "in_t9 + 0x126b24" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(param_1 + 4) = (uint)(param_4 != 0);" (assignment_expression "*(uint *)(param_1 + 4) = (uint)(param_4 != 0)" (pointer_expression "*(uint *)(param_1 + 4)" * (cast_expression "(uint *)(param_1 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (call_expression "(uint)(param_4 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )))) ;) (expression_statement "*(undefined4 *)(param_1 + 8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 8) = 0" (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xc) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)param_1 = iVar1 + 8;" (assignment_expression "*(int *)param_1 = iVar1 + 8" (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "iVar1 + 8" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(param_1 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x10) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar2 = (*pcVar3)();" (assignment_expression "uVar2 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "iVar1 = (**(code **)(in_t9 + 0x1299cc))(param_3,uVar2);" (assignment_expression "iVar1 = (**(code **)(in_t9 + 0x1299cc))(param_3,uVar2)" identifier = (call_expression "(**(code **)(in_t9 + 0x1299cc))(param_3,uVar2)" (parenthesized_expression "(**(code **)(in_t9 + 0x1299cc))" ( (pointer_expression "**(code **)(in_t9 + 0x1299cc)" * (pointer_expression "*(code **)(in_t9 + 0x1299cc)" * (cast_expression "(code **)(in_t9 + 0x1299cc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x1299cc)" ( (binary_expression "in_t9 + 0x1299cc" identifier + number_literal) ))))) )) (argument_list "(param_3,uVar2)" ( identifier , identifier )))) ;) (if_statement "if (iVar1 == 0) {\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }\n  else {\n    iVar1 = (**(code **)(in_t9 + 0x129b00))(param_3);\n                    /* try { // try from 0039c168 to 0039c16f has its CatchHandler @ 0039c194 */\n    uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1);\n    uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_3,iVar1 + 1);\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }" { (expression_statement "*(undefined4 *)(param_1 + 0x10) = uVar2;" (assignment_expression "*(undefined4 *)(param_1 + 0x10) = uVar2" (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n    iVar1 = (**(code **)(in_t9 + 0x129b00))(param_3);\n                    /* try { // try from 0039c168 to 0039c16f has its CatchHandler @ 0039c194 */\n    uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1);\n    uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_3,iVar1 + 1);\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }" else (compound_statement "{\n    iVar1 = (**(code **)(in_t9 + 0x129b00))(param_3);\n                    /* try { // try from 0039c168 to 0039c16f has its CatchHandler @ 0039c194 */\n    uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1);\n    uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_3,iVar1 + 1);\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }" { (expression_statement "iVar1 = (**(code **)(in_t9 + 0x129b00))(param_3);" (assignment_expression "iVar1 = (**(code **)(in_t9 + 0x129b00))(param_3)" identifier = (call_expression "(**(code **)(in_t9 + 0x129b00))(param_3)" (parenthesized_expression "(**(code **)(in_t9 + 0x129b00))" ( (pointer_expression "**(code **)(in_t9 + 0x129b00)" * (pointer_expression "*(code **)(in_t9 + 0x129b00)" * (cast_expression "(code **)(in_t9 + 0x129b00)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x129b00)" ( (binary_expression "in_t9 + 0x129b00" identifier + number_literal) ))))) )) (argument_list "(param_3)" ( identifier )))) ;) comment (expression_statement "uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1);" (assignment_expression "uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1)" identifier = (call_expression "(**(code **)(in_t9 + 0x1252b0))(iVar1 + 1)" (parenthesized_expression "(**(code **)(in_t9 + 0x1252b0))" ( (pointer_expression "**(code **)(in_t9 + 0x1252b0)" * (pointer_expression "*(code **)(in_t9 + 0x1252b0)" * (cast_expression "(code **)(in_t9 + 0x1252b0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x1252b0)" ( (binary_expression "in_t9 + 0x1252b0" identifier + number_literal) ))))) )) (argument_list "(iVar1 + 1)" ( (binary_expression "iVar1 + 1" identifier + number_literal) )))) ;) (expression_statement "uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_3,iVar1 + 1);" (assignment_expression "uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_3,iVar1 + 1)" identifier = (call_expression "(**(code **)(in_t9 + 0x129b0c))(uVar2,param_3,iVar1 + 1)" (parenthesized_expression "(**(code **)(in_t9 + 0x129b0c))" ( (pointer_expression "**(code **)(in_t9 + 0x129b0c)" * (pointer_expression "*(code **)(in_t9 + 0x129b0c)" * (cast_expression "(code **)(in_t9 + 0x129b0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x129b0c)" ( (binary_expression "in_t9 + 0x129b0c" identifier + number_literal) ))))) )) (argument_list "(uVar2,param_3,iVar1 + 1)" ( identifier , identifier , (binary_expression "iVar1 + 1" identifier + number_literal) )))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x10) = uVar2;" (assignment_expression "*(undefined4 *)(param_1 + 0x10) = uVar2" (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = identifier) ;) }))) comment (labeled_statement "std::__timepunct<wchar_t>::_M_initialize_timepunct(param_1,param_2);" statement_identifier (ERROR "::__timepunct<wchar_t>:" : : (binary_expression "__timepunct<wchar_t" identifier < identifier) > :) : (expression_statement "_M_initialize_timepunct(param_1,param_2);" (call_expression "_M_initialize_timepunct(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier ))) ;)) (return_statement "return;" return ;) })))
(translation_unit "/* std::__timepunct<wchar_t>::__timepunct(__locale_struct*, char const*, unsigned int) */\n\nvoid __thiscall\nstd::__timepunct<wchar_t>::__timepunct\n          (__timepunct<wchar_t> *this,__locale_struct *param_1,char *param_2,uint param_3)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int in_t9;\n  code *pcVar3;\n  \n  iVar1 = *(int *)(in_t9 + 0x126df4);\n  pcVar3 = *(code **)(in_t9 + 0x126b24);\n  *(uint *)(this + 4) = (uint)(param_3 != 0);\n  *(undefined4 *)(this + 8) = 0;\n  *(undefined4 *)(this + 0xc) = 0;\n  *(int *)this = iVar1 + 8;\n  *(undefined4 *)(this + 0x10) = 0;\n  uVar2 = (*pcVar3)();\n  iVar1 = (**(code **)(in_t9 + 0x1299cc))(param_2,uVar2);\n  if (iVar1 == 0) {\n    *(undefined4 *)(this + 0x10) = uVar2;\n  }\n  else {\n    iVar1 = (**(code **)(in_t9 + 0x129b00))(param_2);\n                    /* try { // try from 0039c168 to 0039c16f has its CatchHandler @ 0039c194 */\n    uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1);\n    uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_2,iVar1 + 1);\n    *(undefined4 *)(this + 0x10) = uVar2;\n  }\n                    /* try { // try from 0039c128 to 0039c12f has its CatchHandler @ 0039c1b8 */\n  _M_initialize_timepunct(this,param_1);\n  return;\n}\n\n" comment (function_definition "void __thiscall\nstd::__timepunct<wchar_t>::__timepunct\n          (__timepunct<wchar_t> *this,__locale_struct *param_1,char *param_2,uint param_3)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int in_t9;\n  code *pcVar3;\n  \n  iVar1 = *(int *)(in_t9 + 0x126df4);\n  pcVar3 = *(code **)(in_t9 + 0x126b24);\n  *(uint *)(this + 4) = (uint)(param_3 != 0);\n  *(undefined4 *)(this + 8) = 0;\n  *(undefined4 *)(this + 0xc) = 0;\n  *(int *)this = iVar1 + 8;\n  *(undefined4 *)(this + 0x10) = 0;\n  uVar2 = (*pcVar3)();\n  iVar1 = (**(code **)(in_t9 + 0x1299cc))(param_2,uVar2);\n  if (iVar1 == 0) {\n    *(undefined4 *)(this + 0x10) = uVar2;\n  }\n  else {\n    iVar1 = (**(code **)(in_t9 + 0x129b00))(param_2);\n                    /* try { // try from 0039c168 to 0039c16f has its CatchHandler @ 0039c194 */\n    uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1);\n    uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_2,iVar1 + 1);\n    *(undefined4 *)(this + 0x10) = uVar2;\n  }\n                    /* try { // try from 0039c128 to 0039c12f has its CatchHandler @ 0039c1b8 */\n  _M_initialize_timepunct(this,param_1);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::__timepunct<wchar_t>::" identifier : : identifier < identifier > : :) (function_declarator "__timepunct\n          (__timepunct<wchar_t> *this,__locale_struct *param_1,char *param_2,uint param_3)" identifier (parameter_list "(__timepunct<wchar_t> *this,__locale_struct *param_1,char *param_2,uint param_3)" ( (parameter_declaration "__timepunct<wchar_t> *this" type_identifier (ERROR "<wchar_t>" < identifier >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "__locale_struct *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  int in_t9;\n  code *pcVar3;\n  \n  iVar1 = *(int *)(in_t9 + 0x126df4);\n  pcVar3 = *(code **)(in_t9 + 0x126b24);\n  *(uint *)(this + 4) = (uint)(param_3 != 0);\n  *(undefined4 *)(this + 8) = 0;\n  *(undefined4 *)(this + 0xc) = 0;\n  *(int *)this = iVar1 + 8;\n  *(undefined4 *)(this + 0x10) = 0;\n  uVar2 = (*pcVar3)();\n  iVar1 = (**(code **)(in_t9 + 0x1299cc))(param_2,uVar2);\n  if (iVar1 == 0) {\n    *(undefined4 *)(this + 0x10) = uVar2;\n  }\n  else {\n    iVar1 = (**(code **)(in_t9 + 0x129b00))(param_2);\n                    /* try { // try from 0039c168 to 0039c16f has its CatchHandler @ 0039c194 */\n    uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1);\n    uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_2,iVar1 + 1);\n    *(undefined4 *)(this + 0x10) = uVar2;\n  }\n                    /* try { // try from 0039c128 to 0039c12f has its CatchHandler @ 0039c1b8 */\n  _M_initialize_timepunct(this,param_1);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int in_t9;" primitive_type identifier ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (expression_statement "iVar1 = *(int *)(in_t9 + 0x126df4);" (assignment_expression "iVar1 = *(int *)(in_t9 + 0x126df4)" identifier = (pointer_expression "*(int *)(in_t9 + 0x126df4)" * (cast_expression "(int *)(in_t9 + 0x126df4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x126df4)" ( (binary_expression "in_t9 + 0x126df4" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = *(code **)(in_t9 + 0x126b24);" (assignment_expression "pcVar3 = *(code **)(in_t9 + 0x126b24)" identifier = (pointer_expression "*(code **)(in_t9 + 0x126b24)" * (cast_expression "(code **)(in_t9 + 0x126b24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x126b24)" ( (binary_expression "in_t9 + 0x126b24" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(this + 4) = (uint)(param_3 != 0);" (assignment_expression "*(uint *)(this + 4) = (uint)(param_3 != 0)" (pointer_expression "*(uint *)(this + 4)" * (cast_expression "(uint *)(this + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (call_expression "(uint)(param_3 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )))) ;) (expression_statement "*(undefined4 *)(this + 8) = 0;" (assignment_expression "*(undefined4 *)(this + 8) = 0" (pointer_expression "*(undefined4 *)(this + 8)" * (cast_expression "(undefined4 *)(this + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0xc) = 0;" (assignment_expression "*(undefined4 *)(this + 0xc) = 0" (pointer_expression "*(undefined4 *)(this + 0xc)" * (cast_expression "(undefined4 *)(this + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)this = iVar1 + 8;" (assignment_expression "*(int *)this = iVar1 + 8" (pointer_expression "*(int *)this" * (cast_expression "(int *)this" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "iVar1 + 8" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(this + 0x10) = 0;" (assignment_expression "*(undefined4 *)(this + 0x10) = 0" (pointer_expression "*(undefined4 *)(this + 0x10)" * (cast_expression "(undefined4 *)(this + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar2 = (*pcVar3)();" (assignment_expression "uVar2 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "iVar1 = (**(code **)(in_t9 + 0x1299cc))(param_2,uVar2);" (assignment_expression "iVar1 = (**(code **)(in_t9 + 0x1299cc))(param_2,uVar2)" identifier = (call_expression "(**(code **)(in_t9 + 0x1299cc))(param_2,uVar2)" (parenthesized_expression "(**(code **)(in_t9 + 0x1299cc))" ( (pointer_expression "**(code **)(in_t9 + 0x1299cc)" * (pointer_expression "*(code **)(in_t9 + 0x1299cc)" * (cast_expression "(code **)(in_t9 + 0x1299cc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x1299cc)" ( (binary_expression "in_t9 + 0x1299cc" identifier + number_literal) ))))) )) (argument_list "(param_2,uVar2)" ( identifier , identifier )))) ;) (if_statement "if (iVar1 == 0) {\n    *(undefined4 *)(this + 0x10) = uVar2;\n  }\n  else {\n    iVar1 = (**(code **)(in_t9 + 0x129b00))(param_2);\n                    /* try { // try from 0039c168 to 0039c16f has its CatchHandler @ 0039c194 */\n    uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1);\n    uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_2,iVar1 + 1);\n    *(undefined4 *)(this + 0x10) = uVar2;\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    *(undefined4 *)(this + 0x10) = uVar2;\n  }" { (expression_statement "*(undefined4 *)(this + 0x10) = uVar2;" (assignment_expression "*(undefined4 *)(this + 0x10) = uVar2" (pointer_expression "*(undefined4 *)(this + 0x10)" * (cast_expression "(undefined4 *)(this + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n    iVar1 = (**(code **)(in_t9 + 0x129b00))(param_2);\n                    /* try { // try from 0039c168 to 0039c16f has its CatchHandler @ 0039c194 */\n    uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1);\n    uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_2,iVar1 + 1);\n    *(undefined4 *)(this + 0x10) = uVar2;\n  }" else (compound_statement "{\n    iVar1 = (**(code **)(in_t9 + 0x129b00))(param_2);\n                    /* try { // try from 0039c168 to 0039c16f has its CatchHandler @ 0039c194 */\n    uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1);\n    uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_2,iVar1 + 1);\n    *(undefined4 *)(this + 0x10) = uVar2;\n  }" { (expression_statement "iVar1 = (**(code **)(in_t9 + 0x129b00))(param_2);" (assignment_expression "iVar1 = (**(code **)(in_t9 + 0x129b00))(param_2)" identifier = (call_expression "(**(code **)(in_t9 + 0x129b00))(param_2)" (parenthesized_expression "(**(code **)(in_t9 + 0x129b00))" ( (pointer_expression "**(code **)(in_t9 + 0x129b00)" * (pointer_expression "*(code **)(in_t9 + 0x129b00)" * (cast_expression "(code **)(in_t9 + 0x129b00)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x129b00)" ( (binary_expression "in_t9 + 0x129b00" identifier + number_literal) ))))) )) (argument_list "(param_2)" ( identifier )))) ;) comment (expression_statement "uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1);" (assignment_expression "uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1)" identifier = (call_expression "(**(code **)(in_t9 + 0x1252b0))(iVar1 + 1)" (parenthesized_expression "(**(code **)(in_t9 + 0x1252b0))" ( (pointer_expression "**(code **)(in_t9 + 0x1252b0)" * (pointer_expression "*(code **)(in_t9 + 0x1252b0)" * (cast_expression "(code **)(in_t9 + 0x1252b0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x1252b0)" ( (binary_expression "in_t9 + 0x1252b0" identifier + number_literal) ))))) )) (argument_list "(iVar1 + 1)" ( (binary_expression "iVar1 + 1" identifier + number_literal) )))) ;) (expression_statement "uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_2,iVar1 + 1);" (assignment_expression "uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_2,iVar1 + 1)" identifier = (call_expression "(**(code **)(in_t9 + 0x129b0c))(uVar2,param_2,iVar1 + 1)" (parenthesized_expression "(**(code **)(in_t9 + 0x129b0c))" ( (pointer_expression "**(code **)(in_t9 + 0x129b0c)" * (pointer_expression "*(code **)(in_t9 + 0x129b0c)" * (cast_expression "(code **)(in_t9 + 0x129b0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x129b0c)" ( (binary_expression "in_t9 + 0x129b0c" identifier + number_literal) ))))) )) (argument_list "(uVar2,param_2,iVar1 + 1)" ( identifier , identifier , (binary_expression "iVar1 + 1" identifier + number_literal) )))) ;) (expression_statement "*(undefined4 *)(this + 0x10) = uVar2;" (assignment_expression "*(undefined4 *)(this + 0x10) = uVar2" (pointer_expression "*(undefined4 *)(this + 0x10)" * (cast_expression "(undefined4 *)(this + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) = identifier) ;) }))) comment (expression_statement "_M_initialize_timepunct(this,param_1);" (call_expression "_M_initialize_timepunct(this,param_1)" identifier (argument_list "(this,param_1)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0039c09c(__timepunct<wchar_t> *param_1,__locale_struct *param_2,undefined4 param_3,\n                 int param_4)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int in_t9;\n  code *pcVar3;\n  \n  iVar1 = *(int *)(in_t9 + 0x126df4);\n  pcVar3 = *(code **)(in_t9 + 0x126b24);\n  *(uint *)(param_1 + 4) = (uint)(param_4 != 0);\n  *(undefined4 *)(param_1 + 8) = 0;\n  *(undefined4 *)(param_1 + 0xc) = 0;\n  *(int *)param_1 = iVar1 + 8;\n  *(undefined4 *)(param_1 + 0x10) = 0;\n  uVar2 = (*pcVar3)();\n  iVar1 = (**(code **)(in_t9 + 0x1299cc))(param_3,uVar2);\n  if (iVar1 == 0) {\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }\n  else {\n    iVar1 = (**(code **)(in_t9 + 0x129b00))(param_3);\n                    \n    uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1);\n    uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_3,iVar1 + 1);\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }\n                    \n  std::__timepunct<wchar_t>::_M_initialize_timepunct(param_1,param_2);\n  return;\n}\n\n" (function_definition "void FUN_0039c09c(__timepunct<wchar_t> *param_1,__locale_struct *param_2,undefined4 param_3,\n                 int param_4)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int in_t9;\n  code *pcVar3;\n  \n  iVar1 = *(int *)(in_t9 + 0x126df4);\n  pcVar3 = *(code **)(in_t9 + 0x126b24);\n  *(uint *)(param_1 + 4) = (uint)(param_4 != 0);\n  *(undefined4 *)(param_1 + 8) = 0;\n  *(undefined4 *)(param_1 + 0xc) = 0;\n  *(int *)param_1 = iVar1 + 8;\n  *(undefined4 *)(param_1 + 0x10) = 0;\n  uVar2 = (*pcVar3)();\n  iVar1 = (**(code **)(in_t9 + 0x1299cc))(param_3,uVar2);\n  if (iVar1 == 0) {\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }\n  else {\n    iVar1 = (**(code **)(in_t9 + 0x129b00))(param_3);\n                    \n    uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1);\n    uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_3,iVar1 + 1);\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }\n                    \n  std::__timepunct<wchar_t>::_M_initialize_timepunct(param_1,param_2);\n  return;\n}" primitive_type (function_declarator "FUN_0039c09c(__timepunct<wchar_t> *param_1,__locale_struct *param_2,undefined4 param_3,\n                 int param_4)" identifier (parameter_list "(__timepunct<wchar_t> *param_1,__locale_struct *param_2,undefined4 param_3,\n                 int param_4)" ( (parameter_declaration "__timepunct<wchar_t> *param_1" type_identifier (ERROR "<wchar_t>" < identifier >) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "__locale_struct *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  int in_t9;\n  code *pcVar3;\n  \n  iVar1 = *(int *)(in_t9 + 0x126df4);\n  pcVar3 = *(code **)(in_t9 + 0x126b24);\n  *(uint *)(param_1 + 4) = (uint)(param_4 != 0);\n  *(undefined4 *)(param_1 + 8) = 0;\n  *(undefined4 *)(param_1 + 0xc) = 0;\n  *(int *)param_1 = iVar1 + 8;\n  *(undefined4 *)(param_1 + 0x10) = 0;\n  uVar2 = (*pcVar3)();\n  iVar1 = (**(code **)(in_t9 + 0x1299cc))(param_3,uVar2);\n  if (iVar1 == 0) {\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }\n  else {\n    iVar1 = (**(code **)(in_t9 + 0x129b00))(param_3);\n                    \n    uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1);\n    uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_3,iVar1 + 1);\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }\n                    \n  std::__timepunct<wchar_t>::_M_initialize_timepunct(param_1,param_2);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int in_t9;" primitive_type identifier ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (expression_statement "iVar1 = *(int *)(in_t9 + 0x126df4);" (assignment_expression "iVar1 = *(int *)(in_t9 + 0x126df4)" identifier = (pointer_expression "*(int *)(in_t9 + 0x126df4)" * (cast_expression "(int *)(in_t9 + 0x126df4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x126df4)" ( (binary_expression "in_t9 + 0x126df4" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = *(code **)(in_t9 + 0x126b24);" (assignment_expression "pcVar3 = *(code **)(in_t9 + 0x126b24)" identifier = (pointer_expression "*(code **)(in_t9 + 0x126b24)" * (cast_expression "(code **)(in_t9 + 0x126b24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x126b24)" ( (binary_expression "in_t9 + 0x126b24" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(param_1 + 4) = (uint)(param_4 != 0);" (assignment_expression "*(uint *)(param_1 + 4) = (uint)(param_4 != 0)" (pointer_expression "*(uint *)(param_1 + 4)" * (cast_expression "(uint *)(param_1 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (call_expression "(uint)(param_4 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )))) ;) (expression_statement "*(undefined4 *)(param_1 + 8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 8) = 0" (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xc) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)param_1 = iVar1 + 8;" (assignment_expression "*(int *)param_1 = iVar1 + 8" (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "iVar1 + 8" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(param_1 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x10) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar2 = (*pcVar3)();" (assignment_expression "uVar2 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "iVar1 = (**(code **)(in_t9 + 0x1299cc))(param_3,uVar2);" (assignment_expression "iVar1 = (**(code **)(in_t9 + 0x1299cc))(param_3,uVar2)" identifier = (call_expression "(**(code **)(in_t9 + 0x1299cc))(param_3,uVar2)" (parenthesized_expression "(**(code **)(in_t9 + 0x1299cc))" ( (pointer_expression "**(code **)(in_t9 + 0x1299cc)" * (pointer_expression "*(code **)(in_t9 + 0x1299cc)" * (cast_expression "(code **)(in_t9 + 0x1299cc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x1299cc)" ( (binary_expression "in_t9 + 0x1299cc" identifier + number_literal) ))))) )) (argument_list "(param_3,uVar2)" ( identifier , identifier )))) ;) (if_statement "if (iVar1 == 0) {\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }\n  else {\n    iVar1 = (**(code **)(in_t9 + 0x129b00))(param_3);\n                    \n    uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1);\n    uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_3,iVar1 + 1);\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }" { (expression_statement "*(undefined4 *)(param_1 + 0x10) = uVar2;" (assignment_expression "*(undefined4 *)(param_1 + 0x10) = uVar2" (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n    iVar1 = (**(code **)(in_t9 + 0x129b00))(param_3);\n                    \n    uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1);\n    uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_3,iVar1 + 1);\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }" else (compound_statement "{\n    iVar1 = (**(code **)(in_t9 + 0x129b00))(param_3);\n                    \n    uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1);\n    uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_3,iVar1 + 1);\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }" { (expression_statement "iVar1 = (**(code **)(in_t9 + 0x129b00))(param_3);" (assignment_expression "iVar1 = (**(code **)(in_t9 + 0x129b00))(param_3)" identifier = (call_expression "(**(code **)(in_t9 + 0x129b00))(param_3)" (parenthesized_expression "(**(code **)(in_t9 + 0x129b00))" ( (pointer_expression "**(code **)(in_t9 + 0x129b00)" * (pointer_expression "*(code **)(in_t9 + 0x129b00)" * (cast_expression "(code **)(in_t9 + 0x129b00)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x129b00)" ( (binary_expression "in_t9 + 0x129b00" identifier + number_literal) ))))) )) (argument_list "(param_3)" ( identifier )))) ;) (expression_statement "uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1);" (assignment_expression "uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1)" identifier = (call_expression "(**(code **)(in_t9 + 0x1252b0))(iVar1 + 1)" (parenthesized_expression "(**(code **)(in_t9 + 0x1252b0))" ( (pointer_expression "**(code **)(in_t9 + 0x1252b0)" * (pointer_expression "*(code **)(in_t9 + 0x1252b0)" * (cast_expression "(code **)(in_t9 + 0x1252b0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x1252b0)" ( (binary_expression "in_t9 + 0x1252b0" identifier + number_literal) ))))) )) (argument_list "(iVar1 + 1)" ( (binary_expression "iVar1 + 1" identifier + number_literal) )))) ;) (expression_statement "uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_3,iVar1 + 1);" (assignment_expression "uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_3,iVar1 + 1)" identifier = (call_expression "(**(code **)(in_t9 + 0x129b0c))(uVar2,param_3,iVar1 + 1)" (parenthesized_expression "(**(code **)(in_t9 + 0x129b0c))" ( (pointer_expression "**(code **)(in_t9 + 0x129b0c)" * (pointer_expression "*(code **)(in_t9 + 0x129b0c)" * (cast_expression "(code **)(in_t9 + 0x129b0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x129b0c)" ( (binary_expression "in_t9 + 0x129b0c" identifier + number_literal) ))))) )) (argument_list "(uVar2,param_3,iVar1 + 1)" ( identifier , identifier , (binary_expression "iVar1 + 1" identifier + number_literal) )))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x10) = uVar2;" (assignment_expression "*(undefined4 *)(param_1 + 0x10) = uVar2" (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = identifier) ;) }))) (labeled_statement "std::__timepunct<wchar_t>::_M_initialize_timepunct(param_1,param_2);" statement_identifier (ERROR "::__timepunct<wchar_t>:" : : (binary_expression "__timepunct<wchar_t" identifier < identifier) > :) : (expression_statement "_M_initialize_timepunct(param_1,param_2);" (call_expression "_M_initialize_timepunct(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier ))) ;)) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (ERROR < IDENT >) (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))) (labeled_statement statement_identifier (ERROR : : (binary_expression IDENT < IDENT) > :) : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;)) (return_statement return ;) })))
(function_definition "void FUN_0039c09c(__timepunct<wchar_t> *param_1,__locale_struct *param_2,undefined4 param_3,\n                 int param_4)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int in_t9;\n  code *pcVar3;\n  \n  iVar1 = *(int *)(in_t9 + 0x126df4);\n  pcVar3 = *(code **)(in_t9 + 0x126b24);\n  *(uint *)(param_1 + 4) = (uint)(param_4 != 0);\n  *(undefined4 *)(param_1 + 8) = 0;\n  *(undefined4 *)(param_1 + 0xc) = 0;\n  *(int *)param_1 = iVar1 + 8;\n  *(undefined4 *)(param_1 + 0x10) = 0;\n  uVar2 = (*pcVar3)();\n  iVar1 = (**(code **)(in_t9 + 0x1299cc))(param_3,uVar2);\n  if (iVar1 == 0) {\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }\n  else {\n    iVar1 = (**(code **)(in_t9 + 0x129b00))(param_3);\n                    \n    uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1);\n    uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_3,iVar1 + 1);\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }\n                    \n  std::__timepunct<wchar_t>::_M_initialize_timepunct(param_1,param_2);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0039c09c(__timepunct<wchar_t> *param_1,__locale_struct *param_2,undefined4 param_3,\n                 int param_4)" (identifier "FUN_0039c09c") (parameter_list "(__timepunct<wchar_t> *param_1,__locale_struct *param_2,undefined4 param_3,\n                 int param_4)" (( "(") (parameter_declaration "__timepunct<wchar_t> *param_1" (type_identifier "__timepunct") (ERROR "<wchar_t>" (< "<") (identifier "wchar_t") (> ">")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "__locale_struct *param_2" (type_identifier "__locale_struct") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) () ")"))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  int in_t9;\n  code *pcVar3;\n  \n  iVar1 = *(int *)(in_t9 + 0x126df4);\n  pcVar3 = *(code **)(in_t9 + 0x126b24);\n  *(uint *)(param_1 + 4) = (uint)(param_4 != 0);\n  *(undefined4 *)(param_1 + 8) = 0;\n  *(undefined4 *)(param_1 + 0xc) = 0;\n  *(int *)param_1 = iVar1 + 8;\n  *(undefined4 *)(param_1 + 0x10) = 0;\n  uVar2 = (*pcVar3)();\n  iVar1 = (**(code **)(in_t9 + 0x1299cc))(param_3,uVar2);\n  if (iVar1 == 0) {\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }\n  else {\n    iVar1 = (**(code **)(in_t9 + 0x129b00))(param_3);\n                    \n    uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1);\n    uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_3,iVar1 + 1);\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }\n                    \n  std::__timepunct<wchar_t>::_M_initialize_timepunct(param_1,param_2);\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "int in_t9;" (primitive_type "int") (identifier "in_t9") (; ";")) (declaration "code *pcVar3;" (type_identifier "code") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (expression_statement "iVar1 = *(int *)(in_t9 + 0x126df4);" (assignment_expression "iVar1 = *(int *)(in_t9 + 0x126df4)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(in_t9 + 0x126df4)" (* "*") (cast_expression "(int *)(in_t9 + 0x126df4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_t9 + 0x126df4)" (( "(") (binary_expression "in_t9 + 0x126df4" (identifier "in_t9") (+ "+") (number_literal "0x126df4")) () ")"))))) (; ";")) (expression_statement "pcVar3 = *(code **)(in_t9 + 0x126b24);" (assignment_expression "pcVar3 = *(code **)(in_t9 + 0x126b24)" (identifier "pcVar3") (= "=") (pointer_expression "*(code **)(in_t9 + 0x126b24)" (* "*") (cast_expression "(code **)(in_t9 + 0x126b24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0x126b24)" (( "(") (binary_expression "in_t9 + 0x126b24" (identifier "in_t9") (+ "+") (number_literal "0x126b24")) () ")"))))) (; ";")) (expression_statement "*(uint *)(param_1 + 4) = (uint)(param_4 != 0);" (assignment_expression "*(uint *)(param_1 + 4) = (uint)(param_4 != 0)" (pointer_expression "*(uint *)(param_1 + 4)" (* "*") (cast_expression "(uint *)(param_1 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (call_expression "(uint)(param_4 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")")))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 8) = 0" (pointer_expression "*(undefined4 *)(param_1 + 8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xc) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)param_1 = iVar1 + 8;" (assignment_expression "*(int *)param_1 = iVar1 + 8" (pointer_expression "*(int *)param_1" (* "*") (cast_expression "(int *)param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1"))) (= "=") (binary_expression "iVar1 + 8" (identifier "iVar1") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x10) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar2 = (*pcVar3)();" (assignment_expression "uVar2 = (*pcVar3)()" (identifier "uVar2") (= "=") (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" (( "(") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar1 = (**(code **)(in_t9 + 0x1299cc))(param_3,uVar2);" (assignment_expression "iVar1 = (**(code **)(in_t9 + 0x1299cc))(param_3,uVar2)" (identifier "iVar1") (= "=") (call_expression "(**(code **)(in_t9 + 0x1299cc))(param_3,uVar2)" (parenthesized_expression "(**(code **)(in_t9 + 0x1299cc))" (( "(") (pointer_expression "**(code **)(in_t9 + 0x1299cc)" (* "*") (pointer_expression "*(code **)(in_t9 + 0x1299cc)" (* "*") (cast_expression "(code **)(in_t9 + 0x1299cc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0x1299cc)" (( "(") (binary_expression "in_t9 + 0x1299cc" (identifier "in_t9") (+ "+") (number_literal "0x1299cc")) () ")"))))) () ")")) (argument_list "(param_3,uVar2)" (( "(") (identifier "param_3") (, ",") (identifier "uVar2") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }\n  else {\n    iVar1 = (**(code **)(in_t9 + 0x129b00))(param_3);\n                    \n    uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1);\n    uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_3,iVar1 + 1);\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0x10) = uVar2;" (assignment_expression "*(undefined4 *)(param_1 + 0x10) = uVar2" (pointer_expression "*(undefined4 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (} "}")) (else_clause "else {\n    iVar1 = (**(code **)(in_t9 + 0x129b00))(param_3);\n                    \n    uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1);\n    uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_3,iVar1 + 1);\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }" (else "else") (compound_statement "{\n    iVar1 = (**(code **)(in_t9 + 0x129b00))(param_3);\n                    \n    uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1);\n    uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_3,iVar1 + 1);\n    *(undefined4 *)(param_1 + 0x10) = uVar2;\n  }" ({ "{") (expression_statement "iVar1 = (**(code **)(in_t9 + 0x129b00))(param_3);" (assignment_expression "iVar1 = (**(code **)(in_t9 + 0x129b00))(param_3)" (identifier "iVar1") (= "=") (call_expression "(**(code **)(in_t9 + 0x129b00))(param_3)" (parenthesized_expression "(**(code **)(in_t9 + 0x129b00))" (( "(") (pointer_expression "**(code **)(in_t9 + 0x129b00)" (* "*") (pointer_expression "*(code **)(in_t9 + 0x129b00)" (* "*") (cast_expression "(code **)(in_t9 + 0x129b00)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0x129b00)" (( "(") (binary_expression "in_t9 + 0x129b00" (identifier "in_t9") (+ "+") (number_literal "0x129b00")) () ")"))))) () ")")) (argument_list "(param_3)" (( "(") (identifier "param_3") () ")")))) (; ";")) (expression_statement "uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1);" (assignment_expression "uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1)" (identifier "uVar2") (= "=") (call_expression "(**(code **)(in_t9 + 0x1252b0))(iVar1 + 1)" (parenthesized_expression "(**(code **)(in_t9 + 0x1252b0))" (( "(") (pointer_expression "**(code **)(in_t9 + 0x1252b0)" (* "*") (pointer_expression "*(code **)(in_t9 + 0x1252b0)" (* "*") (cast_expression "(code **)(in_t9 + 0x1252b0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0x1252b0)" (( "(") (binary_expression "in_t9 + 0x1252b0" (identifier "in_t9") (+ "+") (number_literal "0x1252b0")) () ")"))))) () ")")) (argument_list "(iVar1 + 1)" (( "(") (binary_expression "iVar1 + 1" (identifier "iVar1") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_3,iVar1 + 1);" (assignment_expression "uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_3,iVar1 + 1)" (identifier "uVar2") (= "=") (call_expression "(**(code **)(in_t9 + 0x129b0c))(uVar2,param_3,iVar1 + 1)" (parenthesized_expression "(**(code **)(in_t9 + 0x129b0c))" (( "(") (pointer_expression "**(code **)(in_t9 + 0x129b0c)" (* "*") (pointer_expression "*(code **)(in_t9 + 0x129b0c)" (* "*") (cast_expression "(code **)(in_t9 + 0x129b0c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0x129b0c)" (( "(") (binary_expression "in_t9 + 0x129b0c" (identifier "in_t9") (+ "+") (number_literal "0x129b0c")) () ")"))))) () ")")) (argument_list "(uVar2,param_3,iVar1 + 1)" (( "(") (identifier "uVar2") (, ",") (identifier "param_3") (, ",") (binary_expression "iVar1 + 1" (identifier "iVar1") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x10) = uVar2;" (assignment_expression "*(undefined4 *)(param_1 + 0x10) = uVar2" (pointer_expression "*(undefined4 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (} "}")))) (labeled_statement "std::__timepunct<wchar_t>::_M_initialize_timepunct(param_1,param_2);" (statement_identifier "std") (ERROR "::__timepunct<wchar_t>:" (: ":") (: ":") (binary_expression "__timepunct<wchar_t" (identifier "__timepunct") (< "<") (identifier "wchar_t")) (> ">") (: ":")) (: ":") (expression_statement "_M_initialize_timepunct(param_1,param_2);" (call_expression "_M_initialize_timepunct(param_1,param_2)" (identifier "_M_initialize_timepunct") (argument_list "(param_1,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") () ")"))) (; ";"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* std::__timepunct<wchar_t>::__timepunct(__locale_struct*, char const*, unsigned int) */

void __thiscall
std::function_1<wchar_t>::function_1
          (function_1<wchar_t> *var_2,type_1 *param_1,char *param_2,type_2 var_3)

{
  int var_4;
  type_3 uVar2;
  int var_1;
  type_4 *pcVar3;
  
  var_4 = *(int *)(var_1 + 0x126df4);
  pcVar3 = *(type_4 **)(var_1 + 0x126b24);
  *(type_2 *)(var_2 + 4) = (type_2)(var_3 != 0);
  *(type_3 *)(var_2 + 8) = 0;
  *(type_3 *)(var_2 + 0xc) = 0;
  *(int *)var_2 = var_4 + 8;
  *(type_3 *)(var_2 + 0x10) = 0;
  uVar2 = (*pcVar3)();
  var_4 = (**(type_4 **)(var_1 + 0x1299cc))(param_2,uVar2);
  if (var_4 == 0) {
    *(type_3 *)(var_2 + 0x10) = uVar2;
  }
  else {
    var_4 = (**(type_4 **)(var_1 + 0x129b00))(param_2);
                    /* try { // try from 0039c168 to 0039c16f has its CatchHandler @ 0039c194 */
    uVar2 = (**(type_4 **)(var_1 + 0x1252b0))(var_4 + 1);
    uVar2 = (**(type_4 **)(var_1 + 0x129b0c))(uVar2,param_2,var_4 + 1);
    *(type_3 *)(var_2 + 0x10) = uVar2;
  }
                    /* try { // try from 0039c128 to 0039c12f has its CatchHandler @ 0039c1b8 */
  var_5(var_2,param_1);
  return;
}


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

void MASKED(__timepunct<wchar_t> *param_1,__locale_struct *param_2,undefined4 param_3,
                 int param_4)

{
  int iVar1;
  undefined4 uVar2;
  int in_t9;
  code *pcVar3;
  
  iVar1 = *(int *)(in_t9 + 0x126df4);
  pcVar3 = *(code **)(in_t9 + 0x126b24);
  *(uint *)(param_1 + 4) = (uint)(param_4 != 0);
  *(undefined4 *)(param_1 + 8) = 0;
  *(undefined4 *)(param_1 + 0xc) = 0;
  *(int *)param_1 = iVar1 + 8;
  *(undefined4 *)(param_1 + 0x10) = 0;
  uVar2 = (*pcVar3)();
  iVar1 = (**(code **)(in_t9 + 0x1299cc))(param_3,uVar2);
  if (iVar1 == 0) {
    *(undefined4 *)(param_1 + 0x10) = uVar2;
  }
  else {
    iVar1 = (**(code **)(in_t9 + 0x129b00))(param_3);
                    /* try { // try from 0039c168 to 0039c16f has its CatchHandler @ 0039c194 */
    uVar2 = (**(code **)(in_t9 + 0x1252b0))(iVar1 + 1);
    uVar2 = (**(code **)(in_t9 + 0x129b0c))(uVar2,param_3,iVar1 + 1);
    *(undefined4 *)(param_1 + 0x10) = uVar2;
  }
                    /* try { // try from 0039c128 to 0039c12f has its CatchHandler @ 0039c1b8 */
  std::__timepunct<wchar_t>::_M_initialize_timepunct(param_1,param_2);
  return;
}

