
/* std::ostream& std::ostream::_M_insert<long double>(long double) */

ostream * std::ostream::_M_insert<long_double>(longdouble param_1)

{
  int iVar1;
  ostream *in_a0;
  undefined4 in_a2;
  undefined4 in_a3;
  ostream *poVar2;
  int iVar3;
  int *piVar4;
  int *piVar5;
  undefined8 uVar6;
  undefined4 local_3c;
  undefined1 auStack_38 [4];
  char local_34;
  sentry local_30 [8];
  
  uVar6 = CONCAT44(in_a2,in_a3);
  sentry::sentry(local_30,in_a0);
  if (local_30[0] != (sentry)0x0) {
    poVar2 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);
    piVar4 = *(int **)(poVar2 + 0x80);
    if (piVar4 == (int *)0x0) {
      poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();
      return poVar2;
    }
    iVar3 = *(int *)(poVar2 + 0x78);
    if (poVar2[0x75] == (ostream)0x0) {
      piVar5 = *(int **)(poVar2 + 0x7c);
      if (piVar5 == (int *)0x0) {
        poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();
        return poVar2;
      }
      if (*(char *)(piVar5 + 7) == '\0') {
                    /* try { // try from 0034363c to 0034367f has its CatchHandler @ 00343680 */
        (*(code *)PTR__M_widen_init_004c22c0)(piVar5);
        iVar1 = 0x20;
        if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {
          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);
        }
      }
      else {
        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);
      }
      poVar2[0x74] = SUB41(iVar1,0);
      poVar2[0x75] = (ostream)0x1;
    }
    else {
      iVar1 = (int)(char)poVar2[0x74];
    }
    local_3c = CONCAT13(iVar3 == 0,local_3c._1_3_);
                    /* try { // try from 0034359c to 003435a3 has its CatchHandler @ 00343680 */
    (**(code **)(*piVar4 + 0x20))(auStack_38,piVar4,iVar3,local_3c,poVar2,iVar1,uVar6);
    if (local_34 != '\0') {
                    /* try { // try from 003435c8 to 003435cf has its CatchHandler @ 003436cc */
      (*(code *)PTR_clear_004c22b8)
                (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::ostream& std::ostream::_M_insert<long double>(long double) */

ostream * std::ostream::_M_insert<long_double>(longdouble param_1)

{
  int iVar1;
  ostream *in_a0;
  undefined4 in_a2;
  undefined4 in_a3;
  ostream *poVar2;
  int iVar3;
  int *piVar4;
  int *piVar5;
  undefined8 uVar6;
  undefined4 local_3c;
  undefined1 auStack_38 [4];
  char local_34;
  sentry local_30 [8];
  
  uVar6 = CONCAT44(in_a2,in_a3);
  sentry::sentry(local_30,in_a0);
  if (local_30[0] != (sentry)0x0) {
    poVar2 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);
    piVar4 = *(int **)(poVar2 + 0x80);
    if (piVar4 == (int *)0x0) {
      poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();
      return poVar2;
    }
    iVar3 = *(int *)(poVar2 + 0x78);
    if (poVar2[0x75] == (ostream)0x0) {
      piVar5 = *(int **)(poVar2 + 0x7c);
      if (piVar5 == (int *)0x0) {
        poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();
        return poVar2;
      }
      if (*(char *)(piVar5 + 7) == '\0') {
                    /* try { // try from 0034363c to 0034367f has its CatchHandler @ 00343680 */
        (*(code *)PTR__M_widen_init_004c22c0)(piVar5);
        iVar1 = 0x20;
        if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {
          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);
        }
      }
      else {
        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);
      }
      poVar2[0x74] = SUB41(iVar1,0);
      poVar2[0x75] = (ostream)0x1;
    }
    else {
      iVar1 = (int)(char)poVar2[0x74];
    }
    local_3c = CONCAT13(iVar3 == 0,local_3c._1_3_);
                    /* try { // try from 0034359c to 003435a3 has its CatchHandler @ 00343680 */
    (**(code **)(*piVar4 + 0x20))(auStack_38,piVar4,iVar3,local_3c,poVar2,iVar1,uVar6);
    if (local_34 != '\0') {
                    /* try { // try from 003435c8 to 003435cf has its CatchHandler @ 003436cc */
      (*(code *)PTR_clear_004c22b8)
                (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,0x5d5c
addu gp,gp,t9
addiu sp,sp,-0x68
lw t9,-0x3f24(gp)
or a1,a0,zero
sdc1 f20,0x60(sp)
mtc1 a3,f20
sw s2,0x48(sp)
addiu s2,sp,0x38
sw gp,0x20(sp)
sw s1,0x44(sp)
or s1,a0,zero
sw ra,0x5c(sp)
or a0,s2,zero
sw s6,0x58(sp)
sw s5,0x54(sp)
sw s4,0x50(sp)
sw s3,0x4c(sp)
mthc1 a2,f20
bal 0x003412e0
_sw s0,0x40(sp)
lbu v0,0x38(sp)
beq v0,zero,0x003435d4
_lw gp,0x20(sp)
lw v0,0x0(s1)
lw s0,-0xc(v0)
addu s0,s1,s0
lw s4,0x80(s0)
beq s4,zero,0x00343670
_lw t9,-0x6f84(gp)
lw s3,0x78(s0)
lbu v0,0x75(s0)
beq v0,zero,0x00343610
_sltiu s5,s3,0x1
lb v0,0x74(s0)
lw v1,0x0(s4)
addiu a0,sp,0x30
sdc1 f20,0x18(sp)
or a2,s3,zero
sb s5,0x2c(sp)
or a1,s4,zero
sw v0,0x14(sp)
sw s0,0x10(sp)
sw s3,0x28(sp)
lw t9,0x20(v1)
jalr t9
_lw a3,0x2c(sp)
lbu v0,0x34(sp)
beq v0,zero,0x003435d4
_lw gp,0x20(sp)
lw v0,0x0(s1)
lw t9,-0x6f88(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,-0x3f20(gp)
bal 0x00341380
_or a0,s2,zero
or v0,s1,zero
lw ra,0x5c(sp)
lw s6,0x58(sp)
lw s5,0x54(sp)
lw s4,0x50(sp)
lw s3,0x4c(sp)
lw s2,0x48(sp)
lw s1,0x44(sp)
lw s0,0x40(sp)
ldc1 f20,0x60(sp)
jr ra
_addiu sp,sp,0x68
lw s6,0x7c(s0)
beq s6,zero,0x00343678
_lw t9,-0x6f84(gp)
lb v0,0x1c(s6)
beq v0,zero,0x0034363c
_lw t9,-0x6f80(gp)
lb v0,0x3d(s6)
li v1,0x1
sb v0,0x74(s0)
b 0x00343574
_sb v1,0x75(s0)
jalr t9
_or a0,s6,zero
lw gp,0x20(sp)
lw v1,0x0(s6)
lw v0,-0x6f6c(gp)
lw t9,0x18(v1)
beq t9,v0,0x0034362c
_li v0,0x20
li a1,0x20
jalr t9
_or a0,s6,zero
b 0x00343630
_li v1,0x1
jalr t9
_nop
jalr t9
_nop
(translation_unit "/* std::ostream& std::ostream::_M_insert<long double>(long double) */\n\nostream * std::ostream::_M_insert<long_double>(longdouble param_1)\n\n{\n  int iVar1;\n  ostream *in_a0;\n  undefined4 in_a2;\n  undefined4 in_a3;\n  ostream *poVar2;\n  int iVar3;\n  int *piVar4;\n  int *piVar5;\n  undefined8 uVar6;\n  undefined4 local_3c;\n  undefined1 auStack_38 [4];\n  char local_34;\n  sentry local_30 [8];\n  \n  uVar6 = CONCAT44(in_a2,in_a3);\n  sentry::sentry(local_30,in_a0);\n  if (local_30[0] != (sentry)0x0) {\n    poVar2 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);\n    piVar4 = *(int **)(poVar2 + 0x80);\n    if (piVar4 == (int *)0x0) {\n      poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return poVar2;\n    }\n    iVar3 = *(int *)(poVar2 + 0x78);\n    if (poVar2[0x75] == (ostream)0x0) {\n      piVar5 = *(int **)(poVar2 + 0x7c);\n      if (piVar5 == (int *)0x0) {\n        poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return poVar2;\n      }\n      if (*(char *)(piVar5 + 7) == '\0') {\n                    /* try { // try from 0034363c to 0034367f has its CatchHandler @ 00343680 */\n        (*(code *)PTR__M_widen_init_004c22c0)(piVar5);\n        iVar1 = 0x20;\n        if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }\n      }\n      else {\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }\n      poVar2[0x74] = SUB41(iVar1,0);\n      poVar2[0x75] = (ostream)0x1;\n    }\n    else {\n      iVar1 = (int)(char)poVar2[0x74];\n    }\n    local_3c = CONCAT13(iVar3 == 0,local_3c._1_3_);\n                    /* try { // try from 0034359c to 003435a3 has its CatchHandler @ 00343680 */\n    (**(code **)(*piVar4 + 0x20))(auStack_38,piVar4,iVar3,local_3c,poVar2,iVar1,uVar6);\n    if (local_34 != '\0') {\n                    /* try { // try from 003435c8 to 003435cf has its CatchHandler @ 003436cc */\n      (*(code *)PTR_clear_004c22b8)\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 "ostream * std::" (binary_expression "ostream * std" identifier * identifier) : :) (labeled_statement "ostream::_M_insert<long_double>(longdouble param_1)\n\n{\n  int iVar1;\n  ostream *in_a0;" statement_identifier : (ERROR ":" :) (expression_statement "_M_insert<long_double>(longdouble param_1)\n\n{\n  int iVar1;\n  ostream *in_a0;" (binary_expression "_M_insert<long_double>(longdouble param_1)\n\n{\n  int iVar1;\n  ostream *in_a0" (binary_expression "_M_insert<long_double" identifier < identifier) > (compound_literal_expression "(longdouble param_1)\n\n{\n  int iVar1;\n  ostream *in_a0" ( (type_descriptor "longdouble" type_identifier) (ERROR "param_1" identifier) ) (initializer_list "{\n  int iVar1;\n  ostream *in_a0" { (ERROR "int iVar1;" identifier identifier ;) (binary_expression "ostream *in_a0" identifier * identifier) }))) ;)) (declaration "undefined4 in_a2;" type_identifier identifier ;) (declaration "undefined4 in_a3;" type_identifier identifier ;) (declaration "ostream *poVar2;" type_identifier (pointer_declarator "*poVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "undefined8 uVar6;" type_identifier 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 [8];" type_identifier (array_declarator "local_30 [8]" identifier [ number_literal ]) ;) (expression_statement "uVar6 = CONCAT44(in_a2,in_a3);" (assignment_expression "uVar6 = CONCAT44(in_a2,in_a3)" identifier = (call_expression "CONCAT44(in_a2,in_a3)" identifier (argument_list "(in_a2,in_a3)" ( identifier , identifier )))) ;) (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    poVar2 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);\n    piVar4 = *(int **)(poVar2 + 0x80);\n    if (piVar4 == (int *)0x0) {\n      poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return poVar2;\n    }\n    iVar3 = *(int *)(poVar2 + 0x78);\n    if (poVar2[0x75] == (ostream)0x0) {\n      piVar5 = *(int **)(poVar2 + 0x7c);\n      if (piVar5 == (int *)0x0) {\n        poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return poVar2;\n      }\n      if (*(char *)(piVar5 + 7) == '\0') {\n                    /* try { // try from 0034363c to 0034367f has its CatchHandler @ 00343680 */\n        (*(code *)PTR__M_widen_init_004c22c0)(piVar5);\n        iVar1 = 0x20;\n        if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }\n      }\n      else {\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }\n      poVar2[0x74] = SUB41(iVar1,0);\n      poVar2[0x75] = (ostream)0x1;\n    }\n    else {\n      iVar1 = (int)(char)poVar2[0x74];\n    }\n    local_3c = CONCAT13(iVar3 == 0,local_3c._1_3_);\n                    /* try { // try from 0034359c to 003435a3 has its CatchHandler @ 00343680 */\n    (**(code **)(*piVar4 + 0x20))(auStack_38,piVar4,iVar3,local_3c,poVar2,iVar1,uVar6);\n    if (local_34 != '\0') {\n                    /* try { // try from 003435c8 to 003435cf has its CatchHandler @ 003436cc */\n      (*(code *)PTR_clear_004c22b8)\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    poVar2 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);\n    piVar4 = *(int **)(poVar2 + 0x80);\n    if (piVar4 == (int *)0x0) {\n      poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return poVar2;\n    }\n    iVar3 = *(int *)(poVar2 + 0x78);\n    if (poVar2[0x75] == (ostream)0x0) {\n      piVar5 = *(int **)(poVar2 + 0x7c);\n      if (piVar5 == (int *)0x0) {\n        poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return poVar2;\n      }\n      if (*(char *)(piVar5 + 7) == '\0') {\n                    /* try { // try from 0034363c to 0034367f has its CatchHandler @ 00343680 */\n        (*(code *)PTR__M_widen_init_004c22c0)(piVar5);\n        iVar1 = 0x20;\n        if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }\n      }\n      else {\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }\n      poVar2[0x74] = SUB41(iVar1,0);\n      poVar2[0x75] = (ostream)0x1;\n    }\n    else {\n      iVar1 = (int)(char)poVar2[0x74];\n    }\n    local_3c = CONCAT13(iVar3 == 0,local_3c._1_3_);\n                    /* try { // try from 0034359c to 003435a3 has its CatchHandler @ 00343680 */\n    (**(code **)(*piVar4 + 0x20))(auStack_38,piVar4,iVar3,local_3c,poVar2,iVar1,uVar6);\n    if (local_34 != '\0') {\n                    /* try { // try from 003435c8 to 003435cf has its CatchHandler @ 003436cc */\n      (*(code *)PTR_clear_004c22b8)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);\n    }\n  }" { (expression_statement "poVar2 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);" (assignment_expression "poVar2 = 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 "piVar4 = *(int **)(poVar2 + 0x80);" (assignment_expression "piVar4 = *(int **)(poVar2 + 0x80)" identifier = (pointer_expression "*(int **)(poVar2 + 0x80)" * (cast_expression "(int **)(poVar2 + 0x80)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(poVar2 + 0x80)" ( (binary_expression "poVar2 + 0x80" identifier + number_literal) ))))) ;) (if_statement "if (piVar4 == (int *)0x0) {\n      poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return poVar2;\n    }" if (parenthesized_expression "(piVar4 == (int *)0x0)" ( (binary_expression "piVar4 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return poVar2;\n    }" { (expression_statement "poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();" (assignment_expression "poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" identifier = (cast_expression "(ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" ( (type_descriptor "ostream *" 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 poVar2;" return identifier ;) })) (expression_statement "iVar3 = *(int *)(poVar2 + 0x78);" (assignment_expression "iVar3 = *(int *)(poVar2 + 0x78)" identifier = (pointer_expression "*(int *)(poVar2 + 0x78)" * (cast_expression "(int *)(poVar2 + 0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(poVar2 + 0x78)" ( (binary_expression "poVar2 + 0x78" identifier + number_literal) ))))) ;) (if_statement "if (poVar2[0x75] == (ostream)0x0) {\n      piVar5 = *(int **)(poVar2 + 0x7c);\n      if (piVar5 == (int *)0x0) {\n        poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return poVar2;\n      }\n      if (*(char *)(piVar5 + 7) == '\0') {\n                    /* try { // try from 0034363c to 0034367f has its CatchHandler @ 00343680 */\n        (*(code *)PTR__M_widen_init_004c22c0)(piVar5);\n        iVar1 = 0x20;\n        if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }\n      }\n      else {\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }\n      poVar2[0x74] = SUB41(iVar1,0);\n      poVar2[0x75] = (ostream)0x1;\n    }\n    else {\n      iVar1 = (int)(char)poVar2[0x74];\n    }" if (parenthesized_expression "(poVar2[0x75] == (ostream)0x0)" ( (binary_expression "poVar2[0x75] == (ostream)0x0" (subscript_expression "poVar2[0x75]" identifier [ number_literal ]) == (cast_expression "(ostream)0x0" ( (type_descriptor "ostream" type_identifier) ) number_literal)) )) (compound_statement "{\n      piVar5 = *(int **)(poVar2 + 0x7c);\n      if (piVar5 == (int *)0x0) {\n        poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return poVar2;\n      }\n      if (*(char *)(piVar5 + 7) == '\0') {\n                    /* try { // try from 0034363c to 0034367f has its CatchHandler @ 00343680 */\n        (*(code *)PTR__M_widen_init_004c22c0)(piVar5);\n        iVar1 = 0x20;\n        if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }\n      }\n      else {\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }\n      poVar2[0x74] = SUB41(iVar1,0);\n      poVar2[0x75] = (ostream)0x1;\n    }" { (expression_statement "piVar5 = *(int **)(poVar2 + 0x7c);" (assignment_expression "piVar5 = *(int **)(poVar2 + 0x7c)" identifier = (pointer_expression "*(int **)(poVar2 + 0x7c)" * (cast_expression "(int **)(poVar2 + 0x7c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(poVar2 + 0x7c)" ( (binary_expression "poVar2 + 0x7c" identifier + number_literal) ))))) ;) (if_statement "if (piVar5 == (int *)0x0) {\n        poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return poVar2;\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        poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return poVar2;\n      }" { (expression_statement "poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();" (assignment_expression "poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" identifier = (cast_expression "(ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" ( (type_descriptor "ostream *" 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 poVar2;" return identifier ;) })) (if_statement "if (*(char *)(piVar5 + 7) == '\0') {\n                    /* try { // try from 0034363c to 0034367f has its CatchHandler @ 00343680 */\n        (*(code *)PTR__M_widen_init_004c22c0)(piVar5);\n        iVar1 = 0x20;\n        if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }\n      }\n      else {\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }" if (parenthesized_expression "(*(char *)(piVar5 + 7) == '\0')" ( (binary_expression "*(char *)(piVar5 + 7) == '\0'" (pointer_expression "*(char *)(piVar5 + 7)" * (cast_expression "(char *)(piVar5 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar5 + 7)" ( (binary_expression "piVar5 + 7" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* try { // try from 0034363c to 0034367f has its CatchHandler @ 00343680 */\n        (*(code *)PTR__M_widen_init_004c22c0)(piVar5);\n        iVar1 = 0x20;\n        if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }\n      }" { comment (expression_statement "(*(code *)PTR__M_widen_init_004c22c0)(piVar5);" (call_expression "(*(code *)PTR__M_widen_init_004c22c0)(piVar5)" (parenthesized_expression "(*(code *)PTR__M_widen_init_004c22c0)" ( (pointer_expression "*(code *)PTR__M_widen_init_004c22c0" * (cast_expression "(code *)PTR__M_widen_init_004c22c0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar5)" ( identifier ))) ;) (expression_statement "iVar1 = 0x20;" (assignment_expression "iVar1 = 0x20" identifier = number_literal) ;) (if_statement "if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }" if (parenthesized_expression "(*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4)" ( (binary_expression "*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4" (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) )))) != (cast_expression "(code *)PTR_do_widen_004c22d4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }" { (expression_statement "iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);" (assignment_expression "iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20)" identifier = (call_expression "(**(code **)(*piVar5 + 0x18))(piVar5,0x20)" (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 "(piVar5,0x20)" ( identifier , number_literal )))) ;) })) }) (else_clause "else {\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }" else (compound_statement "{\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }" { (expression_statement "iVar1 = (int)*(char *)((int)piVar5 + 0x3d);" (assignment_expression "iVar1 = (int)*(char *)((int)piVar5 + 0x3d)" identifier = (cast_expression "(int)*(char *)((int)piVar5 + 0x3d)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(char *)((int)piVar5 + 0x3d)" * (cast_expression "(char *)((int)piVar5 + 0x3d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar5 + 0x3d)" ( (binary_expression "(int)piVar5 + 0x3d" (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) }))) (expression_statement "poVar2[0x74] = SUB41(iVar1,0);" (assignment_expression "poVar2[0x74] = SUB41(iVar1,0)" (subscript_expression "poVar2[0x74]" identifier [ number_literal ]) = (call_expression "SUB41(iVar1,0)" identifier (argument_list "(iVar1,0)" ( identifier , number_literal )))) ;) (expression_statement "poVar2[0x75] = (ostream)0x1;" (assignment_expression "poVar2[0x75] = (ostream)0x1" (subscript_expression "poVar2[0x75]" identifier [ number_literal ]) = (cast_expression "(ostream)0x1" ( (type_descriptor "ostream" type_identifier) ) number_literal)) ;) }) (else_clause "else {\n      iVar1 = (int)(char)poVar2[0x74];\n    }" else (compound_statement "{\n      iVar1 = (int)(char)poVar2[0x74];\n    }" { (expression_statement "iVar1 = (int)(char)poVar2[0x74];" (assignment_expression "iVar1 = (int)(char)poVar2[0x74]" identifier = (cast_expression "(int)(char)poVar2[0x74]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)poVar2[0x74]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "poVar2[0x74]" identifier [ number_literal ])))) ;) }))) (expression_statement "local_3c = CONCAT13(iVar3 == 0,local_3c._1_3_);" (assignment_expression "local_3c = CONCAT13(iVar3 == 0,local_3c._1_3_)" identifier = (call_expression "CONCAT13(iVar3 == 0,local_3c._1_3_)" identifier (argument_list "(iVar3 == 0,local_3c._1_3_)" ( (binary_expression "iVar3 == 0" identifier == number_literal) , (field_expression "local_3c._1_3_" identifier . field_identifier) )))) ;) comment (expression_statement "(**(code **)(*piVar4 + 0x20))(auStack_38,piVar4,iVar3,local_3c,poVar2,iVar1,uVar6);" (call_expression "(**(code **)(*piVar4 + 0x20))(auStack_38,piVar4,iVar3,local_3c,poVar2,iVar1,uVar6)" (parenthesized_expression "(**(code **)(*piVar4 + 0x20))" ( (pointer_expression "**(code **)(*piVar4 + 0x20)" * (pointer_expression "*(code **)(*piVar4 + 0x20)" * (cast_expression "(code **)(*piVar4 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar4 + 0x20)" ( (binary_expression "*piVar4 + 0x20" (pointer_expression "*piVar4" * identifier) + number_literal) ))))) )) (argument_list "(auStack_38,piVar4,iVar3,local_3c,poVar2,iVar1,uVar6)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (if_statement "if (local_34 != '\0') {\n                    /* try { // try from 003435c8 to 003435cf has its CatchHandler @ 003436cc */\n      (*(code *)PTR_clear_004c22b8)\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 003435c8 to 003435cf has its CatchHandler @ 003436cc */\n      (*(code *)PTR_clear_004c22b8)\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_004c22b8)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);" (call_expression "(*(code *)PTR_clear_004c22b8)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1)" (parenthesized_expression "(*(code *)PTR_clear_004c22b8)" ( (pointer_expression "*(code *)PTR_clear_004c22b8" * (cast_expression "(code *)PTR_clear_004c22b8" ( (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::ostream& std::ostream::_M_insert<long double>(long double) */\n\nostream * std::ostream::_M_insert<long_double>(longdouble param_1)\n\n{\n  int iVar1;\n  ostream *in_a0;\n  undefined4 in_a2;\n  undefined4 in_a3;\n  ostream *poVar2;\n  int iVar3;\n  int *piVar4;\n  int *piVar5;\n  undefined8 uVar6;\n  undefined4 local_3c;\n  undefined1 auStack_38 [4];\n  char local_34;\n  sentry local_30 [8];\n  \n  uVar6 = CONCAT44(in_a2,in_a3);\n  sentry::sentry(local_30,in_a0);\n  if (local_30[0] != (sentry)0x0) {\n    poVar2 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);\n    piVar4 = *(int **)(poVar2 + 0x80);\n    if (piVar4 == (int *)0x0) {\n      poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return poVar2;\n    }\n    iVar3 = *(int *)(poVar2 + 0x78);\n    if (poVar2[0x75] == (ostream)0x0) {\n      piVar5 = *(int **)(poVar2 + 0x7c);\n      if (piVar5 == (int *)0x0) {\n        poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return poVar2;\n      }\n      if (*(char *)(piVar5 + 7) == '\0') {\n                    /* try { // try from 0034363c to 0034367f has its CatchHandler @ 00343680 */\n        (*(code *)PTR__M_widen_init_004c22c0)(piVar5);\n        iVar1 = 0x20;\n        if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }\n      }\n      else {\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }\n      poVar2[0x74] = SUB41(iVar1,0);\n      poVar2[0x75] = (ostream)0x1;\n    }\n    else {\n      iVar1 = (int)(char)poVar2[0x74];\n    }\n    local_3c = CONCAT13(iVar3 == 0,local_3c._1_3_);\n                    /* try { // try from 0034359c to 003435a3 has its CatchHandler @ 00343680 */\n    (**(code **)(*piVar4 + 0x20))(auStack_38,piVar4,iVar3,local_3c,poVar2,iVar1,uVar6);\n    if (local_34 != '\0') {\n                    /* try { // try from 003435c8 to 003435cf has its CatchHandler @ 003436cc */\n      (*(code *)PTR_clear_004c22b8)\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 "ostream * std::" (binary_expression "ostream * std" identifier * identifier) : :) (labeled_statement "ostream::_M_insert<long_double>(longdouble param_1)\n\n{\n  int iVar1;\n  ostream *in_a0;" statement_identifier : (ERROR ":" :) (expression_statement "_M_insert<long_double>(longdouble param_1)\n\n{\n  int iVar1;\n  ostream *in_a0;" (binary_expression "_M_insert<long_double>(longdouble param_1)\n\n{\n  int iVar1;\n  ostream *in_a0" (binary_expression "_M_insert<long_double" identifier < identifier) > (compound_literal_expression "(longdouble param_1)\n\n{\n  int iVar1;\n  ostream *in_a0" ( (type_descriptor "longdouble" type_identifier) (ERROR "param_1" identifier) ) (initializer_list "{\n  int iVar1;\n  ostream *in_a0" { (ERROR "int iVar1;" identifier identifier ;) (binary_expression "ostream *in_a0" identifier * identifier) }))) ;)) (declaration "undefined4 in_a2;" type_identifier identifier ;) (declaration "undefined4 in_a3;" type_identifier identifier ;) (declaration "ostream *poVar2;" type_identifier (pointer_declarator "*poVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "undefined8 uVar6;" type_identifier 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 [8];" type_identifier (array_declarator "local_30 [8]" identifier [ number_literal ]) ;) (expression_statement "uVar6 = CONCAT44(in_a2,in_a3);" (assignment_expression "uVar6 = CONCAT44(in_a2,in_a3)" identifier = (call_expression "CONCAT44(in_a2,in_a3)" identifier (argument_list "(in_a2,in_a3)" ( identifier , identifier )))) ;) (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    poVar2 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);\n    piVar4 = *(int **)(poVar2 + 0x80);\n    if (piVar4 == (int *)0x0) {\n      poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return poVar2;\n    }\n    iVar3 = *(int *)(poVar2 + 0x78);\n    if (poVar2[0x75] == (ostream)0x0) {\n      piVar5 = *(int **)(poVar2 + 0x7c);\n      if (piVar5 == (int *)0x0) {\n        poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return poVar2;\n      }\n      if (*(char *)(piVar5 + 7) == '\0') {\n                    /* try { // try from 0034363c to 0034367f has its CatchHandler @ 00343680 */\n        (*(code *)PTR__M_widen_init_004c22c0)(piVar5);\n        iVar1 = 0x20;\n        if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }\n      }\n      else {\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }\n      poVar2[0x74] = SUB41(iVar1,0);\n      poVar2[0x75] = (ostream)0x1;\n    }\n    else {\n      iVar1 = (int)(char)poVar2[0x74];\n    }\n    local_3c = CONCAT13(iVar3 == 0,local_3c._1_3_);\n                    /* try { // try from 0034359c to 003435a3 has its CatchHandler @ 00343680 */\n    (**(code **)(*piVar4 + 0x20))(auStack_38,piVar4,iVar3,local_3c,poVar2,iVar1,uVar6);\n    if (local_34 != '\0') {\n                    /* try { // try from 003435c8 to 003435cf has its CatchHandler @ 003436cc */\n      (*(code *)PTR_clear_004c22b8)\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    poVar2 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);\n    piVar4 = *(int **)(poVar2 + 0x80);\n    if (piVar4 == (int *)0x0) {\n      poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return poVar2;\n    }\n    iVar3 = *(int *)(poVar2 + 0x78);\n    if (poVar2[0x75] == (ostream)0x0) {\n      piVar5 = *(int **)(poVar2 + 0x7c);\n      if (piVar5 == (int *)0x0) {\n        poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return poVar2;\n      }\n      if (*(char *)(piVar5 + 7) == '\0') {\n                    /* try { // try from 0034363c to 0034367f has its CatchHandler @ 00343680 */\n        (*(code *)PTR__M_widen_init_004c22c0)(piVar5);\n        iVar1 = 0x20;\n        if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }\n      }\n      else {\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }\n      poVar2[0x74] = SUB41(iVar1,0);\n      poVar2[0x75] = (ostream)0x1;\n    }\n    else {\n      iVar1 = (int)(char)poVar2[0x74];\n    }\n    local_3c = CONCAT13(iVar3 == 0,local_3c._1_3_);\n                    /* try { // try from 0034359c to 003435a3 has its CatchHandler @ 00343680 */\n    (**(code **)(*piVar4 + 0x20))(auStack_38,piVar4,iVar3,local_3c,poVar2,iVar1,uVar6);\n    if (local_34 != '\0') {\n                    /* try { // try from 003435c8 to 003435cf has its CatchHandler @ 003436cc */\n      (*(code *)PTR_clear_004c22b8)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);\n    }\n  }" { (expression_statement "poVar2 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);" (assignment_expression "poVar2 = 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 "piVar4 = *(int **)(poVar2 + 0x80);" (assignment_expression "piVar4 = *(int **)(poVar2 + 0x80)" identifier = (pointer_expression "*(int **)(poVar2 + 0x80)" * (cast_expression "(int **)(poVar2 + 0x80)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(poVar2 + 0x80)" ( (binary_expression "poVar2 + 0x80" identifier + number_literal) ))))) ;) (if_statement "if (piVar4 == (int *)0x0) {\n      poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return poVar2;\n    }" if (parenthesized_expression "(piVar4 == (int *)0x0)" ( (binary_expression "piVar4 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return poVar2;\n    }" { (expression_statement "poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();" (assignment_expression "poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" identifier = (cast_expression "(ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" ( (type_descriptor "ostream *" 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 poVar2;" return identifier ;) })) (expression_statement "iVar3 = *(int *)(poVar2 + 0x78);" (assignment_expression "iVar3 = *(int *)(poVar2 + 0x78)" identifier = (pointer_expression "*(int *)(poVar2 + 0x78)" * (cast_expression "(int *)(poVar2 + 0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(poVar2 + 0x78)" ( (binary_expression "poVar2 + 0x78" identifier + number_literal) ))))) ;) (if_statement "if (poVar2[0x75] == (ostream)0x0) {\n      piVar5 = *(int **)(poVar2 + 0x7c);\n      if (piVar5 == (int *)0x0) {\n        poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return poVar2;\n      }\n      if (*(char *)(piVar5 + 7) == '\0') {\n                    /* try { // try from 0034363c to 0034367f has its CatchHandler @ 00343680 */\n        (*(code *)PTR__M_widen_init_004c22c0)(piVar5);\n        iVar1 = 0x20;\n        if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }\n      }\n      else {\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }\n      poVar2[0x74] = SUB41(iVar1,0);\n      poVar2[0x75] = (ostream)0x1;\n    }\n    else {\n      iVar1 = (int)(char)poVar2[0x74];\n    }" if (parenthesized_expression "(poVar2[0x75] == (ostream)0x0)" ( (binary_expression "poVar2[0x75] == (ostream)0x0" (subscript_expression "poVar2[0x75]" identifier [ number_literal ]) == (cast_expression "(ostream)0x0" ( (type_descriptor "ostream" type_identifier) ) number_literal)) )) (compound_statement "{\n      piVar5 = *(int **)(poVar2 + 0x7c);\n      if (piVar5 == (int *)0x0) {\n        poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return poVar2;\n      }\n      if (*(char *)(piVar5 + 7) == '\0') {\n                    /* try { // try from 0034363c to 0034367f has its CatchHandler @ 00343680 */\n        (*(code *)PTR__M_widen_init_004c22c0)(piVar5);\n        iVar1 = 0x20;\n        if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }\n      }\n      else {\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }\n      poVar2[0x74] = SUB41(iVar1,0);\n      poVar2[0x75] = (ostream)0x1;\n    }" { (expression_statement "piVar5 = *(int **)(poVar2 + 0x7c);" (assignment_expression "piVar5 = *(int **)(poVar2 + 0x7c)" identifier = (pointer_expression "*(int **)(poVar2 + 0x7c)" * (cast_expression "(int **)(poVar2 + 0x7c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(poVar2 + 0x7c)" ( (binary_expression "poVar2 + 0x7c" identifier + number_literal) ))))) ;) (if_statement "if (piVar5 == (int *)0x0) {\n        poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return poVar2;\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        poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return poVar2;\n      }" { (expression_statement "poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();" (assignment_expression "poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" identifier = (cast_expression "(ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" ( (type_descriptor "ostream *" 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 poVar2;" return identifier ;) })) (if_statement "if (*(char *)(piVar5 + 7) == '\0') {\n                    /* try { // try from 0034363c to 0034367f has its CatchHandler @ 00343680 */\n        (*(code *)PTR__M_widen_init_004c22c0)(piVar5);\n        iVar1 = 0x20;\n        if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }\n      }\n      else {\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }" if (parenthesized_expression "(*(char *)(piVar5 + 7) == '\0')" ( (binary_expression "*(char *)(piVar5 + 7) == '\0'" (pointer_expression "*(char *)(piVar5 + 7)" * (cast_expression "(char *)(piVar5 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar5 + 7)" ( (binary_expression "piVar5 + 7" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* try { // try from 0034363c to 0034367f has its CatchHandler @ 00343680 */\n        (*(code *)PTR__M_widen_init_004c22c0)(piVar5);\n        iVar1 = 0x20;\n        if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }\n      }" { comment (expression_statement "(*(code *)PTR__M_widen_init_004c22c0)(piVar5);" (call_expression "(*(code *)PTR__M_widen_init_004c22c0)(piVar5)" (parenthesized_expression "(*(code *)PTR__M_widen_init_004c22c0)" ( (pointer_expression "*(code *)PTR__M_widen_init_004c22c0" * (cast_expression "(code *)PTR__M_widen_init_004c22c0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar5)" ( identifier ))) ;) (expression_statement "iVar1 = 0x20;" (assignment_expression "iVar1 = 0x20" identifier = number_literal) ;) (if_statement "if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }" if (parenthesized_expression "(*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4)" ( (binary_expression "*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4" (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) )))) != (cast_expression "(code *)PTR_do_widen_004c22d4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }" { (expression_statement "iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);" (assignment_expression "iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20)" identifier = (call_expression "(**(code **)(*piVar5 + 0x18))(piVar5,0x20)" (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 "(piVar5,0x20)" ( identifier , number_literal )))) ;) })) }) (else_clause "else {\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }" else (compound_statement "{\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }" { (expression_statement "iVar1 = (int)*(char *)((int)piVar5 + 0x3d);" (assignment_expression "iVar1 = (int)*(char *)((int)piVar5 + 0x3d)" identifier = (cast_expression "(int)*(char *)((int)piVar5 + 0x3d)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(char *)((int)piVar5 + 0x3d)" * (cast_expression "(char *)((int)piVar5 + 0x3d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar5 + 0x3d)" ( (binary_expression "(int)piVar5 + 0x3d" (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) }))) (expression_statement "poVar2[0x74] = SUB41(iVar1,0);" (assignment_expression "poVar2[0x74] = SUB41(iVar1,0)" (subscript_expression "poVar2[0x74]" identifier [ number_literal ]) = (call_expression "SUB41(iVar1,0)" identifier (argument_list "(iVar1,0)" ( identifier , number_literal )))) ;) (expression_statement "poVar2[0x75] = (ostream)0x1;" (assignment_expression "poVar2[0x75] = (ostream)0x1" (subscript_expression "poVar2[0x75]" identifier [ number_literal ]) = (cast_expression "(ostream)0x1" ( (type_descriptor "ostream" type_identifier) ) number_literal)) ;) }) (else_clause "else {\n      iVar1 = (int)(char)poVar2[0x74];\n    }" else (compound_statement "{\n      iVar1 = (int)(char)poVar2[0x74];\n    }" { (expression_statement "iVar1 = (int)(char)poVar2[0x74];" (assignment_expression "iVar1 = (int)(char)poVar2[0x74]" identifier = (cast_expression "(int)(char)poVar2[0x74]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)poVar2[0x74]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "poVar2[0x74]" identifier [ number_literal ])))) ;) }))) (expression_statement "local_3c = CONCAT13(iVar3 == 0,local_3c._1_3_);" (assignment_expression "local_3c = CONCAT13(iVar3 == 0,local_3c._1_3_)" identifier = (call_expression "CONCAT13(iVar3 == 0,local_3c._1_3_)" identifier (argument_list "(iVar3 == 0,local_3c._1_3_)" ( (binary_expression "iVar3 == 0" identifier == number_literal) , (field_expression "local_3c._1_3_" identifier . field_identifier) )))) ;) comment (expression_statement "(**(code **)(*piVar4 + 0x20))(auStack_38,piVar4,iVar3,local_3c,poVar2,iVar1,uVar6);" (call_expression "(**(code **)(*piVar4 + 0x20))(auStack_38,piVar4,iVar3,local_3c,poVar2,iVar1,uVar6)" (parenthesized_expression "(**(code **)(*piVar4 + 0x20))" ( (pointer_expression "**(code **)(*piVar4 + 0x20)" * (pointer_expression "*(code **)(*piVar4 + 0x20)" * (cast_expression "(code **)(*piVar4 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar4 + 0x20)" ( (binary_expression "*piVar4 + 0x20" (pointer_expression "*piVar4" * identifier) + number_literal) ))))) )) (argument_list "(auStack_38,piVar4,iVar3,local_3c,poVar2,iVar1,uVar6)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (if_statement "if (local_34 != '\0') {\n                    /* try { // try from 003435c8 to 003435cf has its CatchHandler @ 003436cc */\n      (*(code *)PTR_clear_004c22b8)\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 003435c8 to 003435cf has its CatchHandler @ 003436cc */\n      (*(code *)PTR_clear_004c22b8)\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_004c22b8)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);" (call_expression "(*(code *)PTR_clear_004c22b8)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1)" (parenthesized_expression "(*(code *)PTR_clear_004c22b8)" ( (pointer_expression "*(code *)PTR_clear_004c22b8" * (cast_expression "(code *)PTR_clear_004c22b8" ( (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 "ostream * std::ostream::_M_insert<long_double>(longdouble param_1)\n\n{\n  int iVar1;\n  ostream *in_a0;\n  undefined4 in_a2;\n  undefined4 in_a3;\n  ostream *poVar2;\n  int iVar3;\n  int *piVar4;\n  int *piVar5;\n  undefined8 uVar6;\n  undefined4 local_3c;\n  undefined1 auStack_38 [4];\n  char local_34;\n  sentry local_30 [8];\n  \n  uVar6 = CONCAT44(in_a2,in_a3);\n  sentry::sentry(local_30,in_a0);\n  if (local_30[0] != (sentry)0x0) {\n    poVar2 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);\n    piVar4 = *(int **)(poVar2 + 0x80);\n    if (piVar4 == (int *)0x0) {\n      poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return poVar2;\n    }\n    iVar3 = *(int *)(poVar2 + 0x78);\n    if (poVar2[0x75] == (ostream)0x0) {\n      piVar5 = *(int **)(poVar2 + 0x7c);\n      if (piVar5 == (int *)0x0) {\n        poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return poVar2;\n      }\n      if (*(char *)(piVar5 + 7) == '\0') {\n                    \n        (*(code *)PTR__M_widen_init_004c22c0)(piVar5);\n        iVar1 = 0x20;\n        if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }\n      }\n      else {\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }\n      poVar2[0x74] = SUB41(iVar1,0);\n      poVar2[0x75] = (ostream)0x1;\n    }\n    else {\n      iVar1 = (int)(char)poVar2[0x74];\n    }\n    local_3c = CONCAT13(iVar3 == 0,local_3c._1_3_);\n                    \n    (**(code **)(*piVar4 + 0x20))(auStack_38,piVar4,iVar3,local_3c,poVar2,iVar1,uVar6);\n    if (local_34 != '\0') {\n                    \n      (*(code *)PTR_clear_004c22b8)\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 "ostream * std::" (binary_expression "ostream * std" identifier * identifier) : :) (labeled_statement "ostream::_M_insert<long_double>(longdouble param_1)\n\n{\n  int iVar1;\n  ostream *in_a0;" statement_identifier : (ERROR ":" :) (expression_statement "_M_insert<long_double>(longdouble param_1)\n\n{\n  int iVar1;\n  ostream *in_a0;" (binary_expression "_M_insert<long_double>(longdouble param_1)\n\n{\n  int iVar1;\n  ostream *in_a0" (binary_expression "_M_insert<long_double" identifier < identifier) > (compound_literal_expression "(longdouble param_1)\n\n{\n  int iVar1;\n  ostream *in_a0" ( (type_descriptor "longdouble" type_identifier) (ERROR "param_1" identifier) ) (initializer_list "{\n  int iVar1;\n  ostream *in_a0" { (ERROR "int iVar1;" identifier identifier ;) (binary_expression "ostream *in_a0" identifier * identifier) }))) ;)) (declaration "undefined4 in_a2;" type_identifier identifier ;) (declaration "undefined4 in_a3;" type_identifier identifier ;) (declaration "ostream *poVar2;" type_identifier (pointer_declarator "*poVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "undefined8 uVar6;" type_identifier 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 [8];" type_identifier (array_declarator "local_30 [8]" identifier [ number_literal ]) ;) (expression_statement "uVar6 = CONCAT44(in_a2,in_a3);" (assignment_expression "uVar6 = CONCAT44(in_a2,in_a3)" identifier = (call_expression "CONCAT44(in_a2,in_a3)" identifier (argument_list "(in_a2,in_a3)" ( identifier , identifier )))) ;) (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    poVar2 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);\n    piVar4 = *(int **)(poVar2 + 0x80);\n    if (piVar4 == (int *)0x0) {\n      poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return poVar2;\n    }\n    iVar3 = *(int *)(poVar2 + 0x78);\n    if (poVar2[0x75] == (ostream)0x0) {\n      piVar5 = *(int **)(poVar2 + 0x7c);\n      if (piVar5 == (int *)0x0) {\n        poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return poVar2;\n      }\n      if (*(char *)(piVar5 + 7) == '\0') {\n                    \n        (*(code *)PTR__M_widen_init_004c22c0)(piVar5);\n        iVar1 = 0x20;\n        if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }\n      }\n      else {\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }\n      poVar2[0x74] = SUB41(iVar1,0);\n      poVar2[0x75] = (ostream)0x1;\n    }\n    else {\n      iVar1 = (int)(char)poVar2[0x74];\n    }\n    local_3c = CONCAT13(iVar3 == 0,local_3c._1_3_);\n                    \n    (**(code **)(*piVar4 + 0x20))(auStack_38,piVar4,iVar3,local_3c,poVar2,iVar1,uVar6);\n    if (local_34 != '\0') {\n                    \n      (*(code *)PTR_clear_004c22b8)\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    poVar2 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);\n    piVar4 = *(int **)(poVar2 + 0x80);\n    if (piVar4 == (int *)0x0) {\n      poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return poVar2;\n    }\n    iVar3 = *(int *)(poVar2 + 0x78);\n    if (poVar2[0x75] == (ostream)0x0) {\n      piVar5 = *(int **)(poVar2 + 0x7c);\n      if (piVar5 == (int *)0x0) {\n        poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return poVar2;\n      }\n      if (*(char *)(piVar5 + 7) == '\0') {\n                    \n        (*(code *)PTR__M_widen_init_004c22c0)(piVar5);\n        iVar1 = 0x20;\n        if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }\n      }\n      else {\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }\n      poVar2[0x74] = SUB41(iVar1,0);\n      poVar2[0x75] = (ostream)0x1;\n    }\n    else {\n      iVar1 = (int)(char)poVar2[0x74];\n    }\n    local_3c = CONCAT13(iVar3 == 0,local_3c._1_3_);\n                    \n    (**(code **)(*piVar4 + 0x20))(auStack_38,piVar4,iVar3,local_3c,poVar2,iVar1,uVar6);\n    if (local_34 != '\0') {\n                    \n      (*(code *)PTR_clear_004c22b8)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);\n    }\n  }" { (expression_statement "poVar2 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);" (assignment_expression "poVar2 = 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 "piVar4 = *(int **)(poVar2 + 0x80);" (assignment_expression "piVar4 = *(int **)(poVar2 + 0x80)" identifier = (pointer_expression "*(int **)(poVar2 + 0x80)" * (cast_expression "(int **)(poVar2 + 0x80)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(poVar2 + 0x80)" ( (binary_expression "poVar2 + 0x80" identifier + number_literal) ))))) ;) (if_statement "if (piVar4 == (int *)0x0) {\n      poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return poVar2;\n    }" if (parenthesized_expression "(piVar4 == (int *)0x0)" ( (binary_expression "piVar4 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return poVar2;\n    }" { (expression_statement "poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();" (assignment_expression "poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" identifier = (cast_expression "(ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" ( (type_descriptor "ostream *" 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 poVar2;" return identifier ;) })) (expression_statement "iVar3 = *(int *)(poVar2 + 0x78);" (assignment_expression "iVar3 = *(int *)(poVar2 + 0x78)" identifier = (pointer_expression "*(int *)(poVar2 + 0x78)" * (cast_expression "(int *)(poVar2 + 0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(poVar2 + 0x78)" ( (binary_expression "poVar2 + 0x78" identifier + number_literal) ))))) ;) (if_statement "if (poVar2[0x75] == (ostream)0x0) {\n      piVar5 = *(int **)(poVar2 + 0x7c);\n      if (piVar5 == (int *)0x0) {\n        poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return poVar2;\n      }\n      if (*(char *)(piVar5 + 7) == '\0') {\n                    \n        (*(code *)PTR__M_widen_init_004c22c0)(piVar5);\n        iVar1 = 0x20;\n        if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }\n      }\n      else {\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }\n      poVar2[0x74] = SUB41(iVar1,0);\n      poVar2[0x75] = (ostream)0x1;\n    }\n    else {\n      iVar1 = (int)(char)poVar2[0x74];\n    }" if (parenthesized_expression "(poVar2[0x75] == (ostream)0x0)" ( (binary_expression "poVar2[0x75] == (ostream)0x0" (subscript_expression "poVar2[0x75]" identifier [ number_literal ]) == (cast_expression "(ostream)0x0" ( (type_descriptor "ostream" type_identifier) ) number_literal)) )) (compound_statement "{\n      piVar5 = *(int **)(poVar2 + 0x7c);\n      if (piVar5 == (int *)0x0) {\n        poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return poVar2;\n      }\n      if (*(char *)(piVar5 + 7) == '\0') {\n                    \n        (*(code *)PTR__M_widen_init_004c22c0)(piVar5);\n        iVar1 = 0x20;\n        if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }\n      }\n      else {\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }\n      poVar2[0x74] = SUB41(iVar1,0);\n      poVar2[0x75] = (ostream)0x1;\n    }" { (expression_statement "piVar5 = *(int **)(poVar2 + 0x7c);" (assignment_expression "piVar5 = *(int **)(poVar2 + 0x7c)" identifier = (pointer_expression "*(int **)(poVar2 + 0x7c)" * (cast_expression "(int **)(poVar2 + 0x7c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(poVar2 + 0x7c)" ( (binary_expression "poVar2 + 0x7c" identifier + number_literal) ))))) ;) (if_statement "if (piVar5 == (int *)0x0) {\n        poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return poVar2;\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        poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return poVar2;\n      }" { (expression_statement "poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();" (assignment_expression "poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" identifier = (cast_expression "(ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" ( (type_descriptor "ostream *" 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 poVar2;" return identifier ;) })) (if_statement "if (*(char *)(piVar5 + 7) == '\0') {\n                    \n        (*(code *)PTR__M_widen_init_004c22c0)(piVar5);\n        iVar1 = 0x20;\n        if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }\n      }\n      else {\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }" if (parenthesized_expression "(*(char *)(piVar5 + 7) == '\0')" ( (binary_expression "*(char *)(piVar5 + 7) == '\0'" (pointer_expression "*(char *)(piVar5 + 7)" * (cast_expression "(char *)(piVar5 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar5 + 7)" ( (binary_expression "piVar5 + 7" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    \n        (*(code *)PTR__M_widen_init_004c22c0)(piVar5);\n        iVar1 = 0x20;\n        if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }\n      }" { (expression_statement "(*(code *)PTR__M_widen_init_004c22c0)(piVar5);" (call_expression "(*(code *)PTR__M_widen_init_004c22c0)(piVar5)" (parenthesized_expression "(*(code *)PTR__M_widen_init_004c22c0)" ( (pointer_expression "*(code *)PTR__M_widen_init_004c22c0" * (cast_expression "(code *)PTR__M_widen_init_004c22c0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar5)" ( identifier ))) ;) (expression_statement "iVar1 = 0x20;" (assignment_expression "iVar1 = 0x20" identifier = number_literal) ;) (if_statement "if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }" if (parenthesized_expression "(*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4)" ( (binary_expression "*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4" (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) )))) != (cast_expression "(code *)PTR_do_widen_004c22d4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }" { (expression_statement "iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);" (assignment_expression "iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20)" identifier = (call_expression "(**(code **)(*piVar5 + 0x18))(piVar5,0x20)" (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 "(piVar5,0x20)" ( identifier , number_literal )))) ;) })) }) (else_clause "else {\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }" else (compound_statement "{\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }" { (expression_statement "iVar1 = (int)*(char *)((int)piVar5 + 0x3d);" (assignment_expression "iVar1 = (int)*(char *)((int)piVar5 + 0x3d)" identifier = (cast_expression "(int)*(char *)((int)piVar5 + 0x3d)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(char *)((int)piVar5 + 0x3d)" * (cast_expression "(char *)((int)piVar5 + 0x3d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar5 + 0x3d)" ( (binary_expression "(int)piVar5 + 0x3d" (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) }))) (expression_statement "poVar2[0x74] = SUB41(iVar1,0);" (assignment_expression "poVar2[0x74] = SUB41(iVar1,0)" (subscript_expression "poVar2[0x74]" identifier [ number_literal ]) = (call_expression "SUB41(iVar1,0)" identifier (argument_list "(iVar1,0)" ( identifier , number_literal )))) ;) (expression_statement "poVar2[0x75] = (ostream)0x1;" (assignment_expression "poVar2[0x75] = (ostream)0x1" (subscript_expression "poVar2[0x75]" identifier [ number_literal ]) = (cast_expression "(ostream)0x1" ( (type_descriptor "ostream" type_identifier) ) number_literal)) ;) }) (else_clause "else {\n      iVar1 = (int)(char)poVar2[0x74];\n    }" else (compound_statement "{\n      iVar1 = (int)(char)poVar2[0x74];\n    }" { (expression_statement "iVar1 = (int)(char)poVar2[0x74];" (assignment_expression "iVar1 = (int)(char)poVar2[0x74]" identifier = (cast_expression "(int)(char)poVar2[0x74]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)poVar2[0x74]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "poVar2[0x74]" identifier [ number_literal ])))) ;) }))) (expression_statement "local_3c = CONCAT13(iVar3 == 0,local_3c._1_3_);" (assignment_expression "local_3c = CONCAT13(iVar3 == 0,local_3c._1_3_)" identifier = (call_expression "CONCAT13(iVar3 == 0,local_3c._1_3_)" identifier (argument_list "(iVar3 == 0,local_3c._1_3_)" ( (binary_expression "iVar3 == 0" identifier == number_literal) , (field_expression "local_3c._1_3_" identifier . field_identifier) )))) ;) (expression_statement "(**(code **)(*piVar4 + 0x20))(auStack_38,piVar4,iVar3,local_3c,poVar2,iVar1,uVar6);" (call_expression "(**(code **)(*piVar4 + 0x20))(auStack_38,piVar4,iVar3,local_3c,poVar2,iVar1,uVar6)" (parenthesized_expression "(**(code **)(*piVar4 + 0x20))" ( (pointer_expression "**(code **)(*piVar4 + 0x20)" * (pointer_expression "*(code **)(*piVar4 + 0x20)" * (cast_expression "(code **)(*piVar4 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar4 + 0x20)" ( (binary_expression "*piVar4 + 0x20" (pointer_expression "*piVar4" * identifier) + number_literal) ))))) )) (argument_list "(auStack_38,piVar4,iVar3,local_3c,poVar2,iVar1,uVar6)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (if_statement "if (local_34 != '\0') {\n                    \n      (*(code *)PTR_clear_004c22b8)\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_004c22b8)\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_004c22b8)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);" (call_expression "(*(code *)PTR_clear_004c22b8)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1)" (parenthesized_expression "(*(code *)PTR_clear_004c22b8)" ( (pointer_expression "*(code *)PTR_clear_004c22b8" * (cast_expression "(code *)PTR_clear_004c22b8" ( (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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (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 ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , LIT )))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))))) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_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 , 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 "ostream * std::" (binary_expression "ostream * std" (identifier "ostream") (* "*") (identifier "std")) (: ":") (: ":")) (labeled_statement "ostream::_M_insert<long_double>(longdouble param_1)\n\n{\n  int iVar1;\n  ostream *in_a0;" (statement_identifier "ostream") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_insert<long_double>(longdouble param_1)\n\n{\n  int iVar1;\n  ostream *in_a0;" (binary_expression "_M_insert<long_double>(longdouble param_1)\n\n{\n  int iVar1;\n  ostream *in_a0" (binary_expression "_M_insert<long_double" (identifier "_M_insert") (< "<") (identifier "long_double")) (> ">") (compound_literal_expression "(longdouble param_1)\n\n{\n  int iVar1;\n  ostream *in_a0" (( "(") (type_descriptor "longdouble" (type_identifier "longdouble")) (ERROR "param_1" (identifier "param_1")) () ")") (initializer_list "{\n  int iVar1;\n  ostream *in_a0" ({ "{") (ERROR "int iVar1;" (identifier "int") (identifier "iVar1") (; ";")) (binary_expression "ostream *in_a0" (identifier "ostream") (* "*") (identifier "in_a0")) (} "")))) (; ";"))) (declaration "undefined4 in_a2;" (type_identifier "undefined4") (identifier "in_a2") (; ";")) (declaration "undefined4 in_a3;" (type_identifier "undefined4") (identifier "in_a3") (; ";")) (declaration "ostream *poVar2;" (type_identifier "ostream") (pointer_declarator "*poVar2" (* "*") (identifier "poVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "undefined8 uVar6;" (type_identifier "undefined8") (identifier "uVar6") (; ";")) (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 [8];" (type_identifier "sentry") (array_declarator "local_30 [8]" (identifier "local_30") ([ "[") (number_literal "8") (] "]")) (; ";")) (expression_statement "uVar6 = CONCAT44(in_a2,in_a3);" (assignment_expression "uVar6 = CONCAT44(in_a2,in_a3)" (identifier "uVar6") (= "=") (call_expression "CONCAT44(in_a2,in_a3)" (identifier "CONCAT44") (argument_list "(in_a2,in_a3)" (( "(") (identifier "in_a2") (, ",") (identifier "in_a3") () ")")))) (; ";")) (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    poVar2 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);\n    piVar4 = *(int **)(poVar2 + 0x80);\n    if (piVar4 == (int *)0x0) {\n      poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return poVar2;\n    }\n    iVar3 = *(int *)(poVar2 + 0x78);\n    if (poVar2[0x75] == (ostream)0x0) {\n      piVar5 = *(int **)(poVar2 + 0x7c);\n      if (piVar5 == (int *)0x0) {\n        poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return poVar2;\n      }\n      if (*(char *)(piVar5 + 7) == '\0') {\n                    \n        (*(code *)PTR__M_widen_init_004c22c0)(piVar5);\n        iVar1 = 0x20;\n        if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }\n      }\n      else {\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }\n      poVar2[0x74] = SUB41(iVar1,0);\n      poVar2[0x75] = (ostream)0x1;\n    }\n    else {\n      iVar1 = (int)(char)poVar2[0x74];\n    }\n    local_3c = CONCAT13(iVar3 == 0,local_3c._1_3_);\n                    \n    (**(code **)(*piVar4 + 0x20))(auStack_38,piVar4,iVar3,local_3c,poVar2,iVar1,uVar6);\n    if (local_34 != '\0') {\n                    \n      (*(code *)PTR_clear_004c22b8)\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    poVar2 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);\n    piVar4 = *(int **)(poVar2 + 0x80);\n    if (piVar4 == (int *)0x0) {\n      poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return poVar2;\n    }\n    iVar3 = *(int *)(poVar2 + 0x78);\n    if (poVar2[0x75] == (ostream)0x0) {\n      piVar5 = *(int **)(poVar2 + 0x7c);\n      if (piVar5 == (int *)0x0) {\n        poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return poVar2;\n      }\n      if (*(char *)(piVar5 + 7) == '\0') {\n                    \n        (*(code *)PTR__M_widen_init_004c22c0)(piVar5);\n        iVar1 = 0x20;\n        if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }\n      }\n      else {\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }\n      poVar2[0x74] = SUB41(iVar1,0);\n      poVar2[0x75] = (ostream)0x1;\n    }\n    else {\n      iVar1 = (int)(char)poVar2[0x74];\n    }\n    local_3c = CONCAT13(iVar3 == 0,local_3c._1_3_);\n                    \n    (**(code **)(*piVar4 + 0x20))(auStack_38,piVar4,iVar3,local_3c,poVar2,iVar1,uVar6);\n    if (local_34 != '\0') {\n                    \n      (*(code *)PTR_clear_004c22b8)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);\n    }\n  }" ({ "{") (expression_statement "poVar2 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);" (assignment_expression "poVar2 = in_a0 + *(int *)(*(int *)in_a0 + -0xc)" (identifier "poVar2") (= "=") (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 "piVar4 = *(int **)(poVar2 + 0x80);" (assignment_expression "piVar4 = *(int **)(poVar2 + 0x80)" (identifier "piVar4") (= "=") (pointer_expression "*(int **)(poVar2 + 0x80)" (* "*") (cast_expression "(int **)(poVar2 + 0x80)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(poVar2 + 0x80)" (( "(") (binary_expression "poVar2 + 0x80" (identifier "poVar2") (+ "+") (number_literal "0x80")) () ")"))))) (; ";")) (if_statement "if (piVar4 == (int *)0x0) {\n      poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return poVar2;\n    }" (if "if") (parenthesized_expression "(piVar4 == (int *)0x0)" (( "(") (binary_expression "piVar4 == (int *)0x0" (identifier "piVar4") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n      return poVar2;\n    }" ({ "{") (expression_statement "poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();" (assignment_expression "poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" (identifier "poVar2") (= "=") (cast_expression "(ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" (( "(") (type_descriptor "ostream *" (type_identifier "ostream") (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 poVar2;" (return "return") (identifier "poVar2") (; ";")) (} "}"))) (expression_statement "iVar3 = *(int *)(poVar2 + 0x78);" (assignment_expression "iVar3 = *(int *)(poVar2 + 0x78)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(poVar2 + 0x78)" (* "*") (cast_expression "(int *)(poVar2 + 0x78)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(poVar2 + 0x78)" (( "(") (binary_expression "poVar2 + 0x78" (identifier "poVar2") (+ "+") (number_literal "0x78")) () ")"))))) (; ";")) (if_statement "if (poVar2[0x75] == (ostream)0x0) {\n      piVar5 = *(int **)(poVar2 + 0x7c);\n      if (piVar5 == (int *)0x0) {\n        poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return poVar2;\n      }\n      if (*(char *)(piVar5 + 7) == '\0') {\n                    \n        (*(code *)PTR__M_widen_init_004c22c0)(piVar5);\n        iVar1 = 0x20;\n        if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }\n      }\n      else {\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }\n      poVar2[0x74] = SUB41(iVar1,0);\n      poVar2[0x75] = (ostream)0x1;\n    }\n    else {\n      iVar1 = (int)(char)poVar2[0x74];\n    }" (if "if") (parenthesized_expression "(poVar2[0x75] == (ostream)0x0)" (( "(") (binary_expression "poVar2[0x75] == (ostream)0x0" (subscript_expression "poVar2[0x75]" (identifier "poVar2") ([ "[") (number_literal "0x75") (] "]")) (== "==") (cast_expression "(ostream)0x0" (( "(") (type_descriptor "ostream" (type_identifier "ostream")) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      piVar5 = *(int **)(poVar2 + 0x7c);\n      if (piVar5 == (int *)0x0) {\n        poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return poVar2;\n      }\n      if (*(char *)(piVar5 + 7) == '\0') {\n                    \n        (*(code *)PTR__M_widen_init_004c22c0)(piVar5);\n        iVar1 = 0x20;\n        if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }\n      }\n      else {\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }\n      poVar2[0x74] = SUB41(iVar1,0);\n      poVar2[0x75] = (ostream)0x1;\n    }" ({ "{") (expression_statement "piVar5 = *(int **)(poVar2 + 0x7c);" (assignment_expression "piVar5 = *(int **)(poVar2 + 0x7c)" (identifier "piVar5") (= "=") (pointer_expression "*(int **)(poVar2 + 0x7c)" (* "*") (cast_expression "(int **)(poVar2 + 0x7c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(poVar2 + 0x7c)" (( "(") (binary_expression "poVar2 + 0x7c" (identifier "poVar2") (+ "+") (number_literal "0x7c")) () ")"))))) (; ";")) (if_statement "if (piVar5 == (int *)0x0) {\n        poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return poVar2;\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        poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();\n        return poVar2;\n      }" ({ "{") (expression_statement "poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();" (assignment_expression "poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" (identifier "poVar2") (= "=") (cast_expression "(ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)()" (( "(") (type_descriptor "ostream *" (type_identifier "ostream") (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 poVar2;" (return "return") (identifier "poVar2") (; ";")) (} "}"))) (if_statement "if (*(char *)(piVar5 + 7) == '\0') {\n                    \n        (*(code *)PTR__M_widen_init_004c22c0)(piVar5);\n        iVar1 = 0x20;\n        if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }\n      }\n      else {\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }" (if "if") (parenthesized_expression "(*(char *)(piVar5 + 7) == '\0')" (( "(") (binary_expression "*(char *)(piVar5 + 7) == '\0'" (pointer_expression "*(char *)(piVar5 + 7)" (* "*") (cast_expression "(char *)(piVar5 + 7)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar5 + 7)" (( "(") (binary_expression "piVar5 + 7" (identifier "piVar5") (+ "+") (number_literal "7")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                    \n        (*(code *)PTR__M_widen_init_004c22c0)(piVar5);\n        iVar1 = 0x20;\n        if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }\n      }" ({ "{") (expression_statement "(*(code *)PTR__M_widen_init_004c22c0)(piVar5);" (call_expression "(*(code *)PTR__M_widen_init_004c22c0)(piVar5)" (parenthesized_expression "(*(code *)PTR__M_widen_init_004c22c0)" (( "(") (pointer_expression "*(code *)PTR__M_widen_init_004c22c0" (* "*") (cast_expression "(code *)PTR__M_widen_init_004c22c0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR__M_widen_init_004c22c0"))) () ")")) (argument_list "(piVar5)" (( "(") (identifier "piVar5") () ")"))) (; ";")) (expression_statement "iVar1 = 0x20;" (assignment_expression "iVar1 = 0x20" (identifier "iVar1") (= "=") (number_literal "0x20")) (; ";")) (if_statement "if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }" (if "if") (parenthesized_expression "(*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4)" (( "(") (binary_expression "*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4" (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")) () ")")))) (!= "!=") (cast_expression "(code *)PTR_do_widen_004c22d4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_do_widen_004c22d4"))) () ")")) (compound_statement "{\n          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);\n        }" ({ "{") (expression_statement "iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);" (assignment_expression "iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20)" (identifier "iVar1") (= "=") (call_expression "(**(code **)(*piVar5 + 0x18))(piVar5,0x20)" (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 "(piVar5,0x20)" (( "(") (identifier "piVar5") (, ",") (number_literal "0x20") () ")")))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }" (else "else") (compound_statement "{\n        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);\n      }" ({ "{") (expression_statement "iVar1 = (int)*(char *)((int)piVar5 + 0x3d);" (assignment_expression "iVar1 = (int)*(char *)((int)piVar5 + 0x3d)" (identifier "iVar1") (= "=") (cast_expression "(int)*(char *)((int)piVar5 + 0x3d)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(char *)((int)piVar5 + 0x3d)" (* "*") (cast_expression "(char *)((int)piVar5 + 0x3d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar5 + 0x3d)" (( "(") (binary_expression "(int)piVar5 + 0x3d" (cast_expression "(int)piVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar5")) (+ "+") (number_literal "0x3d")) () ")")))))) (; ";")) (} "}")))) (expression_statement "poVar2[0x74] = SUB41(iVar1,0);" (assignment_expression "poVar2[0x74] = SUB41(iVar1,0)" (subscript_expression "poVar2[0x74]" (identifier "poVar2") ([ "[") (number_literal "0x74") (] "]")) (= "=") (call_expression "SUB41(iVar1,0)" (identifier "SUB41") (argument_list "(iVar1,0)" (( "(") (identifier "iVar1") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "poVar2[0x75] = (ostream)0x1;" (assignment_expression "poVar2[0x75] = (ostream)0x1" (subscript_expression "poVar2[0x75]" (identifier "poVar2") ([ "[") (number_literal "0x75") (] "]")) (= "=") (cast_expression "(ostream)0x1" (( "(") (type_descriptor "ostream" (type_identifier "ostream")) () ")") (number_literal "0x1"))) (; ";")) (} "}")) (else_clause "else {\n      iVar1 = (int)(char)poVar2[0x74];\n    }" (else "else") (compound_statement "{\n      iVar1 = (int)(char)poVar2[0x74];\n    }" ({ "{") (expression_statement "iVar1 = (int)(char)poVar2[0x74];" (assignment_expression "iVar1 = (int)(char)poVar2[0x74]" (identifier "iVar1") (= "=") (cast_expression "(int)(char)poVar2[0x74]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)poVar2[0x74]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "poVar2[0x74]" (identifier "poVar2") ([ "[") (number_literal "0x74") (] "]"))))) (; ";")) (} "}")))) (expression_statement "local_3c = CONCAT13(iVar3 == 0,local_3c._1_3_);" (assignment_expression "local_3c = CONCAT13(iVar3 == 0,local_3c._1_3_)" (identifier "local_3c") (= "=") (call_expression "CONCAT13(iVar3 == 0,local_3c._1_3_)" (identifier "CONCAT13") (argument_list "(iVar3 == 0,local_3c._1_3_)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) (, ",") (field_expression "local_3c._1_3_" (identifier "local_3c") (. ".") (field_identifier "_1_3_")) () ")")))) (; ";")) (expression_statement "(**(code **)(*piVar4 + 0x20))(auStack_38,piVar4,iVar3,local_3c,poVar2,iVar1,uVar6);" (call_expression "(**(code **)(*piVar4 + 0x20))(auStack_38,piVar4,iVar3,local_3c,poVar2,iVar1,uVar6)" (parenthesized_expression "(**(code **)(*piVar4 + 0x20))" (( "(") (pointer_expression "**(code **)(*piVar4 + 0x20)" (* "*") (pointer_expression "*(code **)(*piVar4 + 0x20)" (* "*") (cast_expression "(code **)(*piVar4 + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar4 + 0x20)" (( "(") (binary_expression "*piVar4 + 0x20" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (argument_list "(auStack_38,piVar4,iVar3,local_3c,poVar2,iVar1,uVar6)" (( "(") (identifier "auStack_38") (, ",") (identifier "piVar4") (, ",") (identifier "iVar3") (, ",") (identifier "local_3c") (, ",") (identifier "poVar2") (, ",") (identifier "iVar1") (, ",") (identifier "uVar6") () ")"))) (; ";")) (if_statement "if (local_34 != '\0') {\n                    \n      (*(code *)PTR_clear_004c22b8)\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_004c22b8)\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_004c22b8)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);" (call_expression "(*(code *)PTR_clear_004c22b8)\n                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),\n                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1)" (parenthesized_expression "(*(code *)PTR_clear_004c22b8)" (( "(") (pointer_expression "*(code *)PTR_clear_004c22b8" (* "*") (cast_expression "(code *)PTR_clear_004c22b8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_clear_004c22b8"))) () ")")) (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::ostream& std::ostream::_M_insert<long double>(long double) */

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

{
  int iVar1;
  var_3 *var_4;
  type_2 in_a2;
  type_2 in_a3;
  var_3 *var_6;
  int var_11;
  int *var_7;
  int *var_8;
  type_3 uVar6;
  type_2 local_3c;
  type_4 auStack_38 [4];
  char var_12;
  type_5 local_30 [8];
  
  uVar6 = var_5(in_a2,in_a3);
  sentry::type_5(local_30,var_4);
  if (local_30[0] != (type_5)0x0) {
    var_6 = var_4 + *(int *)(*(int *)var_4 + -0xc);
    var_7 = *(int **)(var_6 + 0x80);
    if (var_7 == (int *)0x0) {
      var_6 = (var_3 *)(*(type_6 *)PTR___throw_bad_cast_004c22bc)();
      return var_6;
    }
    var_11 = *(int *)(var_6 + 0x78);
    if (var_6[0x75] == (var_3)0x0) {
      var_8 = *(int **)(var_6 + 0x7c);
      if (var_8 == (int *)0x0) {
        var_6 = (var_3 *)(*(type_6 *)PTR___throw_bad_cast_004c22bc)();
        return var_6;
      }
      if (*(char *)(var_8 + 7) == '\0') {
                    /* try { // try from 0034363c to 0034367f has its CatchHandler @ 00343680 */
        (*(type_6 *)PTR__M_widen_init_004c22c0)(var_8);
        iVar1 = 0x20;
        if (*(type_6 **)(*var_8 + 0x18) != (type_6 *)PTR_do_widen_004c22d4) {
          iVar1 = (**(type_6 **)(*var_8 + 0x18))(var_8,0x20);
        }
      }
      else {
        iVar1 = (int)*(char *)((int)var_8 + 0x3d);
      }
      var_6[0x74] = var_9(iVar1,0);
      var_6[0x75] = (var_3)0x1;
    }
    else {
      iVar1 = (int)(char)var_6[0x74];
    }
    local_3c = var_10(var_11 == 0,local_3c._1_3_);
                    /* try { // try from 0034359c to 003435a3 has its CatchHandler @ 00343680 */
    (**(type_6 **)(*var_7 + 0x20))(auStack_38,var_7,var_11,local_3c,var_6,iVar1,uVar6);
    if (var_12 != '\0') {
                    /* try { // try from 003435c8 to 003435cf has its CatchHandler @ 003436cc */
      (*(type_6 *)PTR_clear_004c22b8)
                (var_4 + *(int *)(*(int *)var_4 + -0xc),
                 *(type_7 *)(var_4 + *(int *)(*(int *)var_4 + -0xc) + 0x14) | 1);
    }
  }
  sentry::~type_5(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: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) 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: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) 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))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (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))))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier) (number_literal)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))) (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (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) (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::ostream& std::ostream::_M_insert<long double>(long double) */

ostream * std::ostream::MASKED(longdouble param_1)

{
  int iVar1;
  ostream *in_a0;
  undefined4 in_a2;
  undefined4 in_a3;
  ostream *poVar2;
  int iVar3;
  int *piVar4;
  int *piVar5;
  undefined8 uVar6;
  undefined4 local_3c;
  undefined1 auStack_38 [4];
  char local_34;
  sentry local_30 [8];
  
  uVar6 = CONCAT44(in_a2,in_a3);
  sentry::sentry(local_30,in_a0);
  if (local_30[0] != (sentry)0x0) {
    poVar2 = in_a0 + *(int *)(*(int *)in_a0 + -0xc);
    piVar4 = *(int **)(poVar2 + 0x80);
    if (piVar4 == (int *)0x0) {
      poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();
      return poVar2;
    }
    iVar3 = *(int *)(poVar2 + 0x78);
    if (poVar2[0x75] == (ostream)0x0) {
      piVar5 = *(int **)(poVar2 + 0x7c);
      if (piVar5 == (int *)0x0) {
        poVar2 = (ostream *)(*(code *)PTR___throw_bad_cast_004c22bc)();
        return poVar2;
      }
      if (*(char *)(piVar5 + 7) == '\0') {
                    /* try { // try from 0034363c to 0034367f has its CatchHandler @ 00343680 */
        (*(code *)PTR__M_widen_init_004c22c0)(piVar5);
        iVar1 = 0x20;
        if (*(code **)(*piVar5 + 0x18) != (code *)PTR_do_widen_004c22d4) {
          iVar1 = (**(code **)(*piVar5 + 0x18))(piVar5,0x20);
        }
      }
      else {
        iVar1 = (int)*(char *)((int)piVar5 + 0x3d);
      }
      poVar2[0x74] = SUB41(iVar1,0);
      poVar2[0x75] = (ostream)0x1;
    }
    else {
      iVar1 = (int)(char)poVar2[0x74];
    }
    local_3c = CONCAT13(iVar3 == 0,local_3c._1_3_);
                    /* try { // try from 0034359c to 003435a3 has its CatchHandler @ 00343680 */
    (**(code **)(*piVar4 + 0x20))(auStack_38,piVar4,iVar3,local_3c,poVar2,iVar1,uVar6);
    if (local_34 != '\0') {
                    /* try { // try from 003435c8 to 003435cf has its CatchHandler @ 003436cc */
      (*(code *)PTR_clear_004c22b8)
                (in_a0 + *(int *)(*(int *)in_a0 + -0xc),
                 *(uint *)(in_a0 + *(int *)(*(int *)in_a0 + -0xc) + 0x14) | 1);
    }
  }
  sentry::~sentry(local_30);
  return in_a0;
}

