
/* std::wostream& std::wostream::_M_insert<unsigned long long>(unsigned long long) */

wostream * std::wostream::_M_insert<unsigned_long_long>(ulonglong param_1)

{
  undefined4 uVar1;
  wostream *in_a0;
  int *piVar2;
  wostream *pwVar3;
  int iVar4;
  int *piVar5;
  undefined4 local_3c;
  undefined1 auStack_38 [4];
  char local_34;
  sentry local_30 [12];
  
  sentry::sentry(local_30,in_a0);
  if (local_30[0] != (sentry)0x0) {
    pwVar3 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);
    piVar5 = *(int **)(pwVar3 + 0x84);
    if (piVar5 == (int *)0x0) {
      pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();
      return pwVar3;
    }
    iVar4 = *(int *)(pwVar3 + 0x7c);
    if (pwVar3[0x78] == (wostream)0x0) {
      piVar2 = *(int **)(pwVar3 + 0x80);
      if (piVar2 == (int *)0x0) {
        pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();
        return pwVar3;
      }
                    /* try { // try from 003464e0 to 00346507 has its CatchHandler @ 00346508 */
      uVar1 = (**(code **)(*piVar2 + 0x28))(piVar2,0x20);
      *(undefined4 *)(pwVar3 + 0x74) = uVar1;
      pwVar3[0x78] = (wostream)0x1;
    }
    else {
      uVar1 = *(undefined4 *)(pwVar3 + 0x74);
    }
    local_3c = CONCAT13(iVar4 == 0,local_3c._1_3_);
                    /* try { // try from 00346458 to 0034645f has its CatchHandler @ 00346508 */
    (**(code **)(*piVar5 + 0x18))(auStack_38,piVar5,iVar4,local_3c,pwVar3,uVar1);
    if (local_34 != '\0') {
                    /* try { // try from 00346484 to 0034648b has its CatchHandler @ 00346554 */
      (*(code *)PTR_clear_004c5180)
                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),
                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);
    }
  }
  sentry::~sentry(local_30);
  return in_a0;
}



/* std::wostream& std::wostream::_M_insert<unsigned long long>(unsigned long long) */

wostream * std::wostream::_M_insert<unsigned_long_long>(ulonglong param_1)

{
  undefined4 uVar1;
  wostream *in_a0;
  int *piVar2;
  wostream *pwVar3;
  int iVar4;
  int *piVar5;
  undefined4 local_3c;
  undefined1 auStack_38 [4];
  char local_34;
  sentry local_30 [12];
  
  sentry::sentry(local_30,in_a0);
  if (local_30[0] != (sentry)0x0) {
    pwVar3 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);
    piVar5 = *(int **)(pwVar3 + 0x84);
    if (piVar5 == (int *)0x0) {
      pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();
      return pwVar3;
    }
    iVar4 = *(int *)(pwVar3 + 0x7c);
    if (pwVar3[0x78] == (wostream)0x0) {
      piVar2 = *(int **)(pwVar3 + 0x80);
      if (piVar2 == (int *)0x0) {
        pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();
        return pwVar3;
      }
                    /* try { // try from 003464e0 to 00346507 has its CatchHandler @ 00346508 */
      uVar1 = (**(code **)(*piVar2 + 0x28))(piVar2,0x20);
      *(undefined4 *)(pwVar3 + 0x74) = uVar1;
      pwVar3[0x78] = (wostream)0x1;
    }
    else {
      uVar1 = *(undefined4 *)(pwVar3 + 0x74);
    }
    local_3c = CONCAT13(iVar4 == 0,local_3c._1_3_);
                    /* try { // try from 00346458 to 0034645f has its CatchHandler @ 00346508 */
    (**(code **)(*piVar5 + 0x18))(auStack_38,piVar5,iVar4,local_3c,pwVar3,uVar1);
    if (local_34 != '\0') {
                    /* try { // try from 00346484 to 0034648b has its CatchHandler @ 00346554 */
      (*(code *)PTR_clear_004c5180)
                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),
                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);
    }
  }
  sentry::~sentry(local_30);
  return in_a0;
}


lui gp,0x18
addiu gp,gp,0x2ea4
addu gp,gp,t9
addiu sp,sp,-0x68
lw t9,-0x3ef0(gp)
or a1,a0,zero
sw s2,0x4c(sp)
addiu s2,sp,0x38
sw gp,0x20(sp)
sw s5,0x58(sp)
or s5,a3,zero
sw s4,0x54(sp)
or s4,a2,zero
sw s1,0x48(sp)
or s1,a0,zero
sw ra,0x64(sp)
or a0,s2,zero
sw s7,0x60(sp)
sw s6,0x5c(sp)
sw s3,0x50(sp)
bal 0x00344798
_sw s0,0x44(sp)
lbu v0,0x38(sp)
beq v0,zero,0x00346490
_lw gp,0x20(sp)
lw v0,0x0(s1)
lw s0,-0xc(v0)
addu s0,s1,s0
lw s6,0x84(s0)
beq s6,zero,0x003464f8
_lw t9,-0x6f84(gp)
lw s3,0x7c(s0)
lbu v0,0x78(s0)
beq v0,zero,0x003464cc
_sltiu s7,s3,0x1
lw v0,0x74(s0)
lw v1,0x0(s6)
addiu a0,sp,0x30
sb s7,0x2c(sp)
or a2,s3,zero
sw s5,0x1c(sp)
or a1,s6,zero
sw s4,0x18(sp)
sw v0,0x14(sp)
sw s0,0x10(sp)
sw s3,0x28(sp)
lw t9,0x18(v1)
jalr t9
_lw a3,0x2c(sp)
lbu v0,0x34(sp)
beq v0,zero,0x00346490
_lw gp,0x20(sp)
lw v0,0x0(s1)
lw t9,-0x40c0(gp)
lw v0,-0xc(v0)
addu v0,s1,v0
or a0,v0,zero
lw a1,0x14(v0)
jalr t9
_ori a1,a1,0x1
lw gp,0x20(sp)
lw t9,-0x3eec(gp)
bal 0x00344838
_or a0,s2,zero
or v0,s1,zero
lw ra,0x64(sp)
lw s7,0x60(sp)
lw s6,0x5c(sp)
lw s5,0x58(sp)
lw s4,0x54(sp)
lw s3,0x50(sp)
lw s2,0x4c(sp)
lw s1,0x48(sp)
lw s0,0x44(sp)
jr ra
_addiu sp,sp,0x68
lw a0,0x80(s0)
beq a0,zero,0x00346500
_lw t9,-0x6f84(gp)
lw v0,0x0(a0)
lw t9,0x28(v0)
jalr t9
_li a1,0x20
li v1,0x1
sw v0,0x74(s0)
b 0x0034642c
_sb v1,0x78(s0)
jalr t9
_nop
jalr t9
_nop
(translation_unit "/* std::wostream& std::wostream::_M_insert<unsigned long long>(unsigned long long) */\n\nwostream * std::wostream::_M_insert<unsigned_long_long>(ulonglong param_1)\n\n{\n  undefined4 uVar1;\n  wostream *in_a0;\n  int *piVar2;\n  wostream *pwVar3;\n  int iVar4;\n  int *piVar5;\n  undefined4 local_3c;\n  undefined1 auStack_38 [4];\n  char local_34;\n  sentry local_30 [12];\n  \n  sentry::sentry(local_30,in_a0);\n  if (local_30[0] != (sentry)0x0) {\n    pwVar3 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);\n    piVar5 = *(int **)(pwVar3 + 0x84);\n    if (piVar5 == (int *)0x0) {\n      pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return pwVar3;\n    }\n    iVar4 = *(int *)(pwVar3 + 0x7c);\n    if (pwVar3[0x78] == (wostream)0x0) {\n      piVar2 = *(int **)(pwVar3 + 0x80);\n      if (piVar2 == (int *)0x0) {\n        pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return pwVar3;\n      }\n                    /* try { // try from 003464e0 to 00346507 has its CatchHandler @ 00346508 */\n      uVar1 = (**(code **)(*piVar2 + 0x28))(piVar2,0x20);\n      *(undefined4 *)(pwVar3 + 0x74) = uVar1;\n      pwVar3[0x78] = (wostream)0x1;\n    }\n    else {\n      uVar1 = *(undefined4 *)(pwVar3 + 0x74);\n    }\n    local_3c = CONCAT13(iVar4 == 0,local_3c._1_3_);\n                    /* try { // try from 00346458 to 0034645f has its CatchHandler @ 00346508 */\n    (**(code **)(*piVar5 + 0x18))(auStack_38,piVar5,iVar4,local_3c,pwVar3,uVar1);\n    if (local_34 != '\0') {\n                    /* try { // try from 00346484 to 0034648b has its CatchHandler @ 00346554 */\n      (*(code *)PTR_clear_004c5180)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);\n    }\n  }\n  sentry::~sentry(local_30);\n  return in_a0;\n}\n\n" comment (ERROR "wostream * std::" (binary_expression "wostream * std" identifier * identifier) : :) (labeled_statement "wostream::_M_insert<unsigned_long_long>(ulonglong param_1)\n\n{\n  undefined4 uVar1;\n  wostream *in_a0;" statement_identifier : (ERROR ":" :) (expression_statement "_M_insert<unsigned_long_long>(ulonglong param_1)\n\n{\n  undefined4 uVar1;\n  wostream *in_a0;" (binary_expression "_M_insert<unsigned_long_long>(ulonglong param_1)\n\n{\n  undefined4 uVar1;\n  wostream *in_a0" (binary_expression "_M_insert<unsigned_long_long" identifier < identifier) > (compound_literal_expression "(ulonglong param_1)\n\n{\n  undefined4 uVar1;\n  wostream *in_a0" ( (type_descriptor "ulonglong" type_identifier) (ERROR "param_1" identifier) ) (initializer_list "{\n  undefined4 uVar1;\n  wostream *in_a0" { (ERROR "undefined4 uVar1;" identifier identifier ;) (binary_expression "wostream *in_a0" identifier * identifier) }))) ;)) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "wostream *pwVar3;" type_identifier (pointer_declarator "*pwVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "undefined1 auStack_38 [4];" type_identifier (array_declarator "auStack_38 [4]" identifier [ number_literal ]) ;) (declaration "char local_34;" primitive_type identifier ;) (declaration "sentry local_30 [12];" type_identifier (array_declarator "local_30 [12]" identifier [ number_literal ]) ;) (labeled_statement "sentry::sentry(local_30,in_a0);" statement_identifier : (ERROR ":" :) (expression_statement "sentry(local_30,in_a0);" (call_expression "sentry(local_30,in_a0)" identifier (argument_list "(local_30,in_a0)" ( identifier , identifier ))) ;)) (if_statement "if (local_30[0] != (sentry)0x0) {\n    pwVar3 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);\n    piVar5 = *(int **)(pwVar3 + 0x84);\n    if (piVar5 == (int *)0x0) {\n      pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return pwVar3;\n    }\n    iVar4 = *(int *)(pwVar3 + 0x7c);\n    if (pwVar3[0x78] == (wostream)0x0) {\n      piVar2 = *(int **)(pwVar3 + 0x80);\n      if (piVar2 == (int *)0x0) {\n        pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return pwVar3;\n      }\n                    /* try { // try from 003464e0 to 00346507 has its CatchHandler @ 00346508 */\n      uVar1 = (**(code **)(*piVar2 + 0x28))(piVar2,0x20);\n      *(undefined4 *)(pwVar3 + 0x74) = uVar1;\n      pwVar3[0x78] = (wostream)0x1;\n    }\n    else {\n      uVar1 = *(undefined4 *)(pwVar3 + 0x74);\n    }\n    local_3c = CONCAT13(iVar4 == 0,local_3c._1_3_);\n                    /* try { // try from 00346458 to 0034645f has its CatchHandler @ 00346508 */\n    (**(code **)(*piVar5 + 0x18))(auStack_38,piVar5,iVar4,local_3c,pwVar3,uVar1);\n    if (local_34 != '\0') {\n                    /* try { // try from 00346484 to 0034648b has its CatchHandler @ 00346554 */\n      (*(code *)PTR_clear_004c5180)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);\n    }\n  }" if (parenthesized_expression "(local_30[0] != (sentry)0x0)" ( (binary_expression "local_30[0] != (sentry)0x0" (subscript_expression "local_30[0]" identifier [ number_literal ]) != (cast_expression "(sentry)0x0" ( (type_descriptor "sentry" type_identifier) ) number_literal)) )) (compound_statement "{\n    pwVar3 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);\n    piVar5 = *(int **)(pwVar3 + 0x84);\n    if (piVar5 == (int *)0x0) {\n      pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return pwVar3;\n    }\n    iVar4 = *(int *)(pwVar3 + 0x7c);\n    if (pwVar3[0x78] == (wostream)0x0) {\n      piVar2 = *(int **)(pwVar3 + 0x80);\n      if (piVar2 == (int *)0x0) {\n        pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return pwVar3;\n      }\n                    /* try { // try from 003464e0 to 00346507 has its CatchHandler @ 00346508 */\n      uVar1 = (**(code **)(*piVar2 + 0x28))(piVar2,0x20);\n      *(undefined4 *)(pwVar3 + 0x74) = uVar1;\n      pwVar3[0x78] = (wostream)0x1;\n    }\n    else {\n      uVar1 = *(undefined4 *)(pwVar3 + 0x74);\n    }\n    local_3c = CONCAT13(iVar4 == 0,local_3c._1_3_);\n                    /* try { // try from 00346458 to 0034645f has its CatchHandler @ 00346508 */\n    (**(code **)(*piVar5 + 0x18))(auStack_38,piVar5,iVar4,local_3c,pwVar3,uVar1);\n    if (local_34 != '\0') {\n                    /* try { // try from 00346484 to 0034648b has its CatchHandler @ 00346554 */\n      (*(code *)PTR_clear_004c5180)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);\n    }\n  }" { (expression_statement "pwVar3 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);" (assignment_expression "pwVar3 = in_a0 + *(int *)(*(int *)in_a0 + -0xc)" identifier = (binary_expression "in_a0 + *(int *)(*(int *)in_a0 + -0xc)" identifier + (pointer_expression "*(int *)(*(int *)in_a0 + -0xc)" * (cast_expression "(int *)(*(int *)in_a0 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)in_a0 + -0xc)" ( (binary_expression "*(int *)in_a0 + -0xc" (pointer_expression "*(int *)in_a0" * (cast_expression "(int *)in_a0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))))) ;) (expression_statement "piVar5 = *(int **)(pwVar3 + 0x84);" (assignment_expression "piVar5 = *(int **)(pwVar3 + 0x84)" identifier = (pointer_expression "*(int **)(pwVar3 + 0x84)" * (cast_expression "(int **)(pwVar3 + 0x84)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pwVar3 + 0x84)" ( (binary_expression "pwVar3 + 0x84" identifier + number_literal) ))))) ;) (if_statement "if (piVar5 == (int *)0x0) {\n      pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return pwVar3;\n    }" if (parenthesized_expression "(piVar5 == (int *)0x0)" ( (binary_expression "piVar5 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return pwVar3;\n    }" { (expression_statement "pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();" (assignment_expression "pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" identifier = (cast_expression "(wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" ( (type_descriptor "wostream *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___throw_bad_cast_004c22bc)()" (parenthesized_expression "(*(code *)PTR___throw_bad_cast_004c22bc)" ( (pointer_expression "*(code *)PTR___throw_bad_cast_004c22bc" * (cast_expression "(code *)PTR___throw_bad_cast_004c22bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (return_statement "return pwVar3;" return identifier ;) })) (expression_statement "iVar4 = *(int *)(pwVar3 + 0x7c);" (assignment_expression "iVar4 = *(int *)(pwVar3 + 0x7c)" identifier = (pointer_expression "*(int *)(pwVar3 + 0x7c)" * (cast_expression "(int *)(pwVar3 + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pwVar3 + 0x7c)" ( (binary_expression "pwVar3 + 0x7c" identifier + number_literal) ))))) ;) (if_statement "if (pwVar3[0x78] == (wostream)0x0) {\n      piVar2 = *(int **)(pwVar3 + 0x80);\n      if (piVar2 == (int *)0x0) {\n        pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return pwVar3;\n      }\n                    /* try { // try from 003464e0 to 00346507 has its CatchHandler @ 00346508 */\n      uVar1 = (**(code **)(*piVar2 + 0x28))(piVar2,0x20);\n      *(undefined4 *)(pwVar3 + 0x74) = uVar1;\n      pwVar3[0x78] = (wostream)0x1;\n    }\n    else {\n      uVar1 = *(undefined4 *)(pwVar3 + 0x74);\n    }" if (parenthesized_expression "(pwVar3[0x78] == (wostream)0x0)" ( (binary_expression "pwVar3[0x78] == (wostream)0x0" (subscript_expression "pwVar3[0x78]" identifier [ number_literal ]) == (cast_expression "(wostream)0x0" ( (type_descriptor "wostream" type_identifier) ) number_literal)) )) (compound_statement "{\n      piVar2 = *(int **)(pwVar3 + 0x80);\n      if (piVar2 == (int *)0x0) {\n        pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return pwVar3;\n      }\n                    /* try { // try from 003464e0 to 00346507 has its CatchHandler @ 00346508 */\n      uVar1 = (**(code **)(*piVar2 + 0x28))(piVar2,0x20);\n      *(undefined4 *)(pwVar3 + 0x74) = uVar1;\n      pwVar3[0x78] = (wostream)0x1;\n    }" { (expression_statement "piVar2 = *(int **)(pwVar3 + 0x80);" (assignment_expression "piVar2 = *(int **)(pwVar3 + 0x80)" identifier = (pointer_expression "*(int **)(pwVar3 + 0x80)" * (cast_expression "(int **)(pwVar3 + 0x80)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pwVar3 + 0x80)" ( (binary_expression "pwVar3 + 0x80" identifier + number_literal) ))))) ;) (if_statement "if (piVar2 == (int *)0x0) {\n        pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return pwVar3;\n      }" if (parenthesized_expression "(piVar2 == (int *)0x0)" ( (binary_expression "piVar2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return pwVar3;\n      }" { (expression_statement "pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();" (assignment_expression "pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" identifier = (cast_expression "(wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" ( (type_descriptor "wostream *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___throw_bad_cast_004c22bc)()" (parenthesized_expression "(*(code *)PTR___throw_bad_cast_004c22bc)" ( (pointer_expression "*(code *)PTR___throw_bad_cast_004c22bc" * (cast_expression "(code *)PTR___throw_bad_cast_004c22bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (return_statement "return pwVar3;" return identifier ;) })) comment (expression_statement "uVar1 = (**(code **)(*piVar2 + 0x28))(piVar2,0x20);" (assignment_expression "uVar1 = (**(code **)(*piVar2 + 0x28))(piVar2,0x20)" identifier = (call_expression "(**(code **)(*piVar2 + 0x28))(piVar2,0x20)" (parenthesized_expression "(**(code **)(*piVar2 + 0x28))" ( (pointer_expression "**(code **)(*piVar2 + 0x28)" * (pointer_expression "*(code **)(*piVar2 + 0x28)" * (cast_expression "(code **)(*piVar2 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0x28)" ( (binary_expression "*piVar2 + 0x28" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2,0x20)" ( identifier , number_literal )))) ;) (expression_statement "*(undefined4 *)(pwVar3 + 0x74) = uVar1;" (assignment_expression "*(undefined4 *)(pwVar3 + 0x74) = uVar1" (pointer_expression "*(undefined4 *)(pwVar3 + 0x74)" * (cast_expression "(undefined4 *)(pwVar3 + 0x74)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pwVar3 + 0x74)" ( (binary_expression "pwVar3 + 0x74" identifier + number_literal) )))) = identifier) ;) (expression_statement "pwVar3[0x78] = (wostream)0x1;" (assignment_expression "pwVar3[0x78] = (wostream)0x1" (subscript_expression "pwVar3[0x78]" identifier [ number_literal ]) = (cast_expression "(wostream)0x1" ( (type_descriptor "wostream" type_identifier) ) number_literal)) ;) }) (else_clause "else {\n      uVar1 = *(undefined4 *)(pwVar3 + 0x74);\n    }" else (compound_statement "{\n      uVar1 = *(undefined4 *)(pwVar3 + 0x74);\n    }" { (expression_statement "uVar1 = *(undefined4 *)(pwVar3 + 0x74);" (assignment_expression "uVar1 = *(undefined4 *)(pwVar3 + 0x74)" identifier = (pointer_expression "*(undefined4 *)(pwVar3 + 0x74)" * (cast_expression "(undefined4 *)(pwVar3 + 0x74)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pwVar3 + 0x74)" ( (binary_expression "pwVar3 + 0x74" identifier + number_literal) ))))) ;) }))) (expression_statement "local_3c = CONCAT13(iVar4 == 0,local_3c._1_3_);" (assignment_expression "local_3c = CONCAT13(iVar4 == 0,local_3c._1_3_)" identifier = (call_expression "CONCAT13(iVar4 == 0,local_3c._1_3_)" identifier (argument_list "(iVar4 == 0,local_3c._1_3_)" ( (binary_expression "iVar4 == 0" identifier == number_literal) , (field_expression "local_3c._1_3_" identifier . field_identifier) )))) ;) comment (expression_statement "(**(code **)(*piVar5 + 0x18))(auStack_38,piVar5,iVar4,local_3c,pwVar3,uVar1);" (call_expression "(**(code **)(*piVar5 + 0x18))(auStack_38,piVar5,iVar4,local_3c,pwVar3,uVar1)" (parenthesized_expression "(**(code **)(*piVar5 + 0x18))" ( (pointer_expression "**(code **)(*piVar5 + 0x18)" * (pointer_expression "*(code **)(*piVar5 + 0x18)" * (cast_expression "(code **)(*piVar5 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 0x18)" ( (binary_expression "*piVar5 + 0x18" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(auStack_38,piVar5,iVar4,local_3c,pwVar3,uVar1)" ( identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (if_statement "if (local_34 != '\0') {\n                    /* try { // try from 00346484 to 0034648b has its CatchHandler @ 00346554 */\n      (*(code *)PTR_clear_004c5180)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);\n    }" if (parenthesized_expression "(local_34 != '\0')" ( (binary_expression "local_34 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* try { // try from 00346484 to 0034648b has its CatchHandler @ 00346554 */\n      (*(code *)PTR_clear_004c5180)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);\n    }" { comment (expression_statement "(*(code *)PTR_clear_004c5180)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);" (call_expression "(*(code *)PTR_clear_004c5180)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1)" (parenthesized_expression "(*(code *)PTR_clear_004c5180)" ( (pointer_expression "*(code *)PTR_clear_004c5180" * (cast_expression "(code *)PTR_clear_004c5180" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1)" ( (binary_expression "in_a0 + *(int *)(*(int *)in_a0 + -0xc)" identifier + (pointer_expression "*(int *)(*(int *)in_a0 + -0xc)" * (cast_expression "(int *)(*(int *)in_a0 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)in_a0 + -0xc)" ( (binary_expression "*(int *)in_a0 + -0xc" (pointer_expression "*(int *)in_a0" * (cast_expression "(int *)in_a0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) , (binary_expression "*(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1" (pointer_expression "*(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14)" * (cast_expression "(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14)" ( (binary_expression "in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14" (binary_expression "in_a0 + *(int *)(*(int *)in_a0 + -0xc)" identifier + (pointer_expression "*(int *)(*(int *)in_a0 + -0xc)" * (cast_expression "(int *)(*(int *)in_a0 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)in_a0 + -0xc)" ( (binary_expression "*(int *)in_a0 + -0xc" (pointer_expression "*(int *)in_a0" * (cast_expression "(int *)in_a0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) + number_literal) )))) | number_literal) ))) ;) })) })) (labeled_statement "sentry::~sentry(local_30);" statement_identifier : (ERROR ":" :) (expression_statement "~sentry(local_30);" (unary_expression "~sentry(local_30)" ~ (call_expression "sentry(local_30)" identifier (argument_list "(local_30)" ( identifier )))) ;)) (return_statement "return in_a0;" return identifier ;) (ERROR "}" }))
(translation_unit "/* std::wostream& std::wostream::_M_insert<unsigned long long>(unsigned long long) */\n\nwostream * std::wostream::_M_insert<unsigned_long_long>(ulonglong param_1)\n\n{\n  undefined4 uVar1;\n  wostream *in_a0;\n  int *piVar2;\n  wostream *pwVar3;\n  int iVar4;\n  int *piVar5;\n  undefined4 local_3c;\n  undefined1 auStack_38 [4];\n  char local_34;\n  sentry local_30 [12];\n  \n  sentry::sentry(local_30,in_a0);\n  if (local_30[0] != (sentry)0x0) {\n    pwVar3 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);\n    piVar5 = *(int **)(pwVar3 + 0x84);\n    if (piVar5 == (int *)0x0) {\n      pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return pwVar3;\n    }\n    iVar4 = *(int *)(pwVar3 + 0x7c);\n    if (pwVar3[0x78] == (wostream)0x0) {\n      piVar2 = *(int **)(pwVar3 + 0x80);\n      if (piVar2 == (int *)0x0) {\n        pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return pwVar3;\n      }\n                    /* try { // try from 003464e0 to 00346507 has its CatchHandler @ 00346508 */\n      uVar1 = (**(code **)(*piVar2 + 0x28))(piVar2,0x20);\n      *(undefined4 *)(pwVar3 + 0x74) = uVar1;\n      pwVar3[0x78] = (wostream)0x1;\n    }\n    else {\n      uVar1 = *(undefined4 *)(pwVar3 + 0x74);\n    }\n    local_3c = CONCAT13(iVar4 == 0,local_3c._1_3_);\n                    /* try { // try from 00346458 to 0034645f has its CatchHandler @ 00346508 */\n    (**(code **)(*piVar5 + 0x18))(auStack_38,piVar5,iVar4,local_3c,pwVar3,uVar1);\n    if (local_34 != '\0') {\n                    /* try { // try from 00346484 to 0034648b has its CatchHandler @ 00346554 */\n      (*(code *)PTR_clear_004c5180)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);\n    }\n  }\n  sentry::~sentry(local_30);\n  return in_a0;\n}\n\n" comment (ERROR "wostream * std::" (binary_expression "wostream * std" identifier * identifier) : :) (labeled_statement "wostream::_M_insert<unsigned_long_long>(ulonglong param_1)\n\n{\n  undefined4 uVar1;\n  wostream *in_a0;" statement_identifier : (ERROR ":" :) (expression_statement "_M_insert<unsigned_long_long>(ulonglong param_1)\n\n{\n  undefined4 uVar1;\n  wostream *in_a0;" (binary_expression "_M_insert<unsigned_long_long>(ulonglong param_1)\n\n{\n  undefined4 uVar1;\n  wostream *in_a0" (binary_expression "_M_insert<unsigned_long_long" identifier < identifier) > (compound_literal_expression "(ulonglong param_1)\n\n{\n  undefined4 uVar1;\n  wostream *in_a0" ( (type_descriptor "ulonglong" type_identifier) (ERROR "param_1" identifier) ) (initializer_list "{\n  undefined4 uVar1;\n  wostream *in_a0" { (ERROR "undefined4 uVar1;" identifier identifier ;) (binary_expression "wostream *in_a0" identifier * identifier) }))) ;)) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "wostream *pwVar3;" type_identifier (pointer_declarator "*pwVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "undefined1 auStack_38 [4];" type_identifier (array_declarator "auStack_38 [4]" identifier [ number_literal ]) ;) (declaration "char local_34;" primitive_type identifier ;) (declaration "sentry local_30 [12];" type_identifier (array_declarator "local_30 [12]" identifier [ number_literal ]) ;) (labeled_statement "sentry::sentry(local_30,in_a0);" statement_identifier : (ERROR ":" :) (expression_statement "sentry(local_30,in_a0);" (call_expression "sentry(local_30,in_a0)" identifier (argument_list "(local_30,in_a0)" ( identifier , identifier ))) ;)) (if_statement "if (local_30[0] != (sentry)0x0) {\n    pwVar3 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);\n    piVar5 = *(int **)(pwVar3 + 0x84);\n    if (piVar5 == (int *)0x0) {\n      pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return pwVar3;\n    }\n    iVar4 = *(int *)(pwVar3 + 0x7c);\n    if (pwVar3[0x78] == (wostream)0x0) {\n      piVar2 = *(int **)(pwVar3 + 0x80);\n      if (piVar2 == (int *)0x0) {\n        pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return pwVar3;\n      }\n                    /* try { // try from 003464e0 to 00346507 has its CatchHandler @ 00346508 */\n      uVar1 = (**(code **)(*piVar2 + 0x28))(piVar2,0x20);\n      *(undefined4 *)(pwVar3 + 0x74) = uVar1;\n      pwVar3[0x78] = (wostream)0x1;\n    }\n    else {\n      uVar1 = *(undefined4 *)(pwVar3 + 0x74);\n    }\n    local_3c = CONCAT13(iVar4 == 0,local_3c._1_3_);\n                    /* try { // try from 00346458 to 0034645f has its CatchHandler @ 00346508 */\n    (**(code **)(*piVar5 + 0x18))(auStack_38,piVar5,iVar4,local_3c,pwVar3,uVar1);\n    if (local_34 != '\0') {\n                    /* try { // try from 00346484 to 0034648b has its CatchHandler @ 00346554 */\n      (*(code *)PTR_clear_004c5180)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);\n    }\n  }" if (parenthesized_expression "(local_30[0] != (sentry)0x0)" ( (binary_expression "local_30[0] != (sentry)0x0" (subscript_expression "local_30[0]" identifier [ number_literal ]) != (cast_expression "(sentry)0x0" ( (type_descriptor "sentry" type_identifier) ) number_literal)) )) (compound_statement "{\n    pwVar3 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);\n    piVar5 = *(int **)(pwVar3 + 0x84);\n    if (piVar5 == (int *)0x0) {\n      pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return pwVar3;\n    }\n    iVar4 = *(int *)(pwVar3 + 0x7c);\n    if (pwVar3[0x78] == (wostream)0x0) {\n      piVar2 = *(int **)(pwVar3 + 0x80);\n      if (piVar2 == (int *)0x0) {\n        pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return pwVar3;\n      }\n                    /* try { // try from 003464e0 to 00346507 has its CatchHandler @ 00346508 */\n      uVar1 = (**(code **)(*piVar2 + 0x28))(piVar2,0x20);\n      *(undefined4 *)(pwVar3 + 0x74) = uVar1;\n      pwVar3[0x78] = (wostream)0x1;\n    }\n    else {\n      uVar1 = *(undefined4 *)(pwVar3 + 0x74);\n    }\n    local_3c = CONCAT13(iVar4 == 0,local_3c._1_3_);\n                    /* try { // try from 00346458 to 0034645f has its CatchHandler @ 00346508 */\n    (**(code **)(*piVar5 + 0x18))(auStack_38,piVar5,iVar4,local_3c,pwVar3,uVar1);\n    if (local_34 != '\0') {\n                    /* try { // try from 00346484 to 0034648b has its CatchHandler @ 00346554 */\n      (*(code *)PTR_clear_004c5180)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);\n    }\n  }" { (expression_statement "pwVar3 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);" (assignment_expression "pwVar3 = in_a0 + *(int *)(*(int *)in_a0 + -0xc)" identifier = (binary_expression "in_a0 + *(int *)(*(int *)in_a0 + -0xc)" identifier + (pointer_expression "*(int *)(*(int *)in_a0 + -0xc)" * (cast_expression "(int *)(*(int *)in_a0 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)in_a0 + -0xc)" ( (binary_expression "*(int *)in_a0 + -0xc" (pointer_expression "*(int *)in_a0" * (cast_expression "(int *)in_a0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))))) ;) (expression_statement "piVar5 = *(int **)(pwVar3 + 0x84);" (assignment_expression "piVar5 = *(int **)(pwVar3 + 0x84)" identifier = (pointer_expression "*(int **)(pwVar3 + 0x84)" * (cast_expression "(int **)(pwVar3 + 0x84)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pwVar3 + 0x84)" ( (binary_expression "pwVar3 + 0x84" identifier + number_literal) ))))) ;) (if_statement "if (piVar5 == (int *)0x0) {\n      pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return pwVar3;\n    }" if (parenthesized_expression "(piVar5 == (int *)0x0)" ( (binary_expression "piVar5 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return pwVar3;\n    }" { (expression_statement "pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();" (assignment_expression "pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" identifier = (cast_expression "(wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" ( (type_descriptor "wostream *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___throw_bad_cast_004c22bc)()" (parenthesized_expression "(*(code *)PTR___throw_bad_cast_004c22bc)" ( (pointer_expression "*(code *)PTR___throw_bad_cast_004c22bc" * (cast_expression "(code *)PTR___throw_bad_cast_004c22bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (return_statement "return pwVar3;" return identifier ;) })) (expression_statement "iVar4 = *(int *)(pwVar3 + 0x7c);" (assignment_expression "iVar4 = *(int *)(pwVar3 + 0x7c)" identifier = (pointer_expression "*(int *)(pwVar3 + 0x7c)" * (cast_expression "(int *)(pwVar3 + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pwVar3 + 0x7c)" ( (binary_expression "pwVar3 + 0x7c" identifier + number_literal) ))))) ;) (if_statement "if (pwVar3[0x78] == (wostream)0x0) {\n      piVar2 = *(int **)(pwVar3 + 0x80);\n      if (piVar2 == (int *)0x0) {\n        pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return pwVar3;\n      }\n                    /* try { // try from 003464e0 to 00346507 has its CatchHandler @ 00346508 */\n      uVar1 = (**(code **)(*piVar2 + 0x28))(piVar2,0x20);\n      *(undefined4 *)(pwVar3 + 0x74) = uVar1;\n      pwVar3[0x78] = (wostream)0x1;\n    }\n    else {\n      uVar1 = *(undefined4 *)(pwVar3 + 0x74);\n    }" if (parenthesized_expression "(pwVar3[0x78] == (wostream)0x0)" ( (binary_expression "pwVar3[0x78] == (wostream)0x0" (subscript_expression "pwVar3[0x78]" identifier [ number_literal ]) == (cast_expression "(wostream)0x0" ( (type_descriptor "wostream" type_identifier) ) number_literal)) )) (compound_statement "{\n      piVar2 = *(int **)(pwVar3 + 0x80);\n      if (piVar2 == (int *)0x0) {\n        pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return pwVar3;\n      }\n                    /* try { // try from 003464e0 to 00346507 has its CatchHandler @ 00346508 */\n      uVar1 = (**(code **)(*piVar2 + 0x28))(piVar2,0x20);\n      *(undefined4 *)(pwVar3 + 0x74) = uVar1;\n      pwVar3[0x78] = (wostream)0x1;\n    }" { (expression_statement "piVar2 = *(int **)(pwVar3 + 0x80);" (assignment_expression "piVar2 = *(int **)(pwVar3 + 0x80)" identifier = (pointer_expression "*(int **)(pwVar3 + 0x80)" * (cast_expression "(int **)(pwVar3 + 0x80)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pwVar3 + 0x80)" ( (binary_expression "pwVar3 + 0x80" identifier + number_literal) ))))) ;) (if_statement "if (piVar2 == (int *)0x0) {\n        pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return pwVar3;\n      }" if (parenthesized_expression "(piVar2 == (int *)0x0)" ( (binary_expression "piVar2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return pwVar3;\n      }" { (expression_statement "pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();" (assignment_expression "pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" identifier = (cast_expression "(wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" ( (type_descriptor "wostream *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___throw_bad_cast_004c22bc)()" (parenthesized_expression "(*(code *)PTR___throw_bad_cast_004c22bc)" ( (pointer_expression "*(code *)PTR___throw_bad_cast_004c22bc" * (cast_expression "(code *)PTR___throw_bad_cast_004c22bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (return_statement "return pwVar3;" return identifier ;) })) comment (expression_statement "uVar1 = (**(code **)(*piVar2 + 0x28))(piVar2,0x20);" (assignment_expression "uVar1 = (**(code **)(*piVar2 + 0x28))(piVar2,0x20)" identifier = (call_expression "(**(code **)(*piVar2 + 0x28))(piVar2,0x20)" (parenthesized_expression "(**(code **)(*piVar2 + 0x28))" ( (pointer_expression "**(code **)(*piVar2 + 0x28)" * (pointer_expression "*(code **)(*piVar2 + 0x28)" * (cast_expression "(code **)(*piVar2 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0x28)" ( (binary_expression "*piVar2 + 0x28" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2,0x20)" ( identifier , number_literal )))) ;) (expression_statement "*(undefined4 *)(pwVar3 + 0x74) = uVar1;" (assignment_expression "*(undefined4 *)(pwVar3 + 0x74) = uVar1" (pointer_expression "*(undefined4 *)(pwVar3 + 0x74)" * (cast_expression "(undefined4 *)(pwVar3 + 0x74)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pwVar3 + 0x74)" ( (binary_expression "pwVar3 + 0x74" identifier + number_literal) )))) = identifier) ;) (expression_statement "pwVar3[0x78] = (wostream)0x1;" (assignment_expression "pwVar3[0x78] = (wostream)0x1" (subscript_expression "pwVar3[0x78]" identifier [ number_literal ]) = (cast_expression "(wostream)0x1" ( (type_descriptor "wostream" type_identifier) ) number_literal)) ;) }) (else_clause "else {\n      uVar1 = *(undefined4 *)(pwVar3 + 0x74);\n    }" else (compound_statement "{\n      uVar1 = *(undefined4 *)(pwVar3 + 0x74);\n    }" { (expression_statement "uVar1 = *(undefined4 *)(pwVar3 + 0x74);" (assignment_expression "uVar1 = *(undefined4 *)(pwVar3 + 0x74)" identifier = (pointer_expression "*(undefined4 *)(pwVar3 + 0x74)" * (cast_expression "(undefined4 *)(pwVar3 + 0x74)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pwVar3 + 0x74)" ( (binary_expression "pwVar3 + 0x74" identifier + number_literal) ))))) ;) }))) (expression_statement "local_3c = CONCAT13(iVar4 == 0,local_3c._1_3_);" (assignment_expression "local_3c = CONCAT13(iVar4 == 0,local_3c._1_3_)" identifier = (call_expression "CONCAT13(iVar4 == 0,local_3c._1_3_)" identifier (argument_list "(iVar4 == 0,local_3c._1_3_)" ( (binary_expression "iVar4 == 0" identifier == number_literal) , (field_expression "local_3c._1_3_" identifier . field_identifier) )))) ;) comment (expression_statement "(**(code **)(*piVar5 + 0x18))(auStack_38,piVar5,iVar4,local_3c,pwVar3,uVar1);" (call_expression "(**(code **)(*piVar5 + 0x18))(auStack_38,piVar5,iVar4,local_3c,pwVar3,uVar1)" (parenthesized_expression "(**(code **)(*piVar5 + 0x18))" ( (pointer_expression "**(code **)(*piVar5 + 0x18)" * (pointer_expression "*(code **)(*piVar5 + 0x18)" * (cast_expression "(code **)(*piVar5 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 0x18)" ( (binary_expression "*piVar5 + 0x18" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(auStack_38,piVar5,iVar4,local_3c,pwVar3,uVar1)" ( identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (if_statement "if (local_34 != '\0') {\n                    /* try { // try from 00346484 to 0034648b has its CatchHandler @ 00346554 */\n      (*(code *)PTR_clear_004c5180)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);\n    }" if (parenthesized_expression "(local_34 != '\0')" ( (binary_expression "local_34 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* try { // try from 00346484 to 0034648b has its CatchHandler @ 00346554 */\n      (*(code *)PTR_clear_004c5180)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);\n    }" { comment (expression_statement "(*(code *)PTR_clear_004c5180)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);" (call_expression "(*(code *)PTR_clear_004c5180)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1)" (parenthesized_expression "(*(code *)PTR_clear_004c5180)" ( (pointer_expression "*(code *)PTR_clear_004c5180" * (cast_expression "(code *)PTR_clear_004c5180" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1)" ( (binary_expression "in_a0 + *(int *)(*(int *)in_a0 + -0xc)" identifier + (pointer_expression "*(int *)(*(int *)in_a0 + -0xc)" * (cast_expression "(int *)(*(int *)in_a0 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)in_a0 + -0xc)" ( (binary_expression "*(int *)in_a0 + -0xc" (pointer_expression "*(int *)in_a0" * (cast_expression "(int *)in_a0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) , (binary_expression "*(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1" (pointer_expression "*(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14)" * (cast_expression "(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14)" ( (binary_expression "in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14" (binary_expression "in_a0 + *(int *)(*(int *)in_a0 + -0xc)" identifier + (pointer_expression "*(int *)(*(int *)in_a0 + -0xc)" * (cast_expression "(int *)(*(int *)in_a0 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)in_a0 + -0xc)" ( (binary_expression "*(int *)in_a0 + -0xc" (pointer_expression "*(int *)in_a0" * (cast_expression "(int *)in_a0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) + number_literal) )))) | number_literal) ))) ;) })) })) (labeled_statement "sentry::~sentry(local_30);" statement_identifier : (ERROR ":" :) (expression_statement "~sentry(local_30);" (unary_expression "~sentry(local_30)" ~ (call_expression "sentry(local_30)" identifier (argument_list "(local_30)" ( identifier )))) ;)) (return_statement "return in_a0;" return identifier ;) (ERROR "}" }))
(translation_unit "wostream * std::wostream::_M_insert<unsigned_long_long>(ulonglong param_1)\n\n{\n  undefined4 uVar1;\n  wostream *in_a0;\n  int *piVar2;\n  wostream *pwVar3;\n  int iVar4;\n  int *piVar5;\n  undefined4 local_3c;\n  undefined1 auStack_38 [4];\n  char local_34;\n  sentry local_30 [12];\n  \n  sentry::sentry(local_30,in_a0);\n  if (local_30[0] != (sentry)0x0) {\n    pwVar3 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);\n    piVar5 = *(int **)(pwVar3 + 0x84);\n    if (piVar5 == (int *)0x0) {\n      pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return pwVar3;\n    }\n    iVar4 = *(int *)(pwVar3 + 0x7c);\n    if (pwVar3[0x78] == (wostream)0x0) {\n      piVar2 = *(int **)(pwVar3 + 0x80);\n      if (piVar2 == (int *)0x0) {\n        pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return pwVar3;\n      }\n                    \n      uVar1 = (**(code **)(*piVar2 + 0x28))(piVar2,0x20);\n      *(undefined4 *)(pwVar3 + 0x74) = uVar1;\n      pwVar3[0x78] = (wostream)0x1;\n    }\n    else {\n      uVar1 = *(undefined4 *)(pwVar3 + 0x74);\n    }\n    local_3c = CONCAT13(iVar4 == 0,local_3c._1_3_);\n                    \n    (**(code **)(*piVar5 + 0x18))(auStack_38,piVar5,iVar4,local_3c,pwVar3,uVar1);\n    if (local_34 != '\0') {\n                    \n      (*(code *)PTR_clear_004c5180)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);\n    }\n  }\n  sentry::~sentry(local_30);\n  return in_a0;\n}\n\n" (ERROR "wostream * std::" (binary_expression "wostream * std" identifier * identifier) : :) (labeled_statement "wostream::_M_insert<unsigned_long_long>(ulonglong param_1)\n\n{\n  undefined4 uVar1;\n  wostream *in_a0;" statement_identifier : (ERROR ":" :) (expression_statement "_M_insert<unsigned_long_long>(ulonglong param_1)\n\n{\n  undefined4 uVar1;\n  wostream *in_a0;" (binary_expression "_M_insert<unsigned_long_long>(ulonglong param_1)\n\n{\n  undefined4 uVar1;\n  wostream *in_a0" (binary_expression "_M_insert<unsigned_long_long" identifier < identifier) > (compound_literal_expression "(ulonglong param_1)\n\n{\n  undefined4 uVar1;\n  wostream *in_a0" ( (type_descriptor "ulonglong" type_identifier) (ERROR "param_1" identifier) ) (initializer_list "{\n  undefined4 uVar1;\n  wostream *in_a0" { (ERROR "undefined4 uVar1;" identifier identifier ;) (binary_expression "wostream *in_a0" identifier * identifier) }))) ;)) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "wostream *pwVar3;" type_identifier (pointer_declarator "*pwVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "undefined1 auStack_38 [4];" type_identifier (array_declarator "auStack_38 [4]" identifier [ number_literal ]) ;) (declaration "char local_34;" primitive_type identifier ;) (declaration "sentry local_30 [12];" type_identifier (array_declarator "local_30 [12]" identifier [ number_literal ]) ;) (labeled_statement "sentry::sentry(local_30,in_a0);" statement_identifier : (ERROR ":" :) (expression_statement "sentry(local_30,in_a0);" (call_expression "sentry(local_30,in_a0)" identifier (argument_list "(local_30,in_a0)" ( identifier , identifier ))) ;)) (if_statement "if (local_30[0] != (sentry)0x0) {\n    pwVar3 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);\n    piVar5 = *(int **)(pwVar3 + 0x84);\n    if (piVar5 == (int *)0x0) {\n      pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return pwVar3;\n    }\n    iVar4 = *(int *)(pwVar3 + 0x7c);\n    if (pwVar3[0x78] == (wostream)0x0) {\n      piVar2 = *(int **)(pwVar3 + 0x80);\n      if (piVar2 == (int *)0x0) {\n        pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return pwVar3;\n      }\n                    \n      uVar1 = (**(code **)(*piVar2 + 0x28))(piVar2,0x20);\n      *(undefined4 *)(pwVar3 + 0x74) = uVar1;\n      pwVar3[0x78] = (wostream)0x1;\n    }\n    else {\n      uVar1 = *(undefined4 *)(pwVar3 + 0x74);\n    }\n    local_3c = CONCAT13(iVar4 == 0,local_3c._1_3_);\n                    \n    (**(code **)(*piVar5 + 0x18))(auStack_38,piVar5,iVar4,local_3c,pwVar3,uVar1);\n    if (local_34 != '\0') {\n                    \n      (*(code *)PTR_clear_004c5180)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);\n    }\n  }" if (parenthesized_expression "(local_30[0] != (sentry)0x0)" ( (binary_expression "local_30[0] != (sentry)0x0" (subscript_expression "local_30[0]" identifier [ number_literal ]) != (cast_expression "(sentry)0x0" ( (type_descriptor "sentry" type_identifier) ) number_literal)) )) (compound_statement "{\n    pwVar3 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);\n    piVar5 = *(int **)(pwVar3 + 0x84);\n    if (piVar5 == (int *)0x0) {\n      pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return pwVar3;\n    }\n    iVar4 = *(int *)(pwVar3 + 0x7c);\n    if (pwVar3[0x78] == (wostream)0x0) {\n      piVar2 = *(int **)(pwVar3 + 0x80);\n      if (piVar2 == (int *)0x0) {\n        pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return pwVar3;\n      }\n                    \n      uVar1 = (**(code **)(*piVar2 + 0x28))(piVar2,0x20);\n      *(undefined4 *)(pwVar3 + 0x74) = uVar1;\n      pwVar3[0x78] = (wostream)0x1;\n    }\n    else {\n      uVar1 = *(undefined4 *)(pwVar3 + 0x74);\n    }\n    local_3c = CONCAT13(iVar4 == 0,local_3c._1_3_);\n                    \n    (**(code **)(*piVar5 + 0x18))(auStack_38,piVar5,iVar4,local_3c,pwVar3,uVar1);\n    if (local_34 != '\0') {\n                    \n      (*(code *)PTR_clear_004c5180)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);\n    }\n  }" { (expression_statement "pwVar3 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);" (assignment_expression "pwVar3 = in_a0 + *(int *)(*(int *)in_a0 + -0xc)" identifier = (binary_expression "in_a0 + *(int *)(*(int *)in_a0 + -0xc)" identifier + (pointer_expression "*(int *)(*(int *)in_a0 + -0xc)" * (cast_expression "(int *)(*(int *)in_a0 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)in_a0 + -0xc)" ( (binary_expression "*(int *)in_a0 + -0xc" (pointer_expression "*(int *)in_a0" * (cast_expression "(int *)in_a0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))))) ;) (expression_statement "piVar5 = *(int **)(pwVar3 + 0x84);" (assignment_expression "piVar5 = *(int **)(pwVar3 + 0x84)" identifier = (pointer_expression "*(int **)(pwVar3 + 0x84)" * (cast_expression "(int **)(pwVar3 + 0x84)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pwVar3 + 0x84)" ( (binary_expression "pwVar3 + 0x84" identifier + number_literal) ))))) ;) (if_statement "if (piVar5 == (int *)0x0) {\n      pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return pwVar3;\n    }" if (parenthesized_expression "(piVar5 == (int *)0x0)" ( (binary_expression "piVar5 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return pwVar3;\n    }" { (expression_statement "pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();" (assignment_expression "pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" identifier = (cast_expression "(wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" ( (type_descriptor "wostream *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___throw_bad_cast_004c22bc)()" (parenthesized_expression "(*(code *)PTR___throw_bad_cast_004c22bc)" ( (pointer_expression "*(code *)PTR___throw_bad_cast_004c22bc" * (cast_expression "(code *)PTR___throw_bad_cast_004c22bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (return_statement "return pwVar3;" return identifier ;) })) (expression_statement "iVar4 = *(int *)(pwVar3 + 0x7c);" (assignment_expression "iVar4 = *(int *)(pwVar3 + 0x7c)" identifier = (pointer_expression "*(int *)(pwVar3 + 0x7c)" * (cast_expression "(int *)(pwVar3 + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pwVar3 + 0x7c)" ( (binary_expression "pwVar3 + 0x7c" identifier + number_literal) ))))) ;) (if_statement "if (pwVar3[0x78] == (wostream)0x0) {\n      piVar2 = *(int **)(pwVar3 + 0x80);\n      if (piVar2 == (int *)0x0) {\n        pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return pwVar3;\n      }\n                    \n      uVar1 = (**(code **)(*piVar2 + 0x28))(piVar2,0x20);\n      *(undefined4 *)(pwVar3 + 0x74) = uVar1;\n      pwVar3[0x78] = (wostream)0x1;\n    }\n    else {\n      uVar1 = *(undefined4 *)(pwVar3 + 0x74);\n    }" if (parenthesized_expression "(pwVar3[0x78] == (wostream)0x0)" ( (binary_expression "pwVar3[0x78] == (wostream)0x0" (subscript_expression "pwVar3[0x78]" identifier [ number_literal ]) == (cast_expression "(wostream)0x0" ( (type_descriptor "wostream" type_identifier) ) number_literal)) )) (compound_statement "{\n      piVar2 = *(int **)(pwVar3 + 0x80);\n      if (piVar2 == (int *)0x0) {\n        pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return pwVar3;\n      }\n                    \n      uVar1 = (**(code **)(*piVar2 + 0x28))(piVar2,0x20);\n      *(undefined4 *)(pwVar3 + 0x74) = uVar1;\n      pwVar3[0x78] = (wostream)0x1;\n    }" { (expression_statement "piVar2 = *(int **)(pwVar3 + 0x80);" (assignment_expression "piVar2 = *(int **)(pwVar3 + 0x80)" identifier = (pointer_expression "*(int **)(pwVar3 + 0x80)" * (cast_expression "(int **)(pwVar3 + 0x80)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pwVar3 + 0x80)" ( (binary_expression "pwVar3 + 0x80" identifier + number_literal) ))))) ;) (if_statement "if (piVar2 == (int *)0x0) {\n        pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return pwVar3;\n      }" if (parenthesized_expression "(piVar2 == (int *)0x0)" ( (binary_expression "piVar2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return pwVar3;\n      }" { (expression_statement "pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();" (assignment_expression "pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" identifier = (cast_expression "(wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" ( (type_descriptor "wostream *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___throw_bad_cast_004c22bc)()" (parenthesized_expression "(*(code *)PTR___throw_bad_cast_004c22bc)" ( (pointer_expression "*(code *)PTR___throw_bad_cast_004c22bc" * (cast_expression "(code *)PTR___throw_bad_cast_004c22bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (return_statement "return pwVar3;" return identifier ;) })) (expression_statement "uVar1 = (**(code **)(*piVar2 + 0x28))(piVar2,0x20);" (assignment_expression "uVar1 = (**(code **)(*piVar2 + 0x28))(piVar2,0x20)" identifier = (call_expression "(**(code **)(*piVar2 + 0x28))(piVar2,0x20)" (parenthesized_expression "(**(code **)(*piVar2 + 0x28))" ( (pointer_expression "**(code **)(*piVar2 + 0x28)" * (pointer_expression "*(code **)(*piVar2 + 0x28)" * (cast_expression "(code **)(*piVar2 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0x28)" ( (binary_expression "*piVar2 + 0x28" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2,0x20)" ( identifier , number_literal )))) ;) (expression_statement "*(undefined4 *)(pwVar3 + 0x74) = uVar1;" (assignment_expression "*(undefined4 *)(pwVar3 + 0x74) = uVar1" (pointer_expression "*(undefined4 *)(pwVar3 + 0x74)" * (cast_expression "(undefined4 *)(pwVar3 + 0x74)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pwVar3 + 0x74)" ( (binary_expression "pwVar3 + 0x74" identifier + number_literal) )))) = identifier) ;) (expression_statement "pwVar3[0x78] = (wostream)0x1;" (assignment_expression "pwVar3[0x78] = (wostream)0x1" (subscript_expression "pwVar3[0x78]" identifier [ number_literal ]) = (cast_expression "(wostream)0x1" ( (type_descriptor "wostream" type_identifier) ) number_literal)) ;) }) (else_clause "else {\n      uVar1 = *(undefined4 *)(pwVar3 + 0x74);\n    }" else (compound_statement "{\n      uVar1 = *(undefined4 *)(pwVar3 + 0x74);\n    }" { (expression_statement "uVar1 = *(undefined4 *)(pwVar3 + 0x74);" (assignment_expression "uVar1 = *(undefined4 *)(pwVar3 + 0x74)" identifier = (pointer_expression "*(undefined4 *)(pwVar3 + 0x74)" * (cast_expression "(undefined4 *)(pwVar3 + 0x74)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pwVar3 + 0x74)" ( (binary_expression "pwVar3 + 0x74" identifier + number_literal) ))))) ;) }))) (expression_statement "local_3c = CONCAT13(iVar4 == 0,local_3c._1_3_);" (assignment_expression "local_3c = CONCAT13(iVar4 == 0,local_3c._1_3_)" identifier = (call_expression "CONCAT13(iVar4 == 0,local_3c._1_3_)" identifier (argument_list "(iVar4 == 0,local_3c._1_3_)" ( (binary_expression "iVar4 == 0" identifier == number_literal) , (field_expression "local_3c._1_3_" identifier . field_identifier) )))) ;) (expression_statement "(**(code **)(*piVar5 + 0x18))(auStack_38,piVar5,iVar4,local_3c,pwVar3,uVar1);" (call_expression "(**(code **)(*piVar5 + 0x18))(auStack_38,piVar5,iVar4,local_3c,pwVar3,uVar1)" (parenthesized_expression "(**(code **)(*piVar5 + 0x18))" ( (pointer_expression "**(code **)(*piVar5 + 0x18)" * (pointer_expression "*(code **)(*piVar5 + 0x18)" * (cast_expression "(code **)(*piVar5 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 0x18)" ( (binary_expression "*piVar5 + 0x18" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(auStack_38,piVar5,iVar4,local_3c,pwVar3,uVar1)" ( identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (if_statement "if (local_34 != '\0') {\n                    \n      (*(code *)PTR_clear_004c5180)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);\n    }" if (parenthesized_expression "(local_34 != '\0')" ( (binary_expression "local_34 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    \n      (*(code *)PTR_clear_004c5180)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);\n    }" { (expression_statement "(*(code *)PTR_clear_004c5180)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);" (call_expression "(*(code *)PTR_clear_004c5180)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1)" (parenthesized_expression "(*(code *)PTR_clear_004c5180)" ( (pointer_expression "*(code *)PTR_clear_004c5180" * (cast_expression "(code *)PTR_clear_004c5180" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1)" ( (binary_expression "in_a0 + *(int *)(*(int *)in_a0 + -0xc)" identifier + (pointer_expression "*(int *)(*(int *)in_a0 + -0xc)" * (cast_expression "(int *)(*(int *)in_a0 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)in_a0 + -0xc)" ( (binary_expression "*(int *)in_a0 + -0xc" (pointer_expression "*(int *)in_a0" * (cast_expression "(int *)in_a0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) , (binary_expression "*(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1" (pointer_expression "*(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14)" * (cast_expression "(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14)" ( (binary_expression "in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14" (binary_expression "in_a0 + *(int *)(*(int *)in_a0 + -0xc)" identifier + (pointer_expression "*(int *)(*(int *)in_a0 + -0xc)" * (cast_expression "(int *)(*(int *)in_a0 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)in_a0 + -0xc)" ( (binary_expression "*(int *)in_a0 + -0xc" (pointer_expression "*(int *)in_a0" * (cast_expression "(int *)in_a0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) + number_literal) )))) | number_literal) ))) ;) })) })) (labeled_statement "sentry::~sentry(local_30);" statement_identifier : (ERROR ":" :) (expression_statement "~sentry(local_30);" (unary_expression "~sentry(local_30)" ~ (call_expression "sentry(local_30)" identifier (argument_list "(local_30)" ( identifier )))) ;)) (return_statement "return in_a0;" return identifier ;) (ERROR "}" }))
(translation_unit (ERROR (binary_expression IDENT * IDENT) : :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (binary_expression (binary_expression IDENT < IDENT) > (compound_literal_expression ( (type_descriptor TYPE) (ERROR IDENT) ) (initializer_list { (ERROR IDENT IDENT ;) (binary_expression IDENT * IDENT) }))) ;)) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (cast_expression ( (type_descriptor TYPE) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (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 ( ))))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (cast_expression ( (type_descriptor TYPE) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (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 ( ))))) ;) (return_statement return 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 (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , LIT )))) ;) (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 (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) LIT)) ;) }) (else_clause else (compound_statement { (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 = (call_expression IDENT (argument_list ( (binary_expression IDENT == LIT) , (field_expression IDENT . field_identifier) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (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 ( (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))))) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))))) + LIT) )))) | LIT) ))) ;) })) })) (labeled_statement statement_identifier : (ERROR :) (expression_statement (unary_expression ~ (call_expression IDENT (argument_list ( IDENT )))) ;)) (return_statement return IDENT ;) (ERROR }))
(ERROR "wostream * std::" (binary_expression "wostream * std" (identifier "wostream") (* "*") (identifier "std")) (: ":") (: ":")) (labeled_statement "wostream::_M_insert<unsigned_long_long>(ulonglong param_1)\n\n{\n  undefined4 uVar1;\n  wostream *in_a0;" (statement_identifier "wostream") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_insert<unsigned_long_long>(ulonglong param_1)\n\n{\n  undefined4 uVar1;\n  wostream *in_a0;" (binary_expression "_M_insert<unsigned_long_long>(ulonglong param_1)\n\n{\n  undefined4 uVar1;\n  wostream *in_a0" (binary_expression "_M_insert<unsigned_long_long" (identifier "_M_insert") (< "<") (identifier "unsigned_long_long")) (> ">") (compound_literal_expression "(ulonglong param_1)\n\n{\n  undefined4 uVar1;\n  wostream *in_a0" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) (ERROR "param_1" (identifier "param_1")) () ")") (initializer_list "{\n  undefined4 uVar1;\n  wostream *in_a0" ({ "{") (ERROR "undefined4 uVar1;" (identifier "undefined4") (identifier "uVar1") (; ";")) (binary_expression "wostream *in_a0" (identifier "wostream") (* "*") (identifier "in_a0")) (} "")))) (; ";"))) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "wostream *pwVar3;" (type_identifier "wostream") (pointer_declarator "*pwVar3" (* "*") (identifier "pwVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "undefined4 local_3c;" (type_identifier "undefined4") (identifier "local_3c") (; ";")) (declaration "undefined1 auStack_38 [4];" (type_identifier "undefined1") (array_declarator "auStack_38 [4]" (identifier "auStack_38") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "char local_34;" (primitive_type "char") (identifier "local_34") (; ";")) (declaration "sentry local_30 [12];" (type_identifier "sentry") (array_declarator "local_30 [12]" (identifier "local_30") ([ "[") (number_literal "12") (] "]")) (; ";")) (labeled_statement "sentry::sentry(local_30,in_a0);" (statement_identifier "sentry") (: ":") (ERROR ":" (: ":")) (expression_statement "sentry(local_30,in_a0);" (call_expression "sentry(local_30,in_a0)" (identifier "sentry") (argument_list "(local_30,in_a0)" (( "(") (identifier "local_30") (, ",") (identifier "in_a0") () ")"))) (; ";"))) (if_statement "if (local_30[0] != (sentry)0x0) {\n    pwVar3 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);\n    piVar5 = *(int **)(pwVar3 + 0x84);\n    if (piVar5 == (int *)0x0) {\n      pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return pwVar3;\n    }\n    iVar4 = *(int *)(pwVar3 + 0x7c);\n    if (pwVar3[0x78] == (wostream)0x0) {\n      piVar2 = *(int **)(pwVar3 + 0x80);\n      if (piVar2 == (int *)0x0) {\n        pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return pwVar3;\n      }\n                    \n      uVar1 = (**(code **)(*piVar2 + 0x28))(piVar2,0x20);\n      *(undefined4 *)(pwVar3 + 0x74) = uVar1;\n      pwVar3[0x78] = (wostream)0x1;\n    }\n    else {\n      uVar1 = *(undefined4 *)(pwVar3 + 0x74);\n    }\n    local_3c = CONCAT13(iVar4 == 0,local_3c._1_3_);\n                    \n    (**(code **)(*piVar5 + 0x18))(auStack_38,piVar5,iVar4,local_3c,pwVar3,uVar1);\n    if (local_34 != '\0') {\n                    \n      (*(code *)PTR_clear_004c5180)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);\n    }\n  }" (if "if") (parenthesized_expression "(local_30[0] != (sentry)0x0)" (( "(") (binary_expression "local_30[0] != (sentry)0x0" (subscript_expression "local_30[0]" (identifier "local_30") ([ "[") (number_literal "0") (] "]")) (!= "!=") (cast_expression "(sentry)0x0" (( "(") (type_descriptor "sentry" (type_identifier "sentry")) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    pwVar3 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);\n    piVar5 = *(int **)(pwVar3 + 0x84);\n    if (piVar5 == (int *)0x0) {\n      pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return pwVar3;\n    }\n    iVar4 = *(int *)(pwVar3 + 0x7c);\n    if (pwVar3[0x78] == (wostream)0x0) {\n      piVar2 = *(int **)(pwVar3 + 0x80);\n      if (piVar2 == (int *)0x0) {\n        pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return pwVar3;\n      }\n                    \n      uVar1 = (**(code **)(*piVar2 + 0x28))(piVar2,0x20);\n      *(undefined4 *)(pwVar3 + 0x74) = uVar1;\n      pwVar3[0x78] = (wostream)0x1;\n    }\n    else {\n      uVar1 = *(undefined4 *)(pwVar3 + 0x74);\n    }\n    local_3c = CONCAT13(iVar4 == 0,local_3c._1_3_);\n                    \n    (**(code **)(*piVar5 + 0x18))(auStack_38,piVar5,iVar4,local_3c,pwVar3,uVar1);\n    if (local_34 != '\0') {\n                    \n      (*(code *)PTR_clear_004c5180)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);\n    }\n  }" ({ "{") (expression_statement "pwVar3 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);" (assignment_expression "pwVar3 = in_a0 + *(int *)(*(int *)in_a0 + -0xc)" (identifier "pwVar3") (= "=") (binary_expression "in_a0 + *(int *)(*(int *)in_a0 + -0xc)" (identifier "in_a0") (+ "+") (pointer_expression "*(int *)(*(int *)in_a0 + -0xc)" (* "*") (cast_expression "(int *)(*(int *)in_a0 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)in_a0 + -0xc)" (( "(") (binary_expression "*(int *)in_a0 + -0xc" (pointer_expression "*(int *)in_a0" (* "*") (cast_expression "(int *)in_a0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "in_a0"))) (+ "+") (number_literal "-0xc")) () ")")))))) (; ";")) (expression_statement "piVar5 = *(int **)(pwVar3 + 0x84);" (assignment_expression "piVar5 = *(int **)(pwVar3 + 0x84)" (identifier "piVar5") (= "=") (pointer_expression "*(int **)(pwVar3 + 0x84)" (* "*") (cast_expression "(int **)(pwVar3 + 0x84)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pwVar3 + 0x84)" (( "(") (binary_expression "pwVar3 + 0x84" (identifier "pwVar3") (+ "+") (number_literal "0x84")) () ")"))))) (; ";")) (if_statement "if (piVar5 == (int *)0x0) {\n      pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return pwVar3;\n    }" (if "if") (parenthesized_expression "(piVar5 == (int *)0x0)" (( "(") (binary_expression "piVar5 == (int *)0x0" (identifier "piVar5") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return pwVar3;\n    }" ({ "{") (expression_statement "pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();" (assignment_expression "pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" (identifier "pwVar3") (= "=") (cast_expression "(wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" (( "(") (type_descriptor "wostream *" (type_identifier "wostream") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___throw_bad_cast_004c22bc)()" (parenthesized_expression "(*(code *)PTR___throw_bad_cast_004c22bc)" (( "(") (pointer_expression "*(code *)PTR___throw_bad_cast_004c22bc" (* "*") (cast_expression "(code *)PTR___throw_bad_cast_004c22bc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___throw_bad_cast_004c22bc"))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (return_statement "return pwVar3;" (return "return") (identifier "pwVar3") (; ";")) (} "}"))) (expression_statement "iVar4 = *(int *)(pwVar3 + 0x7c);" (assignment_expression "iVar4 = *(int *)(pwVar3 + 0x7c)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(pwVar3 + 0x7c)" (* "*") (cast_expression "(int *)(pwVar3 + 0x7c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pwVar3 + 0x7c)" (( "(") (binary_expression "pwVar3 + 0x7c" (identifier "pwVar3") (+ "+") (number_literal "0x7c")) () ")"))))) (; ";")) (if_statement "if (pwVar3[0x78] == (wostream)0x0) {\n      piVar2 = *(int **)(pwVar3 + 0x80);\n      if (piVar2 == (int *)0x0) {\n        pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return pwVar3;\n      }\n                    \n      uVar1 = (**(code **)(*piVar2 + 0x28))(piVar2,0x20);\n      *(undefined4 *)(pwVar3 + 0x74) = uVar1;\n      pwVar3[0x78] = (wostream)0x1;\n    }\n    else {\n      uVar1 = *(undefined4 *)(pwVar3 + 0x74);\n    }" (if "if") (parenthesized_expression "(pwVar3[0x78] == (wostream)0x0)" (( "(") (binary_expression "pwVar3[0x78] == (wostream)0x0" (subscript_expression "pwVar3[0x78]" (identifier "pwVar3") ([ "[") (number_literal "0x78") (] "]")) (== "==") (cast_expression "(wostream)0x0" (( "(") (type_descriptor "wostream" (type_identifier "wostream")) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      piVar2 = *(int **)(pwVar3 + 0x80);\n      if (piVar2 == (int *)0x0) {\n        pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return pwVar3;\n      }\n                    \n      uVar1 = (**(code **)(*piVar2 + 0x28))(piVar2,0x20);\n      *(undefined4 *)(pwVar3 + 0x74) = uVar1;\n      pwVar3[0x78] = (wostream)0x1;\n    }" ({ "{") (expression_statement "piVar2 = *(int **)(pwVar3 + 0x80);" (assignment_expression "piVar2 = *(int **)(pwVar3 + 0x80)" (identifier "piVar2") (= "=") (pointer_expression "*(int **)(pwVar3 + 0x80)" (* "*") (cast_expression "(int **)(pwVar3 + 0x80)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pwVar3 + 0x80)" (( "(") (binary_expression "pwVar3 + 0x80" (identifier "pwVar3") (+ "+") (number_literal "0x80")) () ")"))))) (; ";")) (if_statement "if (piVar2 == (int *)0x0) {\n        pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return pwVar3;\n      }" (if "if") (parenthesized_expression "(piVar2 == (int *)0x0)" (( "(") (binary_expression "piVar2 == (int *)0x0" (identifier "piVar2") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return pwVar3;\n      }" ({ "{") (expression_statement "pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();" (assignment_expression "pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" (identifier "pwVar3") (= "=") (cast_expression "(wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" (( "(") (type_descriptor "wostream *" (type_identifier "wostream") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___throw_bad_cast_004c22bc)()" (parenthesized_expression "(*(code *)PTR___throw_bad_cast_004c22bc)" (( "(") (pointer_expression "*(code *)PTR___throw_bad_cast_004c22bc" (* "*") (cast_expression "(code *)PTR___throw_bad_cast_004c22bc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___throw_bad_cast_004c22bc"))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (return_statement "return pwVar3;" (return "return") (identifier "pwVar3") (; ";")) (} "}"))) (expression_statement "uVar1 = (**(code **)(*piVar2 + 0x28))(piVar2,0x20);" (assignment_expression "uVar1 = (**(code **)(*piVar2 + 0x28))(piVar2,0x20)" (identifier "uVar1") (= "=") (call_expression "(**(code **)(*piVar2 + 0x28))(piVar2,0x20)" (parenthesized_expression "(**(code **)(*piVar2 + 0x28))" (( "(") (pointer_expression "**(code **)(*piVar2 + 0x28)" (* "*") (pointer_expression "*(code **)(*piVar2 + 0x28)" (* "*") (cast_expression "(code **)(*piVar2 + 0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar2 + 0x28)" (( "(") (binary_expression "*piVar2 + 0x28" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (argument_list "(piVar2,0x20)" (( "(") (identifier "piVar2") (, ",") (number_literal "0x20") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(pwVar3 + 0x74) = uVar1;" (assignment_expression "*(undefined4 *)(pwVar3 + 0x74) = uVar1" (pointer_expression "*(undefined4 *)(pwVar3 + 0x74)" (* "*") (cast_expression "(undefined4 *)(pwVar3 + 0x74)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pwVar3 + 0x74)" (( "(") (binary_expression "pwVar3 + 0x74" (identifier "pwVar3") (+ "+") (number_literal "0x74")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "pwVar3[0x78] = (wostream)0x1;" (assignment_expression "pwVar3[0x78] = (wostream)0x1" (subscript_expression "pwVar3[0x78]" (identifier "pwVar3") ([ "[") (number_literal "0x78") (] "]")) (= "=") (cast_expression "(wostream)0x1" (( "(") (type_descriptor "wostream" (type_identifier "wostream")) () ")") (number_literal "0x1"))) (; ";")) (} "}")) (else_clause "else {\n      uVar1 = *(undefined4 *)(pwVar3 + 0x74);\n    }" (else "else") (compound_statement "{\n      uVar1 = *(undefined4 *)(pwVar3 + 0x74);\n    }" ({ "{") (expression_statement "uVar1 = *(undefined4 *)(pwVar3 + 0x74);" (assignment_expression "uVar1 = *(undefined4 *)(pwVar3 + 0x74)" (identifier "uVar1") (= "=") (pointer_expression "*(undefined4 *)(pwVar3 + 0x74)" (* "*") (cast_expression "(undefined4 *)(pwVar3 + 0x74)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pwVar3 + 0x74)" (( "(") (binary_expression "pwVar3 + 0x74" (identifier "pwVar3") (+ "+") (number_literal "0x74")) () ")"))))) (; ";")) (} "}")))) (expression_statement "local_3c = CONCAT13(iVar4 == 0,local_3c._1_3_);" (assignment_expression "local_3c = CONCAT13(iVar4 == 0,local_3c._1_3_)" (identifier "local_3c") (= "=") (call_expression "CONCAT13(iVar4 == 0,local_3c._1_3_)" (identifier "CONCAT13") (argument_list "(iVar4 == 0,local_3c._1_3_)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) (, ",") (field_expression "local_3c._1_3_" (identifier "local_3c") (. ".") (field_identifier "_1_3_")) () ")")))) (; ";")) (expression_statement "(**(code **)(*piVar5 + 0x18))(auStack_38,piVar5,iVar4,local_3c,pwVar3,uVar1);" (call_expression "(**(code **)(*piVar5 + 0x18))(auStack_38,piVar5,iVar4,local_3c,pwVar3,uVar1)" (parenthesized_expression "(**(code **)(*piVar5 + 0x18))" (( "(") (pointer_expression "**(code **)(*piVar5 + 0x18)" (* "*") (pointer_expression "*(code **)(*piVar5 + 0x18)" (* "*") (cast_expression "(code **)(*piVar5 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar5 + 0x18)" (( "(") (binary_expression "*piVar5 + 0x18" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (argument_list "(auStack_38,piVar5,iVar4,local_3c,pwVar3,uVar1)" (( "(") (identifier "auStack_38") (, ",") (identifier "piVar5") (, ",") (identifier "iVar4") (, ",") (identifier "local_3c") (, ",") (identifier "pwVar3") (, ",") (identifier "uVar1") () ")"))) (; ";")) (if_statement "if (local_34 != '\0') {\n                    \n      (*(code *)PTR_clear_004c5180)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);\n    }" (if "if") (parenthesized_expression "(local_34 != '\0')" (( "(") (binary_expression "local_34 != '\0'" (identifier "local_34") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                    \n      (*(code *)PTR_clear_004c5180)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);\n    }" ({ "{") (expression_statement "(*(code *)PTR_clear_004c5180)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);" (call_expression "(*(code *)PTR_clear_004c5180)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1)" (parenthesized_expression "(*(code *)PTR_clear_004c5180)" (( "(") (pointer_expression "*(code *)PTR_clear_004c5180" (* "*") (cast_expression "(code *)PTR_clear_004c5180" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_clear_004c5180"))) () ")")) (argument_list "(in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1)" (( "(") (binary_expression "in_a0 + *(int *)(*(int *)in_a0 + -0xc)" (identifier "in_a0") (+ "+") (pointer_expression "*(int *)(*(int *)in_a0 + -0xc)" (* "*") (cast_expression "(int *)(*(int *)in_a0 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)in_a0 + -0xc)" (( "(") (binary_expression "*(int *)in_a0 + -0xc" (pointer_expression "*(int *)in_a0" (* "*") (cast_expression "(int *)in_a0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "in_a0"))) (+ "+") (number_literal "-0xc")) () ")"))))) (, ",") (binary_expression "*(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1" (pointer_expression "*(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14)" (* "*") (cast_expression "(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14)" (( "(") (binary_expression "in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14" (binary_expression "in_a0 + *(int *)(*(int *)in_a0 + -0xc)" (identifier "in_a0") (+ "+") (pointer_expression "*(int *)(*(int *)in_a0 + -0xc)" (* "*") (cast_expression "(int *)(*(int *)in_a0 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)in_a0 + -0xc)" (( "(") (binary_expression "*(int *)in_a0 + -0xc" (pointer_expression "*(int *)in_a0" (* "*") (cast_expression "(int *)in_a0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "in_a0"))) (+ "+") (number_literal "-0xc")) () ")"))))) (+ "+") (number_literal "0x14")) () ")")))) (| "|") (number_literal "1")) () ")"))) (; ";")) (} "}"))) (} "}"))) (labeled_statement "sentry::~sentry(local_30);" (statement_identifier "sentry") (: ":") (ERROR ":" (: ":")) (expression_statement "~sentry(local_30);" (unary_expression "~sentry(local_30)" (~ "~") (call_expression "sentry(local_30)" (identifier "sentry") (argument_list "(local_30)" (( "(") (identifier "local_30") () ")")))) (; ";"))) (return_statement "return in_a0;" (return "return") (identifier "in_a0") (; ";")) (ERROR "}" (} "}"))

/* std::wostream& std::wostream::_M_insert<unsigned long long>(unsigned long long) */

var_3 * std::wostream::var_1<var_2>(type_1 param_1)

{
  type_2 uVar1;
  var_3 *var_4;
  int *var_7;
  var_3 *var_5;
  int var_9;
  int *var_6;
  type_2 local_3c;
  type_3 auStack_38 [4];
  char var_10;
  type_4 local_30 [12];
  
  sentry::type_4(local_30,var_4);
  if (local_30[0] != (type_4)0x0) {
    var_5 = var_4 + *(int *)(*(int *)var_4 + -0xc);
    var_6 = *(int **)(var_5 + 0x84);
    if (var_6 == (int *)0x0) {
      var_5 = (var_3 *)(*(type_5 *)PTR___throw_bad_cast_004c22bc)();
      return var_5;
    }
    var_9 = *(int *)(var_5 + 0x7c);
    if (var_5[0x78] == (var_3)0x0) {
      var_7 = *(int **)(var_5 + 0x80);
      if (var_7 == (int *)0x0) {
        var_5 = (var_3 *)(*(type_5 *)PTR___throw_bad_cast_004c22bc)();
        return var_5;
      }
                    /* try { // try from 003464e0 to 00346507 has its CatchHandler @ 00346508 */
      uVar1 = (**(type_5 **)(*var_7 + 0x28))(var_7,0x20);
      *(type_2 *)(var_5 + 0x74) = uVar1;
      var_5[0x78] = (var_3)0x1;
    }
    else {
      uVar1 = *(type_2 *)(var_5 + 0x74);
    }
    local_3c = var_8(var_9 == 0,local_3c._1_3_);
                    /* try { // try from 00346458 to 0034645f has its CatchHandler @ 00346508 */
    (**(type_5 **)(*var_6 + 0x18))(auStack_38,var_6,var_9,local_3c,var_5,uVar1);
    if (var_10 != '\0') {
                    /* try { // try from 00346484 to 0034648b has its CatchHandler @ 00346554 */
      (*(type_5 *)PTR_clear_004c5180)
                (var_4 + *(int *)(*(int *)var_4 + -0xc),
                 *(type_6 *)(var_4 + *(int *)(*(int *)var_4 + -0xc) + 0x14) | 1);
    }
  }
  sentry::~type_4(local_30);
  return var_4;
}


(translation_unit (ERROR (binary_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (ERROR) (expression_statement (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (compound_literal_expression type: (type_descriptor type: (type_identifier)) (ERROR (identifier)) value: (initializer_list (ERROR (identifier) (identifier)) (binary_expression left: (identifier) right: (identifier)) (MISSING "}")))))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (labeled_statement label: (statement_identifier) (ERROR) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (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))))) (return_statement (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (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))))) (return_statement (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier) (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))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (number_literal))))) 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)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (field_expression argument: (identifier) field: (field_identifier)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) 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 (binary_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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal)))))) (binary_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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal)))))) right: (number_literal))))) right: (number_literal))))))))) (labeled_statement label: (statement_identifier) (ERROR) (expression_statement (unary_expression argument: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (return_statement (identifier)) (ERROR))

/* std::wostream& std::wostream::_M_insert<unsigned long long>(unsigned long long) */

wostream * std::wostream::MASKED(ulonglong param_1)

{
  undefined4 uVar1;
  wostream *in_a0;
  int *piVar2;
  wostream *pwVar3;
  int iVar4;
  int *piVar5;
  undefined4 local_3c;
  undefined1 auStack_38 [4];
  char local_34;
  sentry local_30 [12];
  
  sentry::sentry(local_30,in_a0);
  if (local_30[0] != (sentry)0x0) {
    pwVar3 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);
    piVar5 = *(int **)(pwVar3 + 0x84);
    if (piVar5 == (int *)0x0) {
      pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();
      return pwVar3;
    }
    iVar4 = *(int *)(pwVar3 + 0x7c);
    if (pwVar3[0x78] == (wostream)0x0) {
      piVar2 = *(int **)(pwVar3 + 0x80);
      if (piVar2 == (int *)0x0) {
        pwVar3 = (wostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();
        return pwVar3;
      }
                    /* try { // try from 003464e0 to 00346507 has its CatchHandler @ 00346508 */
      uVar1 = (**(code **)(*piVar2 + 0x28))(piVar2,0x20);
      *(undefined4 *)(pwVar3 + 0x74) = uVar1;
      pwVar3[0x78] = (wostream)0x1;
    }
    else {
      uVar1 = *(undefined4 *)(pwVar3 + 0x74);
    }
    local_3c = CONCAT13(iVar4 == 0,local_3c._1_3_);
                    /* try { // try from 00346458 to 0034645f has its CatchHandler @ 00346508 */
    (**(code **)(*piVar5 + 0x18))(auStack_38,piVar5,iVar4,local_3c,pwVar3,uVar1);
    if (local_34 != '\0') {
                    /* try { // try from 00346484 to 0034648b has its CatchHandler @ 00346554 */
      (*(code *)PTR_clear_004c5180)
                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),
                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);
    }
  }
  sentry::~sentry(local_30);
  return in_a0;
}

