
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* std::istream& std::getline<char, std::char_traits<char>, std::allocator<char> >(std::istream&,
   std::string&, char) */

istream * std::getline<char,std::char_traits<char>,std::allocator<char>>
                    (istream *param_1,string *param_2,char param_3)

{
  byte bVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  istream *piVar5;
  uint uVar6;
  byte *pbVar7;
  string *psVar8;
  undefined3 in_register_00000018;
  uint uVar9;
  int *piVar10;
  uint uVar11;
  byte *pbVar12;
  char local_38 [8];
  uint local_30;
  string *local_2c;
  
  (*(code *)PTR_sentry_004c5178)(local_38,param_1,1);
  if (local_38[0] == '\0') {
LAB_00332454:
    uVar6 = 4;
LAB_00332458:
    iVar2 = *(int *)param_1;
LAB_0033245c:
    (*(code *)PTR_clear_004c22b8)
              (param_1 + *(int *)(iVar2 + -0xc),
               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14));
  }
  else {
    local_30 = (uint)(byte)param_3;
    *(undefined4 *)(param_2 + 4) = 0;
    **(undefined1 **)param_2 = 0;
    piVar10 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78);
    pbVar12 = (byte *)piVar10[2];
    pbVar7 = (byte *)piVar10[3];
    if (pbVar12 < pbVar7) {
      uVar3 = (uint)*pbVar12;
    }
    else {
                    /* try { // try from 00332710 to 00332717 has its CatchHandler @ 00332790 */
      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);
      if (uVar3 == 0xffffffff) {
LAB_00332700:
        uVar6 = 6;
        goto LAB_00332458;
      }
      pbVar7 = (byte *)piVar10[3];
      pbVar12 = (byte *)piVar10[2];
    }
    uVar11 = 0;
    if ((byte)param_3 == uVar3) {
      if (pbVar7 <= pbVar12) {
                    /* try { // try from 00332764 to 0033276b has its CatchHandler @ 003327e8 */
        (**(code **)(*piVar10 + 0x28))(piVar10);
        return param_1;
      }
    }
    else {
      local_2c = param_2 + 8;
      do {
        uVar9 = *(uint *)(param_2 + 4);
        uVar6 = 0x7fffffff - uVar11;
        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {
          uVar6 = (int)pbVar7 - (int)pbVar12;
        }
        if ((int)uVar6 < 2) {
          psVar8 = *(string **)param_2;
          uVar6 = uVar9 + 1;
          if (psVar8 == local_2c) {
            uVar4 = 0xf;
          }
          else {
            uVar4 = *(uint *)(param_2 + 8);
          }
          if (uVar4 < uVar6) {
            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);
            psVar8 = *(string **)param_2;
          }
          psVar8[uVar9] = SUB41(uVar3,0);
          *(uint *)(param_2 + 4) = uVar6;
          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;
          pbVar7 = (byte *)piVar10[3];
          uVar11 = uVar11 + 1;
          if ((byte *)piVar10[2] < pbVar7) {
            pbVar12 = (byte *)piVar10[2] + 1;
            piVar10[2] = (int)pbVar12;
LAB_003325fc:
            if (pbVar12 < pbVar7) {
              bVar1 = *pbVar12;
              goto joined_r0x00332608;
            }
            goto LAB_00332644;
          }
          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);
          if (iVar2 != -1) {
            pbVar12 = (byte *)piVar10[2];
            pbVar7 = (byte *)piVar10[3];
            goto LAB_003325fc;
          }
LAB_003326f0:
          uVar6 = 2;
          goto LAB_00332458;
        }
        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)
        ;
        if (iVar2 != 0) {
          uVar6 = iVar2 - (int)pbVar12;
        }
        if (0x7fffffff - uVar9 < uVar6) {
                    /* try { // try from 0033277c to 00332783 has its CatchHandler @ 003327e0 */
          piVar5 = (istream *)
                   (*(code *)PTR___throw_length_error_004c1e74)
                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);
          return piVar5;
        }
                    /* try { // try from 00332540 to 003326e3 has its CatchHandler @ 003327e0 */
        string::_M_append(param_2,(char *)pbVar12,uVar6);
        uVar11 = uVar11 + uVar6;
        pbVar7 = (byte *)piVar10[3];
        pbVar12 = (byte *)(piVar10[2] + uVar6);
        piVar10[2] = (int)pbVar12;
        if (pbVar12 < pbVar7) {
          bVar1 = *pbVar12;
joined_r0x00332608:
          uVar3 = (uint)bVar1;
          if (0x7ffffffe < uVar11) goto LAB_00332610;
        }
        else {
LAB_00332644:
          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);
          if (0x7ffffffe < uVar11) {
            uVar6 = 2;
            if (uVar3 == 0xffffffff) {
              iVar2 = *(int *)param_1;
              goto LAB_0033245c;
            }
LAB_00332610:
            uVar6 = 4;
            if (local_30 != uVar3) goto LAB_00332458;
            iVar2 = uVar11 + 1;
            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;
            piVar10[2] = piVar10[2] + 1;
            if (iVar2 != 0) {
              return param_1;
            }
            goto LAB_00332454;
          }
          if (uVar3 == 0xffffffff) {
            if (uVar11 != 0) goto LAB_003326f0;
            goto LAB_00332700;
          }
          pbVar7 = (byte *)piVar10[3];
        }
        pbVar12 = (byte *)piVar10[2];
      } while (uVar3 != local_30);
      iVar2 = uVar11 + 1;
      if (pbVar7 <= pbVar12) {
LAB_003326b0:
        (**(code **)(*piVar10 + 0x28))(piVar10);
        uVar6 = 4;
        if (iVar2 != 0) {
          return param_1;
        }
        goto LAB_00332458;
      }
    }
    piVar10[2] = (int)(pbVar12 + 1);
  }
  return param_1;
}



/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* std::istream& std::getline<char, std::char_traits<char>, std::allocator<char> >(std::istream&,
   std::string&, char) */

istream * std::getline<char,std::char_traits<char>,std::allocator<char>>
                    (istream *param_1,string *param_2,char param_3)

{
  byte bVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  istream *piVar5;
  uint uVar6;
  byte *pbVar7;
  string *psVar8;
  undefined3 in_register_00000018;
  uint uVar9;
  int *piVar10;
  uint uVar11;
  byte *pbVar12;
  char local_38 [8];
  uint local_30;
  string *local_2c;
  
  (*(code *)PTR_sentry_004c5178)(local_38,param_1,1);
  if (local_38[0] == '\0') {
LAB_00332454:
    uVar6 = 4;
LAB_00332458:
    iVar2 = *(int *)param_1;
LAB_0033245c:
    (*(code *)PTR_clear_004c22b8)
              (param_1 + *(int *)(iVar2 + -0xc),
               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14));
  }
  else {
    local_30 = (uint)(byte)param_3;
    *(undefined4 *)(param_2 + 4) = 0;
    **(undefined1 **)param_2 = 0;
    piVar10 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78);
    pbVar12 = (byte *)piVar10[2];
    pbVar7 = (byte *)piVar10[3];
    if (pbVar12 < pbVar7) {
      uVar3 = (uint)*pbVar12;
    }
    else {
                    /* try { // try from 00332710 to 00332717 has its CatchHandler @ 00332790 */
      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);
      if (uVar3 == 0xffffffff) {
LAB_00332700:
        uVar6 = 6;
        goto LAB_00332458;
      }
      pbVar7 = (byte *)piVar10[3];
      pbVar12 = (byte *)piVar10[2];
    }
    uVar11 = 0;
    if ((byte)param_3 == uVar3) {
      if (pbVar7 <= pbVar12) {
                    /* try { // try from 00332764 to 0033276b has its CatchHandler @ 003327e8 */
        (**(code **)(*piVar10 + 0x28))(piVar10);
        return param_1;
      }
    }
    else {
      local_2c = param_2 + 8;
      do {
        uVar9 = *(uint *)(param_2 + 4);
        uVar6 = 0x7fffffff - uVar11;
        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {
          uVar6 = (int)pbVar7 - (int)pbVar12;
        }
        if ((int)uVar6 < 2) {
          psVar8 = *(string **)param_2;
          uVar6 = uVar9 + 1;
          if (psVar8 == local_2c) {
            uVar4 = 0xf;
          }
          else {
            uVar4 = *(uint *)(param_2 + 8);
          }
          if (uVar4 < uVar6) {
            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);
            psVar8 = *(string **)param_2;
          }
          psVar8[uVar9] = SUB41(uVar3,0);
          *(uint *)(param_2 + 4) = uVar6;
          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;
          pbVar7 = (byte *)piVar10[3];
          uVar11 = uVar11 + 1;
          if ((byte *)piVar10[2] < pbVar7) {
            pbVar12 = (byte *)piVar10[2] + 1;
            piVar10[2] = (int)pbVar12;
LAB_003325fc:
            if (pbVar12 < pbVar7) {
              bVar1 = *pbVar12;
              goto joined_r0x00332608;
            }
            goto LAB_00332644;
          }
          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);
          if (iVar2 != -1) {
            pbVar12 = (byte *)piVar10[2];
            pbVar7 = (byte *)piVar10[3];
            goto LAB_003325fc;
          }
LAB_003326f0:
          uVar6 = 2;
          goto LAB_00332458;
        }
        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)
        ;
        if (iVar2 != 0) {
          uVar6 = iVar2 - (int)pbVar12;
        }
        if (0x7fffffff - uVar9 < uVar6) {
                    /* try { // try from 0033277c to 00332783 has its CatchHandler @ 003327e0 */
          piVar5 = (istream *)
                   (*(code *)PTR___throw_length_error_004c1e74)
                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);
          return piVar5;
        }
                    /* try { // try from 00332540 to 003326e3 has its CatchHandler @ 003327e0 */
        string::_M_append(param_2,(char *)pbVar12,uVar6);
        uVar11 = uVar11 + uVar6;
        pbVar7 = (byte *)piVar10[3];
        pbVar12 = (byte *)(piVar10[2] + uVar6);
        piVar10[2] = (int)pbVar12;
        if (pbVar12 < pbVar7) {
          bVar1 = *pbVar12;
joined_r0x00332608:
          uVar3 = (uint)bVar1;
          if (0x7ffffffe < uVar11) goto LAB_00332610;
        }
        else {
LAB_00332644:
          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);
          if (0x7ffffffe < uVar11) {
            uVar6 = 2;
            if (uVar3 == 0xffffffff) {
              iVar2 = *(int *)param_1;
              goto LAB_0033245c;
            }
LAB_00332610:
            uVar6 = 4;
            if (local_30 != uVar3) goto LAB_00332458;
            iVar2 = uVar11 + 1;
            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;
            piVar10[2] = piVar10[2] + 1;
            if (iVar2 != 0) {
              return param_1;
            }
            goto LAB_00332454;
          }
          if (uVar3 == 0xffffffff) {
            if (uVar11 != 0) goto LAB_003326f0;
            goto LAB_00332700;
          }
          pbVar7 = (byte *)piVar10[3];
        }
        pbVar12 = (byte *)piVar10[2];
      } while (uVar3 != local_30);
      iVar2 = uVar11 + 1;
      if (pbVar7 <= pbVar12) {
LAB_003326b0:
        (**(code **)(*piVar10 + 0x28))(piVar10);
        uVar6 = 4;
        if (iVar2 != 0) {
          return param_1;
        }
        goto LAB_00332458;
      }
    }
    piVar10[2] = (int)(pbVar12 + 1);
  }
  return param_1;
}


lui gp,0x19
addiu gp,gp,0x6e54
addu gp,gp,t9
addiu sp,sp,-0x58
lw t9,-0x40c8(gp)
sw s6,0x48(sp)
or s6,a2,zero
sw s5,0x44(sp)
li a2,0x1
or s5,a0,zero
sw gp,0x18(sp)
addiu a0,sp,0x20
sw s3,0x3c(sp)
sw ra,0x54(sp)
or s3,a1,zero
sw s8,0x50(sp)
or a1,s5,zero
sw s7,0x4c(sp)
sw s4,0x40(sp)
sw s2,0x38(sp)
sw s1,0x34(sp)
jalr t9
_sw s0,0x30(sp)
lbu v0,0x20(sp)
bne v0,zero,0x003324ac
_lw gp,0x18(sp)
li v1,0x4
lw v0,0x0(s5)
lw t9,-0x6f88(gp)
lw v0,-0xc(v0)
addu v0,s5,v0
or a0,v0,zero
lw a1,0x14(v0)
jalr t9
_or a1,v1,a1
lw ra,0x54(sp)
or v0,s5,zero
lw s8,0x50(sp)
lw s7,0x4c(sp)
lw s6,0x48(sp)
lw s5,0x44(sp)
lw s4,0x40(sp)
lw s3,0x3c(sp)
lw s2,0x38(sp)
lw s1,0x34(sp)
lw s0,0x30(sp)
jr ra
_addiu sp,sp,0x58
lw v0,0x0(s3)
andi v1,s6,0xff
sw zero,0x4(s3)
sw v1,0x28(sp)
sb zero,0x0(v0)
lw v0,0x0(s5)
lw v0,-0xc(v0)
addu v0,s5,v0
lw s1,0x78(v0)
lw s7,0x8(s1)
lw v1,0xc(s1)
sltu v0,s7,v1
beq v0,zero,0x00332708
_nop
lbu v0,0x0(s7)
andi a0,s6,0xff
beq a0,v0,0x00332750
_or s2,zero,zero
addiu a0,s3,0x8
lui s4,0x7fff
sw a0,0x2c(sp)
b 0x00332584
_ori s4,s4,0xffff
lw t9,-0x3778(gp)
or a2,a0,zero
or a1,s6,zero
jalr t9
_or a0,s7,zero
beq v0,zero,0x00332528
_lw gp,0x18(sp)
subu s8,v0,s7
subu s0,s4,s0
sltu s0,s0,s8
bne s0,zero,0x00332774
_lw t9,-0x73d8(gp)
or a2,s8,zero
or a1,s7,zero
bal 0x0033cc98
_or a0,s3,zero
lw v0,0x8(s1)
addu s2,s2,s8
lw a0,0xc(s1)
lw gp,0x18(sp)
addu s8,v0,s8
sltu v0,s8,a0
beq v0,zero,0x00332644
_sw s8,0x8(s1)
sltu v1,s2,s4
beq v1,zero,0x00332610
_lbu v0,0x0(s8)
lw a1,0x28(sp)
or v1,a0,zero
beq v0,a1,0x003326a4
_lw s7,0x8(s1)
subu v1,v1,s7
lw s0,0x4(s3)
subu a0,s4,s2
slt s8,a0,v1
movz a0,v1,s8
slti v1,a0,0x2
beq v1,zero,0x00332508
_or s8,a0,zero
seb s7,v0
lw v1,0x0(s3)
lw v0,0x2c(sp)
beq v1,v0,0x0033269c
_addiu s8,s0,0x1
lw v0,0x8(s3)
sltu v0,v0,s8
bne v0,zero,0x00332674
_li v0,0x1
addu s0,v1,s0
sb s7,0x0(s0)
sw s8,0x4(s3)
lw v0,0x0(s3)
addu s8,v0,s8
sb zero,0x0(s8)
lw v0,0x8(s1)
lw a0,0xc(s1)
sltu v1,v0,a0
beq v1,zero,0x003326d4
_addiu s2,s2,0x1
addiu v0,v0,0x1
sw v0,0x8(s1)
sltu v1,v0,a0
beq v1,zero,0x00332644
_sltu v1,s2,s4
bne v1,zero,0x00332574
_lbu v0,0x0(v0)
lw v1,0x28(sp)
bne v1,v0,0x00332458
_li v1,0x4
lw v0,0x8(s1)
lw v1,0xc(s1)
sltu v1,v0,v1
beq v1,zero,0x003326b0
_addiu s2,s2,0x1
addiu v0,v0,0x1
beq s2,zero,0x00332454
_sw v0,0x8(s1)
b 0x0033247c
_lw ra,0x54(sp)
lw v0,0x0(s1)
lw t9,0x24(v0)
jalr t9
_or a0,s1,zero
sltu v1,s2,s4
beq v1,zero,0x0033273c
_lw gp,0x18(sp)
li v1,-0x1
beq v0,v1,0x003326f8
_nop
b 0x00332574
_lw a0,0xc(s1)
lw t9,-0x71b0(gp)
or a3,zero,zero
or a2,zero,zero
sw v0,0x10(sp)
or a1,s0,zero
bal 0x0033abf0
_or a0,s3,zero
lw gp,0x18(sp)
b 0x003325c8
_lw v1,0x0(s3)
b 0x003325bc
_li v0,0xf
sltu a0,s7,a0
bne a0,zero,0x00332730
_addiu s2,s2,0x1
lw v0,0x0(s1)
lw t9,0x28(v0)
jalr t9
_or a0,s1,zero
lw gp,0x18(sp)
beq s2,zero,0x00332458
_li v1,0x4
b 0x0033247c
_lw ra,0x54(sp)
lw v0,0x0(s1)
lw t9,0x28(v0)
jalr t9
_or a0,s1,zero
li v1,-0x1
bne v0,v1,0x00332784
_lw gp,0x18(sp)
b 0x00332458
_li v1,0x2
bne s2,zero,0x003326f0
_nop
b 0x00332458
_li v1,0x6
lw v0,0x0(s1)
lw t9,0x24(v0)
jalr t9
_or a0,s1,zero
li v1,-0x1
beq v0,v1,0x00332700
_lw gp,0x18(sp)
lw v1,0xc(s1)
b 0x003324e8
_lw s7,0x8(s1)
addiu a3,s7,0x1
b 0x00332478
_sw a3,0x8(s1)
li v1,-0x1
bne v0,v1,0x00332610
_li v1,0x2
b 0x0033245c
_lw v0,0x0(s5)
sltu v1,s7,v1
bne v1,zero,0x00332734
_addiu a3,s7,0x1
lw v0,0x0(s1)
lw t9,0x28(v0)
jalr t9
_or a0,s1,zero
b 0x00332478
_nop
lw a0,-0x7fc4(gp)
lw t9,-0x73cc(gp)
jalr t9
_addiu a0,a0,0x446c
lw v0,0x8(s1)
b 0x003325fc
_lw a0,0xc(s1)
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n/* std::istream& std::getline<char, std::char_traits<char>, std::allocator<char> >(std::istream&,\n   std::string&, char) */\n\nistream * std::getline<char,std::char_traits<char>,std::allocator<char>>\n                    (istream *param_1,string *param_2,char param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  istream *piVar5;\n  uint uVar6;\n  byte *pbVar7;\n  string *psVar8;\n  undefined3 in_register_00000018;\n  uint uVar9;\n  int *piVar10;\n  uint uVar11;\n  byte *pbVar12;\n  char local_38 [8];\n  uint local_30;\n  string *local_2c;\n  \n  (*(code *)PTR_sentry_004c5178)(local_38,param_1,1);\n  if (local_38[0] == '\0') {\nLAB_00332454:\n    uVar6 = 4;\nLAB_00332458:\n    iVar2 = *(int *)param_1;\nLAB_0033245c:\n    (*(code *)PTR_clear_004c22b8)\n              (param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14));\n  }\n  else {\n    local_30 = (uint)(byte)param_3;\n    *(undefined4 *)(param_2 + 4) = 0;\n    **(undefined1 **)param_2 = 0;\n    piVar10 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78);\n    pbVar12 = (byte *)piVar10[2];\n    pbVar7 = (byte *)piVar10[3];\n    if (pbVar12 < pbVar7) {\n      uVar3 = (uint)*pbVar12;\n    }\n    else {\n                    /* try { // try from 00332710 to 00332717 has its CatchHandler @ 00332790 */\n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }\n    uVar11 = 0;\n    if ((byte)param_3 == uVar3) {\n      if (pbVar7 <= pbVar12) {\n                    /* try { // try from 00332764 to 0033276b has its CatchHandler @ 003327e8 */\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }\n    }\n    else {\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    /* try { // try from 0033277c to 00332783 has its CatchHandler @ 003327e0 */\n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    /* try { // try from 00332540 to 003326e3 has its CatchHandler @ 003327e0 */\n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }\n    piVar10[2] = (int)(pbVar12 + 1);\n  }\n  return param_1;\n}\n\n" comment comment (ERROR "istream * std::getline<char," (binary_expression "istream * std::getline<char" (binary_expression "istream * std" identifier * identifier) (ERROR "::getline" : : identifier) < identifier) ,) (labeled_statement "std::char_traits<char>,std::allocator<char>>\n                    (istream *param_1,string *param_2,char param_3)" statement_identifier (ERROR "::char_traits<char>,std:" : : (binary_expression "char_traits<char>,std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) :) : (expression_statement "allocator<char>>\n                    (istream *param_1,string *param_2,char param_3)" (binary_expression "allocator<char>>\n                    (istream *param_1,string *param_2,char param_3)" identifier < (binary_expression "char>>\n                    (istream *param_1,string *param_2,char param_3)" identifier >> (parenthesized_expression "(istream *param_1,string *param_2,char param_3)" ( (comma_expression "istream *param_1,string *param_2,char param_3" (binary_expression "istream *param_1" identifier * identifier) , (comma_expression "string *param_2,char param_3" (binary_expression "string *param_2" identifier * identifier) , (ERROR "char" identifier) identifier)) )))) ;)) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  istream *piVar5;\n  uint uVar6;\n  byte *pbVar7;\n  string *psVar8;\n  undefined3 in_register_00000018;\n  uint uVar9;\n  int *piVar10;\n  uint uVar11;\n  byte *pbVar12;\n  char local_38 [8];\n  uint local_30;\n  string *local_2c;\n  \n  (*(code *)PTR_sentry_004c5178)(local_38,param_1,1);\n  if (local_38[0] == '\0') {\nLAB_00332454:\n    uVar6 = 4;\nLAB_00332458:\n    iVar2 = *(int *)param_1;\nLAB_0033245c:\n    (*(code *)PTR_clear_004c22b8)\n              (param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14));\n  }\n  else {\n    local_30 = (uint)(byte)param_3;\n    *(undefined4 *)(param_2 + 4) = 0;\n    **(undefined1 **)param_2 = 0;\n    piVar10 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78);\n    pbVar12 = (byte *)piVar10[2];\n    pbVar7 = (byte *)piVar10[3];\n    if (pbVar12 < pbVar7) {\n      uVar3 = (uint)*pbVar12;\n    }\n    else {\n                    /* try { // try from 00332710 to 00332717 has its CatchHandler @ 00332790 */\n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }\n    uVar11 = 0;\n    if ((byte)param_3 == uVar3) {\n      if (pbVar7 <= pbVar12) {\n                    /* try { // try from 00332764 to 0033276b has its CatchHandler @ 003327e8 */\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }\n    }\n    else {\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    /* try { // try from 0033277c to 00332783 has its CatchHandler @ 003327e0 */\n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    /* try { // try from 00332540 to 003326e3 has its CatchHandler @ 003327e0 */\n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }\n    piVar10[2] = (int)(pbVar12 + 1);\n  }\n  return param_1;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "istream *piVar5;" type_identifier (pointer_declarator "*piVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "string *psVar8;" type_identifier (pointer_declarator "*psVar8" * identifier) ;) (declaration "undefined3 in_register_00000018;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "char local_38 [8];" primitive_type (array_declarator "local_38 [8]" identifier [ number_literal ]) ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "string *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (expression_statement "(*(code *)PTR_sentry_004c5178)(local_38,param_1,1);" (call_expression "(*(code *)PTR_sentry_004c5178)(local_38,param_1,1)" (parenthesized_expression "(*(code *)PTR_sentry_004c5178)" ( (pointer_expression "*(code *)PTR_sentry_004c5178" * (cast_expression "(code *)PTR_sentry_004c5178" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_38,param_1,1)" ( identifier , identifier , number_literal ))) ;) (if_statement "if (local_38[0] == '\0') {\nLAB_00332454:\n    uVar6 = 4;\nLAB_00332458:\n    iVar2 = *(int *)param_1;\nLAB_0033245c:\n    (*(code *)PTR_clear_004c22b8)\n              (param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14));\n  }\n  else {\n    local_30 = (uint)(byte)param_3;\n    *(undefined4 *)(param_2 + 4) = 0;\n    **(undefined1 **)param_2 = 0;\n    piVar10 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78);\n    pbVar12 = (byte *)piVar10[2];\n    pbVar7 = (byte *)piVar10[3];\n    if (pbVar12 < pbVar7) {\n      uVar3 = (uint)*pbVar12;\n    }\n    else {\n                    /* try { // try from 00332710 to 00332717 has its CatchHandler @ 00332790 */\n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }\n    uVar11 = 0;\n    if ((byte)param_3 == uVar3) {\n      if (pbVar7 <= pbVar12) {\n                    /* try { // try from 00332764 to 0033276b has its CatchHandler @ 003327e8 */\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }\n    }\n    else {\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    /* try { // try from 0033277c to 00332783 has its CatchHandler @ 003327e0 */\n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    /* try { // try from 00332540 to 003326e3 has its CatchHandler @ 003327e0 */\n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }\n    piVar10[2] = (int)(pbVar12 + 1);\n  }" if (parenthesized_expression "(local_38[0] == '\0')" ( (binary_expression "local_38[0] == '\0'" (subscript_expression "local_38[0]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_00332454:\n    uVar6 = 4;\nLAB_00332458:\n    iVar2 = *(int *)param_1;\nLAB_0033245c:\n    (*(code *)PTR_clear_004c22b8)\n              (param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14));\n  }" { (labeled_statement "LAB_00332454:\n    uVar6 = 4;" statement_identifier : (expression_statement "uVar6 = 4;" (assignment_expression "uVar6 = 4" identifier = number_literal) ;)) (labeled_statement "LAB_00332458:\n    iVar2 = *(int *)param_1;" statement_identifier : (expression_statement "iVar2 = *(int *)param_1;" (assignment_expression "iVar2 = *(int *)param_1" identifier = (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;)) (labeled_statement "LAB_0033245c:\n    (*(code *)PTR_clear_004c22b8)\n              (param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14));" statement_identifier : (expression_statement "(*(code *)PTR_clear_004c22b8)\n              (param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14));" (call_expression "(*(code *)PTR_clear_004c22b8)\n              (param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14))" (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 "(param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14))" ( (binary_expression "param_1 + *(int *)(iVar2 + -0xc)" identifier + (pointer_expression "*(int *)(iVar2 + -0xc)" * (cast_expression "(int *)(iVar2 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + -0xc)" ( (binary_expression "iVar2 + -0xc" identifier + number_literal) ))))) , (binary_expression "uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14)" identifier | (pointer_expression "*(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14)" * (cast_expression "(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(int *)(iVar2 + -0xc) + 0x14)" ( (binary_expression "param_1 + *(int *)(iVar2 + -0xc) + 0x14" (binary_expression "param_1 + *(int *)(iVar2 + -0xc)" identifier + (pointer_expression "*(int *)(iVar2 + -0xc)" * (cast_expression "(int *)(iVar2 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + -0xc)" ( (binary_expression "iVar2 + -0xc" identifier + number_literal) ))))) + number_literal) ))))) ))) ;)) }) (else_clause "else {\n    local_30 = (uint)(byte)param_3;\n    *(undefined4 *)(param_2 + 4) = 0;\n    **(undefined1 **)param_2 = 0;\n    piVar10 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78);\n    pbVar12 = (byte *)piVar10[2];\n    pbVar7 = (byte *)piVar10[3];\n    if (pbVar12 < pbVar7) {\n      uVar3 = (uint)*pbVar12;\n    }\n    else {\n                    /* try { // try from 00332710 to 00332717 has its CatchHandler @ 00332790 */\n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }\n    uVar11 = 0;\n    if ((byte)param_3 == uVar3) {\n      if (pbVar7 <= pbVar12) {\n                    /* try { // try from 00332764 to 0033276b has its CatchHandler @ 003327e8 */\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }\n    }\n    else {\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    /* try { // try from 0033277c to 00332783 has its CatchHandler @ 003327e0 */\n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    /* try { // try from 00332540 to 003326e3 has its CatchHandler @ 003327e0 */\n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }\n    piVar10[2] = (int)(pbVar12 + 1);\n  }" else (compound_statement "{\n    local_30 = (uint)(byte)param_3;\n    *(undefined4 *)(param_2 + 4) = 0;\n    **(undefined1 **)param_2 = 0;\n    piVar10 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78);\n    pbVar12 = (byte *)piVar10[2];\n    pbVar7 = (byte *)piVar10[3];\n    if (pbVar12 < pbVar7) {\n      uVar3 = (uint)*pbVar12;\n    }\n    else {\n                    /* try { // try from 00332710 to 00332717 has its CatchHandler @ 00332790 */\n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }\n    uVar11 = 0;\n    if ((byte)param_3 == uVar3) {\n      if (pbVar7 <= pbVar12) {\n                    /* try { // try from 00332764 to 0033276b has its CatchHandler @ 003327e8 */\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }\n    }\n    else {\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    /* try { // try from 0033277c to 00332783 has its CatchHandler @ 003327e0 */\n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    /* try { // try from 00332540 to 003326e3 has its CatchHandler @ 003327e0 */\n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }\n    piVar10[2] = (int)(pbVar12 + 1);\n  }" { (expression_statement "local_30 = (uint)(byte)param_3;" (assignment_expression "local_30 = (uint)(byte)param_3" identifier = (cast_expression "(uint)(byte)param_3" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)param_3" ( (type_descriptor "byte" type_identifier) ) identifier))) ;) (expression_statement "*(undefined4 *)(param_2 + 4) = 0;" (assignment_expression "*(undefined4 *)(param_2 + 4) = 0" (pointer_expression "*(undefined4 *)(param_2 + 4)" * (cast_expression "(undefined4 *)(param_2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "**(undefined1 **)param_2 = 0;" (assignment_expression "**(undefined1 **)param_2 = 0" (pointer_expression "**(undefined1 **)param_2" * (pointer_expression "*(undefined1 **)param_2" * (cast_expression "(undefined1 **)param_2" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) = number_literal) ;) (expression_statement "piVar10 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78);" (assignment_expression "piVar10 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78)" identifier = (pointer_expression "*(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78)" * (cast_expression "(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78)" ( (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78" (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc)" identifier + (pointer_expression "*(int *)(*(int *)param_1 + -0xc)" * (cast_expression "(int *)(*(int *)param_1 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)param_1 + -0xc)" ( (binary_expression "*(int *)param_1 + -0xc" (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) + number_literal) ))))) ;) (expression_statement "pbVar12 = (byte *)piVar10[2];" (assignment_expression "pbVar12 = (byte *)piVar10[2]" identifier = (cast_expression "(byte *)piVar10[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[2]" identifier [ number_literal ]))) ;) (expression_statement "pbVar7 = (byte *)piVar10[3];" (assignment_expression "pbVar7 = (byte *)piVar10[3]" identifier = (cast_expression "(byte *)piVar10[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[3]" identifier [ number_literal ]))) ;) (if_statement "if (pbVar12 < pbVar7) {\n      uVar3 = (uint)*pbVar12;\n    }\n    else {\n                    /* try { // try from 00332710 to 00332717 has its CatchHandler @ 00332790 */\n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }" if (parenthesized_expression "(pbVar12 < pbVar7)" ( (binary_expression "pbVar12 < pbVar7" identifier < identifier) )) (compound_statement "{\n      uVar3 = (uint)*pbVar12;\n    }" { (expression_statement "uVar3 = (uint)*pbVar12;" (assignment_expression "uVar3 = (uint)*pbVar12" identifier = (binary_expression "(uint)*pbVar12" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) }) (else_clause "else {\n                    /* try { // try from 00332710 to 00332717 has its CatchHandler @ 00332790 */\n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }" else (compound_statement "{\n                    /* try { // try from 00332710 to 00332717 has its CatchHandler @ 00332790 */\n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }" { comment (expression_statement "uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);" (assignment_expression "uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10)" identifier = (call_expression "(**(code **)(*piVar10 + 0x24))(piVar10)" (parenthesized_expression "(**(code **)(*piVar10 + 0x24))" ( (pointer_expression "**(code **)(*piVar10 + 0x24)" * (pointer_expression "*(code **)(*piVar10 + 0x24)" * (cast_expression "(code **)(*piVar10 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar10 + 0x24)" ( (binary_expression "*piVar10 + 0x24" (pointer_expression "*piVar10" * identifier) + number_literal) ))))) )) (argument_list "(piVar10)" ( identifier )))) ;) (if_statement "if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }" if (parenthesized_expression "(uVar3 == 0xffffffff)" ( (binary_expression "uVar3 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }" { (labeled_statement "LAB_00332700:\n        uVar6 = 6;" statement_identifier : (expression_statement "uVar6 = 6;" (assignment_expression "uVar6 = 6" identifier = number_literal) ;)) (goto_statement "goto LAB_00332458;" goto statement_identifier ;) })) (expression_statement "pbVar7 = (byte *)piVar10[3];" (assignment_expression "pbVar7 = (byte *)piVar10[3]" identifier = (cast_expression "(byte *)piVar10[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[3]" identifier [ number_literal ]))) ;) (expression_statement "pbVar12 = (byte *)piVar10[2];" (assignment_expression "pbVar12 = (byte *)piVar10[2]" identifier = (cast_expression "(byte *)piVar10[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[2]" identifier [ number_literal ]))) ;) }))) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (if_statement "if ((byte)param_3 == uVar3) {\n      if (pbVar7 <= pbVar12) {\n                    /* try { // try from 00332764 to 0033276b has its CatchHandler @ 003327e8 */\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }\n    }\n    else {\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    /* try { // try from 0033277c to 00332783 has its CatchHandler @ 003327e0 */\n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    /* try { // try from 00332540 to 003326e3 has its CatchHandler @ 003327e0 */\n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }" if (parenthesized_expression "((byte)param_3 == uVar3)" ( (binary_expression "(byte)param_3 == uVar3" (cast_expression "(byte)param_3" ( (type_descriptor "byte" type_identifier) ) identifier) == identifier) )) (compound_statement "{\n      if (pbVar7 <= pbVar12) {\n                    /* try { // try from 00332764 to 0033276b has its CatchHandler @ 003327e8 */\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }\n    }" { (if_statement "if (pbVar7 <= pbVar12) {\n                    /* try { // try from 00332764 to 0033276b has its CatchHandler @ 003327e8 */\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }" if (parenthesized_expression "(pbVar7 <= pbVar12)" ( (binary_expression "pbVar7 <= pbVar12" identifier <= identifier) )) (compound_statement "{\n                    /* try { // try from 00332764 to 0033276b has its CatchHandler @ 003327e8 */\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }" { comment (expression_statement "(**(code **)(*piVar10 + 0x28))(piVar10);" (call_expression "(**(code **)(*piVar10 + 0x28))(piVar10)" (parenthesized_expression "(**(code **)(*piVar10 + 0x28))" ( (pointer_expression "**(code **)(*piVar10 + 0x28)" * (pointer_expression "*(code **)(*piVar10 + 0x28)" * (cast_expression "(code **)(*piVar10 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar10 + 0x28)" ( (binary_expression "*piVar10 + 0x28" (pointer_expression "*piVar10" * identifier) + number_literal) ))))) )) (argument_list "(piVar10)" ( identifier ))) ;) (return_statement "return param_1;" return identifier ;) })) }) (else_clause "else {\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    /* try { // try from 0033277c to 00332783 has its CatchHandler @ 003327e0 */\n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    /* try { // try from 00332540 to 003326e3 has its CatchHandler @ 003327e0 */\n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }" else (compound_statement "{\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    /* try { // try from 0033277c to 00332783 has its CatchHandler @ 003327e0 */\n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    /* try { // try from 00332540 to 003326e3 has its CatchHandler @ 003327e0 */\n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }" { (expression_statement "local_2c = param_2 + 8;" (assignment_expression "local_2c = param_2 + 8" identifier = (binary_expression "param_2 + 8" identifier + number_literal)) ;) (do_statement "do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    /* try { // try from 0033277c to 00332783 has its CatchHandler @ 003327e0 */\n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    /* try { // try from 00332540 to 003326e3 has its CatchHandler @ 003327e0 */\n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);" do (compound_statement "{\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    /* try { // try from 0033277c to 00332783 has its CatchHandler @ 003327e0 */\n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    /* try { // try from 00332540 to 003326e3 has its CatchHandler @ 003327e0 */\n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      }" { (expression_statement "uVar9 = *(uint *)(param_2 + 4);" (assignment_expression "uVar9 = *(uint *)(param_2 + 4)" identifier = (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = 0x7fffffff - uVar11;" (assignment_expression "uVar6 = 0x7fffffff - uVar11" identifier = (binary_expression "0x7fffffff - uVar11" number_literal - identifier)) ;) (if_statement "if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }" if (parenthesized_expression "((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11))" ( (binary_expression "(int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)" (binary_expression "(int)pbVar7 - (int)pbVar12" (cast_expression "(int)pbVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) <= (cast_expression "(int)(0x7fffffff - uVar11)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(0x7fffffff - uVar11)" ( (binary_expression "0x7fffffff - uVar11" number_literal - identifier) )))) )) (compound_statement "{\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }" { (expression_statement "uVar6 = (int)pbVar7 - (int)pbVar12;" (assignment_expression "uVar6 = (int)pbVar7 - (int)pbVar12" identifier = (binary_expression "(int)pbVar7 - (int)pbVar12" (cast_expression "(int)pbVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (if_statement "if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }" if (parenthesized_expression "((int)uVar6 < 2)" ( (binary_expression "(int)uVar6 < 2" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }" { (expression_statement "psVar8 = *(string **)param_2;" (assignment_expression "psVar8 = *(string **)param_2" identifier = (pointer_expression "*(string **)param_2" * (cast_expression "(string **)param_2" ( (type_descriptor "string **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "uVar6 = uVar9 + 1;" (assignment_expression "uVar6 = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;) (if_statement "if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }" if (parenthesized_expression "(psVar8 == local_2c)" ( (binary_expression "psVar8 == local_2c" identifier == identifier) )) (compound_statement "{\n            uVar4 = 0xf;\n          }" { (expression_statement "uVar4 = 0xf;" (assignment_expression "uVar4 = 0xf" identifier = number_literal) ;) }) (else_clause "else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }" else (compound_statement "{\n            uVar4 = *(uint *)(param_2 + 8);\n          }" { (expression_statement "uVar4 = *(uint *)(param_2 + 8);" (assignment_expression "uVar4 = *(uint *)(param_2 + 8)" identifier = (pointer_expression "*(uint *)(param_2 + 8)" * (cast_expression "(uint *)(param_2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) }))) (if_statement "if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }" if (parenthesized_expression "(uVar4 < uVar6)" ( (binary_expression "uVar4 < uVar6" identifier < identifier) )) (compound_statement "{\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }" { (labeled_statement "string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_mutate(param_2,uVar9,0,(char *)0x0,1);" (call_expression "_M_mutate(param_2,uVar9,0,(char *)0x0,1)" identifier (argument_list "(param_2,uVar9,0,(char *)0x0,1)" ( identifier , identifier , number_literal , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))) ;)) (expression_statement "psVar8 = *(string **)param_2;" (assignment_expression "psVar8 = *(string **)param_2" identifier = (pointer_expression "*(string **)param_2" * (cast_expression "(string **)param_2" ( (type_descriptor "string **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) })) (expression_statement "psVar8[uVar9] = SUB41(uVar3,0);" (assignment_expression "psVar8[uVar9] = SUB41(uVar3,0)" (subscript_expression "psVar8[uVar9]" identifier [ identifier ]) = (call_expression "SUB41(uVar3,0)" identifier (argument_list "(uVar3,0)" ( identifier , number_literal )))) ;) (expression_statement "*(uint *)(param_2 + 4) = uVar6;" (assignment_expression "*(uint *)(param_2 + 4) = uVar6" (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 *)(*(int *)param_2 + uVar6) = 0;" (assignment_expression "*(undefined1 *)(*(int *)param_2 + uVar6) = 0" (pointer_expression "*(undefined1 *)(*(int *)param_2 + uVar6)" * (cast_expression "(undefined1 *)(*(int *)param_2 + uVar6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)param_2 + uVar6)" ( (binary_expression "*(int *)param_2 + uVar6" (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + identifier) )))) = number_literal) ;) (expression_statement "pbVar7 = (byte *)piVar10[3];" (assignment_expression "pbVar7 = (byte *)piVar10[3]" identifier = (cast_expression "(byte *)piVar10[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (if_statement "if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }" if (parenthesized_expression "((byte *)piVar10[2] < pbVar7)" ( (binary_expression "(byte *)piVar10[2] < pbVar7" (cast_expression "(byte *)piVar10[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[2]" identifier [ number_literal ])) < identifier) )) (compound_statement "{\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }" { (expression_statement "pbVar12 = (byte *)piVar10[2] + 1;" (assignment_expression "pbVar12 = (byte *)piVar10[2] + 1" identifier = (binary_expression "(byte *)piVar10[2] + 1" (cast_expression "(byte *)piVar10[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[2]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "piVar10[2] = (int)pbVar12;" (assignment_expression "piVar10[2] = (int)pbVar12" (subscript_expression "piVar10[2]" identifier [ number_literal ]) = (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (labeled_statement "LAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }" statement_identifier : (if_statement "if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }" if (parenthesized_expression "(pbVar12 < pbVar7)" ( (binary_expression "pbVar12 < pbVar7" identifier < identifier) )) (compound_statement "{\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }" { (expression_statement "bVar1 = *pbVar12;" (assignment_expression "bVar1 = *pbVar12" identifier = (pointer_expression "*pbVar12" * identifier)) ;) (goto_statement "goto joined_r0x00332608;" goto statement_identifier ;) }))) (goto_statement "goto LAB_00332644;" goto statement_identifier ;) })) (expression_statement "iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);" (assignment_expression "iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10)" identifier = (call_expression "(**(code **)(*piVar10 + 0x28))(piVar10)" (parenthesized_expression "(**(code **)(*piVar10 + 0x28))" ( (pointer_expression "**(code **)(*piVar10 + 0x28)" * (pointer_expression "*(code **)(*piVar10 + 0x28)" * (cast_expression "(code **)(*piVar10 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar10 + 0x28)" ( (binary_expression "*piVar10 + 0x28" (pointer_expression "*piVar10" * identifier) + number_literal) ))))) )) (argument_list "(piVar10)" ( identifier )))) ;) (if_statement "if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }" if (parenthesized_expression "(iVar2 != -1)" ( (binary_expression "iVar2 != -1" identifier != number_literal) )) (compound_statement "{\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }" { (expression_statement "pbVar12 = (byte *)piVar10[2];" (assignment_expression "pbVar12 = (byte *)piVar10[2]" identifier = (cast_expression "(byte *)piVar10[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[2]" identifier [ number_literal ]))) ;) (expression_statement "pbVar7 = (byte *)piVar10[3];" (assignment_expression "pbVar7 = (byte *)piVar10[3]" identifier = (cast_expression "(byte *)piVar10[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[3]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_003325fc;" goto statement_identifier ;) })) (labeled_statement "LAB_003326f0:\n          uVar6 = 2;" statement_identifier : (expression_statement "uVar6 = 2;" (assignment_expression "uVar6 = 2" identifier = number_literal) ;)) (goto_statement "goto LAB_00332458;" goto statement_identifier ;) })) (expression_statement "iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;" (assignment_expression "iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)" identifier = (call_expression "(*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)" (parenthesized_expression "(*(code *)PTR_memchr_004c5ac8)" ( (pointer_expression "*(code *)PTR_memchr_004c5ac8" * (cast_expression "(code *)PTR_memchr_004c5ac8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)" ( identifier , (call_expression "CONCAT31(in_register_00000018,param_3)" identifier (argument_list "(in_register_00000018,param_3)" ( identifier , identifier ))) , identifier )))) ;) (if_statement "if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n          uVar6 = iVar2 - (int)pbVar12;\n        }" { (expression_statement "uVar6 = iVar2 - (int)pbVar12;" (assignment_expression "uVar6 = iVar2 - (int)pbVar12" identifier = (binary_expression "iVar2 - (int)pbVar12" identifier - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (if_statement "if (0x7fffffff - uVar9 < uVar6) {\n                    /* try { // try from 0033277c to 00332783 has its CatchHandler @ 003327e0 */\n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }" if (parenthesized_expression "(0x7fffffff - uVar9 < uVar6)" ( (binary_expression "0x7fffffff - uVar9 < uVar6" (binary_expression "0x7fffffff - uVar9" number_literal - identifier) < identifier) )) (compound_statement "{\n                    /* try { // try from 0033277c to 00332783 has its CatchHandler @ 003327e0 */\n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }" { comment (expression_statement "piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);" (assignment_expression "piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c)" identifier = (cast_expression "(istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c)" ( (type_descriptor "istream *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c)" (parenthesized_expression "(*(code *)PTR___throw_length_error_004c1e74)" ( (pointer_expression "*(code *)PTR___throw_length_error_004c1e74" * (cast_expression "(code *)PTR___throw_length_error_004c1e74" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c)" ( (binary_expression "PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c" identifier + number_literal) ))))) ;) (return_statement "return piVar5;" return identifier ;) })) comment (labeled_statement "string::_M_append(param_2,(char *)pbVar12,uVar6);" statement_identifier : (ERROR ":" :) (expression_statement "_M_append(param_2,(char *)pbVar12,uVar6);" (call_expression "_M_append(param_2,(char *)pbVar12,uVar6)" identifier (argument_list "(param_2,(char *)pbVar12,uVar6)" ( identifier , (cast_expression "(char *)pbVar12" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;)) (expression_statement "uVar11 = uVar11 + uVar6;" (assignment_expression "uVar11 = uVar11 + uVar6" identifier = (binary_expression "uVar11 + uVar6" identifier + identifier)) ;) (expression_statement "pbVar7 = (byte *)piVar10[3];" (assignment_expression "pbVar7 = (byte *)piVar10[3]" identifier = (cast_expression "(byte *)piVar10[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[3]" identifier [ number_literal ]))) ;) (expression_statement "pbVar12 = (byte *)(piVar10[2] + uVar6);" (assignment_expression "pbVar12 = (byte *)(piVar10[2] + uVar6)" identifier = (cast_expression "(byte *)(piVar10[2] + uVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar10[2] + uVar6)" ( (binary_expression "piVar10[2] + uVar6" (subscript_expression "piVar10[2]" identifier [ number_literal ]) + identifier) )))) ;) (expression_statement "piVar10[2] = (int)pbVar12;" (assignment_expression "piVar10[2] = (int)pbVar12" (subscript_expression "piVar10[2]" identifier [ number_literal ]) = (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }" if (parenthesized_expression "(pbVar12 < pbVar7)" ( (binary_expression "pbVar12 < pbVar7" identifier < identifier) )) (compound_statement "{\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }" { (expression_statement "bVar1 = *pbVar12;" (assignment_expression "bVar1 = *pbVar12" identifier = (pointer_expression "*pbVar12" * identifier)) ;) (labeled_statement "joined_r0x00332608:\n          uVar3 = (uint)bVar1;" statement_identifier : (expression_statement "uVar3 = (uint)bVar1;" (assignment_expression "uVar3 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;)) (if_statement "if (0x7ffffffe < uVar11) goto LAB_00332610;" if (parenthesized_expression "(0x7ffffffe < uVar11)" ( (binary_expression "0x7ffffffe < uVar11" number_literal < identifier) )) (goto_statement "goto LAB_00332610;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }" else (compound_statement "{\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }" { (labeled_statement "LAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);" statement_identifier : (expression_statement "uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);" (assignment_expression "uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10)" identifier = (call_expression "(**(code **)(*piVar10 + 0x24))(piVar10)" (parenthesized_expression "(**(code **)(*piVar10 + 0x24))" ( (pointer_expression "**(code **)(*piVar10 + 0x24)" * (pointer_expression "*(code **)(*piVar10 + 0x24)" * (cast_expression "(code **)(*piVar10 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar10 + 0x24)" ( (binary_expression "*piVar10 + 0x24" (pointer_expression "*piVar10" * identifier) + number_literal) ))))) )) (argument_list "(piVar10)" ( identifier )))) ;)) (if_statement "if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }" if (parenthesized_expression "(0x7ffffffe < uVar11)" ( (binary_expression "0x7ffffffe < uVar11" number_literal < identifier) )) (compound_statement "{\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }" { (expression_statement "uVar6 = 2;" (assignment_expression "uVar6 = 2" identifier = number_literal) ;) (if_statement "if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }" if (parenthesized_expression "(uVar3 == 0xffffffff)" ( (binary_expression "uVar3 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }" { (expression_statement "iVar2 = *(int *)param_1;" (assignment_expression "iVar2 = *(int *)param_1" identifier = (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (goto_statement "goto LAB_0033245c;" goto statement_identifier ;) })) (labeled_statement "LAB_00332610:\n            uVar6 = 4;" statement_identifier : (expression_statement "uVar6 = 4;" (assignment_expression "uVar6 = 4" identifier = number_literal) ;)) (if_statement "if (local_30 != uVar3) goto LAB_00332458;" if (parenthesized_expression "(local_30 != uVar3)" ( (binary_expression "local_30 != uVar3" identifier != identifier) )) (goto_statement "goto LAB_00332458;" goto statement_identifier ;)) (expression_statement "iVar2 = uVar11 + 1;" (assignment_expression "iVar2 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (if_statement "if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;" if (parenthesized_expression "((uint)piVar10[3] <= (uint)piVar10[2])" ( (binary_expression "(uint)piVar10[3] <= (uint)piVar10[2]" (cast_expression "(uint)piVar10[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar10[3]" identifier [ number_literal ])) <= (cast_expression "(uint)piVar10[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar10[2]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_003326b0;" goto statement_identifier ;)) (expression_statement "piVar10[2] = piVar10[2] + 1;" (assignment_expression "piVar10[2] = piVar10[2] + 1" (subscript_expression "piVar10[2]" identifier [ number_literal ]) = (binary_expression "piVar10[2] + 1" (subscript_expression "piVar10[2]" identifier [ number_literal ]) + number_literal)) ;) (if_statement "if (iVar2 != 0) {\n              return param_1;\n            }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n              return param_1;\n            }" { (return_statement "return param_1;" return identifier ;) })) (goto_statement "goto LAB_00332454;" goto statement_identifier ;) })) (if_statement "if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }" if (parenthesized_expression "(uVar3 == 0xffffffff)" ( (binary_expression "uVar3 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }" { (if_statement "if (uVar11 != 0) goto LAB_003326f0;" if (parenthesized_expression "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )) (goto_statement "goto LAB_003326f0;" goto statement_identifier ;)) (goto_statement "goto LAB_00332700;" goto statement_identifier ;) })) (expression_statement "pbVar7 = (byte *)piVar10[3];" (assignment_expression "pbVar7 = (byte *)piVar10[3]" identifier = (cast_expression "(byte *)piVar10[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[3]" identifier [ number_literal ]))) ;) }))) (expression_statement "pbVar12 = (byte *)piVar10[2];" (assignment_expression "pbVar12 = (byte *)piVar10[2]" identifier = (cast_expression "(byte *)piVar10[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[2]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "(uVar3 != local_30)" ( (binary_expression "uVar3 != local_30" identifier != identifier) )) ;) (expression_statement "iVar2 = uVar11 + 1;" (assignment_expression "iVar2 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (if_statement "if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }" if (parenthesized_expression "(pbVar7 <= pbVar12)" ( (binary_expression "pbVar7 <= pbVar12" identifier <= identifier) )) (compound_statement "{\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }" { (labeled_statement "LAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);" statement_identifier : (expression_statement "(**(code **)(*piVar10 + 0x28))(piVar10);" (call_expression "(**(code **)(*piVar10 + 0x28))(piVar10)" (parenthesized_expression "(**(code **)(*piVar10 + 0x28))" ( (pointer_expression "**(code **)(*piVar10 + 0x28)" * (pointer_expression "*(code **)(*piVar10 + 0x28)" * (cast_expression "(code **)(*piVar10 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar10 + 0x28)" ( (binary_expression "*piVar10 + 0x28" (pointer_expression "*piVar10" * identifier) + number_literal) ))))) )) (argument_list "(piVar10)" ( identifier ))) ;)) (expression_statement "uVar6 = 4;" (assignment_expression "uVar6 = 4" identifier = number_literal) ;) (if_statement "if (iVar2 != 0) {\n          return param_1;\n        }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n          return param_1;\n        }" { (return_statement "return param_1;" return identifier ;) })) (goto_statement "goto LAB_00332458;" goto statement_identifier ;) })) }))) (expression_statement "piVar10[2] = (int)(pbVar12 + 1);" (assignment_expression "piVar10[2] = (int)(pbVar12 + 1)" (subscript_expression "piVar10[2]" identifier [ number_literal ]) = (cast_expression "(int)(pbVar12 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar12 + 1)" ( (binary_expression "pbVar12 + 1" identifier + number_literal) )))) ;) }))) (return_statement "return param_1;" return identifier ;) }))
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n/* std::istream& std::getline<char, std::char_traits<char>, std::allocator<char> >(std::istream&,\n   std::string&, char) */\n\nistream * std::getline<char,std::char_traits<char>,std::allocator<char>>\n                    (istream *param_1,string *param_2,char param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  istream *piVar5;\n  uint uVar6;\n  byte *pbVar7;\n  string *psVar8;\n  undefined3 in_register_00000018;\n  uint uVar9;\n  int *piVar10;\n  uint uVar11;\n  byte *pbVar12;\n  char local_38 [8];\n  uint local_30;\n  string *local_2c;\n  \n  (*(code *)PTR_sentry_004c5178)(local_38,param_1,1);\n  if (local_38[0] == '\0') {\nLAB_00332454:\n    uVar6 = 4;\nLAB_00332458:\n    iVar2 = *(int *)param_1;\nLAB_0033245c:\n    (*(code *)PTR_clear_004c22b8)\n              (param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14));\n  }\n  else {\n    local_30 = (uint)(byte)param_3;\n    *(undefined4 *)(param_2 + 4) = 0;\n    **(undefined1 **)param_2 = 0;\n    piVar10 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78);\n    pbVar12 = (byte *)piVar10[2];\n    pbVar7 = (byte *)piVar10[3];\n    if (pbVar12 < pbVar7) {\n      uVar3 = (uint)*pbVar12;\n    }\n    else {\n                    /* try { // try from 00332710 to 00332717 has its CatchHandler @ 00332790 */\n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }\n    uVar11 = 0;\n    if ((byte)param_3 == uVar3) {\n      if (pbVar7 <= pbVar12) {\n                    /* try { // try from 00332764 to 0033276b has its CatchHandler @ 003327e8 */\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }\n    }\n    else {\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    /* try { // try from 0033277c to 00332783 has its CatchHandler @ 003327e0 */\n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    /* try { // try from 00332540 to 003326e3 has its CatchHandler @ 003327e0 */\n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }\n    piVar10[2] = (int)(pbVar12 + 1);\n  }\n  return param_1;\n}\n\n" comment comment (ERROR "istream * std::getline<char," (binary_expression "istream * std::getline<char" (binary_expression "istream * std" identifier * identifier) (ERROR "::getline" : : identifier) < identifier) ,) (labeled_statement "std::char_traits<char>,std::allocator<char>>\n                    (istream *param_1,string *param_2,char param_3)" statement_identifier (ERROR "::char_traits<char>,std:" : : (binary_expression "char_traits<char>,std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) :) : (expression_statement "allocator<char>>\n                    (istream *param_1,string *param_2,char param_3)" (binary_expression "allocator<char>>\n                    (istream *param_1,string *param_2,char param_3)" identifier < (binary_expression "char>>\n                    (istream *param_1,string *param_2,char param_3)" identifier >> (parenthesized_expression "(istream *param_1,string *param_2,char param_3)" ( (comma_expression "istream *param_1,string *param_2,char param_3" (binary_expression "istream *param_1" identifier * identifier) , (comma_expression "string *param_2,char param_3" (binary_expression "string *param_2" identifier * identifier) , (ERROR "char" identifier) identifier)) )))) ;)) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  istream *piVar5;\n  uint uVar6;\n  byte *pbVar7;\n  string *psVar8;\n  undefined3 in_register_00000018;\n  uint uVar9;\n  int *piVar10;\n  uint uVar11;\n  byte *pbVar12;\n  char local_38 [8];\n  uint local_30;\n  string *local_2c;\n  \n  (*(code *)PTR_sentry_004c5178)(local_38,param_1,1);\n  if (local_38[0] == '\0') {\nLAB_00332454:\n    uVar6 = 4;\nLAB_00332458:\n    iVar2 = *(int *)param_1;\nLAB_0033245c:\n    (*(code *)PTR_clear_004c22b8)\n              (param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14));\n  }\n  else {\n    local_30 = (uint)(byte)param_3;\n    *(undefined4 *)(param_2 + 4) = 0;\n    **(undefined1 **)param_2 = 0;\n    piVar10 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78);\n    pbVar12 = (byte *)piVar10[2];\n    pbVar7 = (byte *)piVar10[3];\n    if (pbVar12 < pbVar7) {\n      uVar3 = (uint)*pbVar12;\n    }\n    else {\n                    /* try { // try from 00332710 to 00332717 has its CatchHandler @ 00332790 */\n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }\n    uVar11 = 0;\n    if ((byte)param_3 == uVar3) {\n      if (pbVar7 <= pbVar12) {\n                    /* try { // try from 00332764 to 0033276b has its CatchHandler @ 003327e8 */\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }\n    }\n    else {\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    /* try { // try from 0033277c to 00332783 has its CatchHandler @ 003327e0 */\n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    /* try { // try from 00332540 to 003326e3 has its CatchHandler @ 003327e0 */\n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }\n    piVar10[2] = (int)(pbVar12 + 1);\n  }\n  return param_1;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "istream *piVar5;" type_identifier (pointer_declarator "*piVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "string *psVar8;" type_identifier (pointer_declarator "*psVar8" * identifier) ;) (declaration "undefined3 in_register_00000018;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "char local_38 [8];" primitive_type (array_declarator "local_38 [8]" identifier [ number_literal ]) ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "string *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (expression_statement "(*(code *)PTR_sentry_004c5178)(local_38,param_1,1);" (call_expression "(*(code *)PTR_sentry_004c5178)(local_38,param_1,1)" (parenthesized_expression "(*(code *)PTR_sentry_004c5178)" ( (pointer_expression "*(code *)PTR_sentry_004c5178" * (cast_expression "(code *)PTR_sentry_004c5178" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_38,param_1,1)" ( identifier , identifier , number_literal ))) ;) (if_statement "if (local_38[0] == '\0') {\nLAB_00332454:\n    uVar6 = 4;\nLAB_00332458:\n    iVar2 = *(int *)param_1;\nLAB_0033245c:\n    (*(code *)PTR_clear_004c22b8)\n              (param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14));\n  }\n  else {\n    local_30 = (uint)(byte)param_3;\n    *(undefined4 *)(param_2 + 4) = 0;\n    **(undefined1 **)param_2 = 0;\n    piVar10 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78);\n    pbVar12 = (byte *)piVar10[2];\n    pbVar7 = (byte *)piVar10[3];\n    if (pbVar12 < pbVar7) {\n      uVar3 = (uint)*pbVar12;\n    }\n    else {\n                    /* try { // try from 00332710 to 00332717 has its CatchHandler @ 00332790 */\n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }\n    uVar11 = 0;\n    if ((byte)param_3 == uVar3) {\n      if (pbVar7 <= pbVar12) {\n                    /* try { // try from 00332764 to 0033276b has its CatchHandler @ 003327e8 */\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }\n    }\n    else {\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    /* try { // try from 0033277c to 00332783 has its CatchHandler @ 003327e0 */\n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    /* try { // try from 00332540 to 003326e3 has its CatchHandler @ 003327e0 */\n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }\n    piVar10[2] = (int)(pbVar12 + 1);\n  }" if (parenthesized_expression "(local_38[0] == '\0')" ( (binary_expression "local_38[0] == '\0'" (subscript_expression "local_38[0]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_00332454:\n    uVar6 = 4;\nLAB_00332458:\n    iVar2 = *(int *)param_1;\nLAB_0033245c:\n    (*(code *)PTR_clear_004c22b8)\n              (param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14));\n  }" { (labeled_statement "LAB_00332454:\n    uVar6 = 4;" statement_identifier : (expression_statement "uVar6 = 4;" (assignment_expression "uVar6 = 4" identifier = number_literal) ;)) (labeled_statement "LAB_00332458:\n    iVar2 = *(int *)param_1;" statement_identifier : (expression_statement "iVar2 = *(int *)param_1;" (assignment_expression "iVar2 = *(int *)param_1" identifier = (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;)) (labeled_statement "LAB_0033245c:\n    (*(code *)PTR_clear_004c22b8)\n              (param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14));" statement_identifier : (expression_statement "(*(code *)PTR_clear_004c22b8)\n              (param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14));" (call_expression "(*(code *)PTR_clear_004c22b8)\n              (param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14))" (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 "(param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14))" ( (binary_expression "param_1 + *(int *)(iVar2 + -0xc)" identifier + (pointer_expression "*(int *)(iVar2 + -0xc)" * (cast_expression "(int *)(iVar2 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + -0xc)" ( (binary_expression "iVar2 + -0xc" identifier + number_literal) ))))) , (binary_expression "uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14)" identifier | (pointer_expression "*(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14)" * (cast_expression "(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(int *)(iVar2 + -0xc) + 0x14)" ( (binary_expression "param_1 + *(int *)(iVar2 + -0xc) + 0x14" (binary_expression "param_1 + *(int *)(iVar2 + -0xc)" identifier + (pointer_expression "*(int *)(iVar2 + -0xc)" * (cast_expression "(int *)(iVar2 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + -0xc)" ( (binary_expression "iVar2 + -0xc" identifier + number_literal) ))))) + number_literal) ))))) ))) ;)) }) (else_clause "else {\n    local_30 = (uint)(byte)param_3;\n    *(undefined4 *)(param_2 + 4) = 0;\n    **(undefined1 **)param_2 = 0;\n    piVar10 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78);\n    pbVar12 = (byte *)piVar10[2];\n    pbVar7 = (byte *)piVar10[3];\n    if (pbVar12 < pbVar7) {\n      uVar3 = (uint)*pbVar12;\n    }\n    else {\n                    /* try { // try from 00332710 to 00332717 has its CatchHandler @ 00332790 */\n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }\n    uVar11 = 0;\n    if ((byte)param_3 == uVar3) {\n      if (pbVar7 <= pbVar12) {\n                    /* try { // try from 00332764 to 0033276b has its CatchHandler @ 003327e8 */\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }\n    }\n    else {\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    /* try { // try from 0033277c to 00332783 has its CatchHandler @ 003327e0 */\n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    /* try { // try from 00332540 to 003326e3 has its CatchHandler @ 003327e0 */\n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }\n    piVar10[2] = (int)(pbVar12 + 1);\n  }" else (compound_statement "{\n    local_30 = (uint)(byte)param_3;\n    *(undefined4 *)(param_2 + 4) = 0;\n    **(undefined1 **)param_2 = 0;\n    piVar10 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78);\n    pbVar12 = (byte *)piVar10[2];\n    pbVar7 = (byte *)piVar10[3];\n    if (pbVar12 < pbVar7) {\n      uVar3 = (uint)*pbVar12;\n    }\n    else {\n                    /* try { // try from 00332710 to 00332717 has its CatchHandler @ 00332790 */\n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }\n    uVar11 = 0;\n    if ((byte)param_3 == uVar3) {\n      if (pbVar7 <= pbVar12) {\n                    /* try { // try from 00332764 to 0033276b has its CatchHandler @ 003327e8 */\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }\n    }\n    else {\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    /* try { // try from 0033277c to 00332783 has its CatchHandler @ 003327e0 */\n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    /* try { // try from 00332540 to 003326e3 has its CatchHandler @ 003327e0 */\n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }\n    piVar10[2] = (int)(pbVar12 + 1);\n  }" { (expression_statement "local_30 = (uint)(byte)param_3;" (assignment_expression "local_30 = (uint)(byte)param_3" identifier = (cast_expression "(uint)(byte)param_3" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)param_3" ( (type_descriptor "byte" type_identifier) ) identifier))) ;) (expression_statement "*(undefined4 *)(param_2 + 4) = 0;" (assignment_expression "*(undefined4 *)(param_2 + 4) = 0" (pointer_expression "*(undefined4 *)(param_2 + 4)" * (cast_expression "(undefined4 *)(param_2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "**(undefined1 **)param_2 = 0;" (assignment_expression "**(undefined1 **)param_2 = 0" (pointer_expression "**(undefined1 **)param_2" * (pointer_expression "*(undefined1 **)param_2" * (cast_expression "(undefined1 **)param_2" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) = number_literal) ;) (expression_statement "piVar10 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78);" (assignment_expression "piVar10 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78)" identifier = (pointer_expression "*(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78)" * (cast_expression "(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78)" ( (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78" (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc)" identifier + (pointer_expression "*(int *)(*(int *)param_1 + -0xc)" * (cast_expression "(int *)(*(int *)param_1 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)param_1 + -0xc)" ( (binary_expression "*(int *)param_1 + -0xc" (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) + number_literal) ))))) ;) (expression_statement "pbVar12 = (byte *)piVar10[2];" (assignment_expression "pbVar12 = (byte *)piVar10[2]" identifier = (cast_expression "(byte *)piVar10[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[2]" identifier [ number_literal ]))) ;) (expression_statement "pbVar7 = (byte *)piVar10[3];" (assignment_expression "pbVar7 = (byte *)piVar10[3]" identifier = (cast_expression "(byte *)piVar10[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[3]" identifier [ number_literal ]))) ;) (if_statement "if (pbVar12 < pbVar7) {\n      uVar3 = (uint)*pbVar12;\n    }\n    else {\n                    /* try { // try from 00332710 to 00332717 has its CatchHandler @ 00332790 */\n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }" if (parenthesized_expression "(pbVar12 < pbVar7)" ( (binary_expression "pbVar12 < pbVar7" identifier < identifier) )) (compound_statement "{\n      uVar3 = (uint)*pbVar12;\n    }" { (expression_statement "uVar3 = (uint)*pbVar12;" (assignment_expression "uVar3 = (uint)*pbVar12" identifier = (binary_expression "(uint)*pbVar12" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) }) (else_clause "else {\n                    /* try { // try from 00332710 to 00332717 has its CatchHandler @ 00332790 */\n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }" else (compound_statement "{\n                    /* try { // try from 00332710 to 00332717 has its CatchHandler @ 00332790 */\n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }" { comment (expression_statement "uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);" (assignment_expression "uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10)" identifier = (call_expression "(**(code **)(*piVar10 + 0x24))(piVar10)" (parenthesized_expression "(**(code **)(*piVar10 + 0x24))" ( (pointer_expression "**(code **)(*piVar10 + 0x24)" * (pointer_expression "*(code **)(*piVar10 + 0x24)" * (cast_expression "(code **)(*piVar10 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar10 + 0x24)" ( (binary_expression "*piVar10 + 0x24" (pointer_expression "*piVar10" * identifier) + number_literal) ))))) )) (argument_list "(piVar10)" ( identifier )))) ;) (if_statement "if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }" if (parenthesized_expression "(uVar3 == 0xffffffff)" ( (binary_expression "uVar3 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }" { (labeled_statement "LAB_00332700:\n        uVar6 = 6;" statement_identifier : (expression_statement "uVar6 = 6;" (assignment_expression "uVar6 = 6" identifier = number_literal) ;)) (goto_statement "goto LAB_00332458;" goto statement_identifier ;) })) (expression_statement "pbVar7 = (byte *)piVar10[3];" (assignment_expression "pbVar7 = (byte *)piVar10[3]" identifier = (cast_expression "(byte *)piVar10[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[3]" identifier [ number_literal ]))) ;) (expression_statement "pbVar12 = (byte *)piVar10[2];" (assignment_expression "pbVar12 = (byte *)piVar10[2]" identifier = (cast_expression "(byte *)piVar10[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[2]" identifier [ number_literal ]))) ;) }))) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (if_statement "if ((byte)param_3 == uVar3) {\n      if (pbVar7 <= pbVar12) {\n                    /* try { // try from 00332764 to 0033276b has its CatchHandler @ 003327e8 */\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }\n    }\n    else {\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    /* try { // try from 0033277c to 00332783 has its CatchHandler @ 003327e0 */\n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    /* try { // try from 00332540 to 003326e3 has its CatchHandler @ 003327e0 */\n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }" if (parenthesized_expression "((byte)param_3 == uVar3)" ( (binary_expression "(byte)param_3 == uVar3" (cast_expression "(byte)param_3" ( (type_descriptor "byte" type_identifier) ) identifier) == identifier) )) (compound_statement "{\n      if (pbVar7 <= pbVar12) {\n                    /* try { // try from 00332764 to 0033276b has its CatchHandler @ 003327e8 */\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }\n    }" { (if_statement "if (pbVar7 <= pbVar12) {\n                    /* try { // try from 00332764 to 0033276b has its CatchHandler @ 003327e8 */\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }" if (parenthesized_expression "(pbVar7 <= pbVar12)" ( (binary_expression "pbVar7 <= pbVar12" identifier <= identifier) )) (compound_statement "{\n                    /* try { // try from 00332764 to 0033276b has its CatchHandler @ 003327e8 */\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }" { comment (expression_statement "(**(code **)(*piVar10 + 0x28))(piVar10);" (call_expression "(**(code **)(*piVar10 + 0x28))(piVar10)" (parenthesized_expression "(**(code **)(*piVar10 + 0x28))" ( (pointer_expression "**(code **)(*piVar10 + 0x28)" * (pointer_expression "*(code **)(*piVar10 + 0x28)" * (cast_expression "(code **)(*piVar10 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar10 + 0x28)" ( (binary_expression "*piVar10 + 0x28" (pointer_expression "*piVar10" * identifier) + number_literal) ))))) )) (argument_list "(piVar10)" ( identifier ))) ;) (return_statement "return param_1;" return identifier ;) })) }) (else_clause "else {\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    /* try { // try from 0033277c to 00332783 has its CatchHandler @ 003327e0 */\n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    /* try { // try from 00332540 to 003326e3 has its CatchHandler @ 003327e0 */\n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }" else (compound_statement "{\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    /* try { // try from 0033277c to 00332783 has its CatchHandler @ 003327e0 */\n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    /* try { // try from 00332540 to 003326e3 has its CatchHandler @ 003327e0 */\n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }" { (expression_statement "local_2c = param_2 + 8;" (assignment_expression "local_2c = param_2 + 8" identifier = (binary_expression "param_2 + 8" identifier + number_literal)) ;) (do_statement "do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    /* try { // try from 0033277c to 00332783 has its CatchHandler @ 003327e0 */\n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    /* try { // try from 00332540 to 003326e3 has its CatchHandler @ 003327e0 */\n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);" do (compound_statement "{\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    /* try { // try from 0033277c to 00332783 has its CatchHandler @ 003327e0 */\n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    /* try { // try from 00332540 to 003326e3 has its CatchHandler @ 003327e0 */\n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      }" { (expression_statement "uVar9 = *(uint *)(param_2 + 4);" (assignment_expression "uVar9 = *(uint *)(param_2 + 4)" identifier = (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = 0x7fffffff - uVar11;" (assignment_expression "uVar6 = 0x7fffffff - uVar11" identifier = (binary_expression "0x7fffffff - uVar11" number_literal - identifier)) ;) (if_statement "if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }" if (parenthesized_expression "((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11))" ( (binary_expression "(int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)" (binary_expression "(int)pbVar7 - (int)pbVar12" (cast_expression "(int)pbVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) <= (cast_expression "(int)(0x7fffffff - uVar11)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(0x7fffffff - uVar11)" ( (binary_expression "0x7fffffff - uVar11" number_literal - identifier) )))) )) (compound_statement "{\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }" { (expression_statement "uVar6 = (int)pbVar7 - (int)pbVar12;" (assignment_expression "uVar6 = (int)pbVar7 - (int)pbVar12" identifier = (binary_expression "(int)pbVar7 - (int)pbVar12" (cast_expression "(int)pbVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (if_statement "if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }" if (parenthesized_expression "((int)uVar6 < 2)" ( (binary_expression "(int)uVar6 < 2" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }" { (expression_statement "psVar8 = *(string **)param_2;" (assignment_expression "psVar8 = *(string **)param_2" identifier = (pointer_expression "*(string **)param_2" * (cast_expression "(string **)param_2" ( (type_descriptor "string **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "uVar6 = uVar9 + 1;" (assignment_expression "uVar6 = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;) (if_statement "if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }" if (parenthesized_expression "(psVar8 == local_2c)" ( (binary_expression "psVar8 == local_2c" identifier == identifier) )) (compound_statement "{\n            uVar4 = 0xf;\n          }" { (expression_statement "uVar4 = 0xf;" (assignment_expression "uVar4 = 0xf" identifier = number_literal) ;) }) (else_clause "else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }" else (compound_statement "{\n            uVar4 = *(uint *)(param_2 + 8);\n          }" { (expression_statement "uVar4 = *(uint *)(param_2 + 8);" (assignment_expression "uVar4 = *(uint *)(param_2 + 8)" identifier = (pointer_expression "*(uint *)(param_2 + 8)" * (cast_expression "(uint *)(param_2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) }))) (if_statement "if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }" if (parenthesized_expression "(uVar4 < uVar6)" ( (binary_expression "uVar4 < uVar6" identifier < identifier) )) (compound_statement "{\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }" { (labeled_statement "string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_mutate(param_2,uVar9,0,(char *)0x0,1);" (call_expression "_M_mutate(param_2,uVar9,0,(char *)0x0,1)" identifier (argument_list "(param_2,uVar9,0,(char *)0x0,1)" ( identifier , identifier , number_literal , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))) ;)) (expression_statement "psVar8 = *(string **)param_2;" (assignment_expression "psVar8 = *(string **)param_2" identifier = (pointer_expression "*(string **)param_2" * (cast_expression "(string **)param_2" ( (type_descriptor "string **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) })) (expression_statement "psVar8[uVar9] = SUB41(uVar3,0);" (assignment_expression "psVar8[uVar9] = SUB41(uVar3,0)" (subscript_expression "psVar8[uVar9]" identifier [ identifier ]) = (call_expression "SUB41(uVar3,0)" identifier (argument_list "(uVar3,0)" ( identifier , number_literal )))) ;) (expression_statement "*(uint *)(param_2 + 4) = uVar6;" (assignment_expression "*(uint *)(param_2 + 4) = uVar6" (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 *)(*(int *)param_2 + uVar6) = 0;" (assignment_expression "*(undefined1 *)(*(int *)param_2 + uVar6) = 0" (pointer_expression "*(undefined1 *)(*(int *)param_2 + uVar6)" * (cast_expression "(undefined1 *)(*(int *)param_2 + uVar6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)param_2 + uVar6)" ( (binary_expression "*(int *)param_2 + uVar6" (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + identifier) )))) = number_literal) ;) (expression_statement "pbVar7 = (byte *)piVar10[3];" (assignment_expression "pbVar7 = (byte *)piVar10[3]" identifier = (cast_expression "(byte *)piVar10[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (if_statement "if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }" if (parenthesized_expression "((byte *)piVar10[2] < pbVar7)" ( (binary_expression "(byte *)piVar10[2] < pbVar7" (cast_expression "(byte *)piVar10[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[2]" identifier [ number_literal ])) < identifier) )) (compound_statement "{\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }" { (expression_statement "pbVar12 = (byte *)piVar10[2] + 1;" (assignment_expression "pbVar12 = (byte *)piVar10[2] + 1" identifier = (binary_expression "(byte *)piVar10[2] + 1" (cast_expression "(byte *)piVar10[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[2]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "piVar10[2] = (int)pbVar12;" (assignment_expression "piVar10[2] = (int)pbVar12" (subscript_expression "piVar10[2]" identifier [ number_literal ]) = (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (labeled_statement "LAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }" statement_identifier : (if_statement "if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }" if (parenthesized_expression "(pbVar12 < pbVar7)" ( (binary_expression "pbVar12 < pbVar7" identifier < identifier) )) (compound_statement "{\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }" { (expression_statement "bVar1 = *pbVar12;" (assignment_expression "bVar1 = *pbVar12" identifier = (pointer_expression "*pbVar12" * identifier)) ;) (goto_statement "goto joined_r0x00332608;" goto statement_identifier ;) }))) (goto_statement "goto LAB_00332644;" goto statement_identifier ;) })) (expression_statement "iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);" (assignment_expression "iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10)" identifier = (call_expression "(**(code **)(*piVar10 + 0x28))(piVar10)" (parenthesized_expression "(**(code **)(*piVar10 + 0x28))" ( (pointer_expression "**(code **)(*piVar10 + 0x28)" * (pointer_expression "*(code **)(*piVar10 + 0x28)" * (cast_expression "(code **)(*piVar10 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar10 + 0x28)" ( (binary_expression "*piVar10 + 0x28" (pointer_expression "*piVar10" * identifier) + number_literal) ))))) )) (argument_list "(piVar10)" ( identifier )))) ;) (if_statement "if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }" if (parenthesized_expression "(iVar2 != -1)" ( (binary_expression "iVar2 != -1" identifier != number_literal) )) (compound_statement "{\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }" { (expression_statement "pbVar12 = (byte *)piVar10[2];" (assignment_expression "pbVar12 = (byte *)piVar10[2]" identifier = (cast_expression "(byte *)piVar10[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[2]" identifier [ number_literal ]))) ;) (expression_statement "pbVar7 = (byte *)piVar10[3];" (assignment_expression "pbVar7 = (byte *)piVar10[3]" identifier = (cast_expression "(byte *)piVar10[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[3]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_003325fc;" goto statement_identifier ;) })) (labeled_statement "LAB_003326f0:\n          uVar6 = 2;" statement_identifier : (expression_statement "uVar6 = 2;" (assignment_expression "uVar6 = 2" identifier = number_literal) ;)) (goto_statement "goto LAB_00332458;" goto statement_identifier ;) })) (expression_statement "iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;" (assignment_expression "iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)" identifier = (call_expression "(*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)" (parenthesized_expression "(*(code *)PTR_memchr_004c5ac8)" ( (pointer_expression "*(code *)PTR_memchr_004c5ac8" * (cast_expression "(code *)PTR_memchr_004c5ac8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)" ( identifier , (call_expression "CONCAT31(in_register_00000018,param_3)" identifier (argument_list "(in_register_00000018,param_3)" ( identifier , identifier ))) , identifier )))) ;) (if_statement "if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n          uVar6 = iVar2 - (int)pbVar12;\n        }" { (expression_statement "uVar6 = iVar2 - (int)pbVar12;" (assignment_expression "uVar6 = iVar2 - (int)pbVar12" identifier = (binary_expression "iVar2 - (int)pbVar12" identifier - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (if_statement "if (0x7fffffff - uVar9 < uVar6) {\n                    /* try { // try from 0033277c to 00332783 has its CatchHandler @ 003327e0 */\n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }" if (parenthesized_expression "(0x7fffffff - uVar9 < uVar6)" ( (binary_expression "0x7fffffff - uVar9 < uVar6" (binary_expression "0x7fffffff - uVar9" number_literal - identifier) < identifier) )) (compound_statement "{\n                    /* try { // try from 0033277c to 00332783 has its CatchHandler @ 003327e0 */\n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }" { comment (expression_statement "piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);" (assignment_expression "piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c)" identifier = (cast_expression "(istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c)" ( (type_descriptor "istream *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c)" (parenthesized_expression "(*(code *)PTR___throw_length_error_004c1e74)" ( (pointer_expression "*(code *)PTR___throw_length_error_004c1e74" * (cast_expression "(code *)PTR___throw_length_error_004c1e74" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c)" ( (binary_expression "PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c" identifier + number_literal) ))))) ;) (return_statement "return piVar5;" return identifier ;) })) comment (labeled_statement "string::_M_append(param_2,(char *)pbVar12,uVar6);" statement_identifier : (ERROR ":" :) (expression_statement "_M_append(param_2,(char *)pbVar12,uVar6);" (call_expression "_M_append(param_2,(char *)pbVar12,uVar6)" identifier (argument_list "(param_2,(char *)pbVar12,uVar6)" ( identifier , (cast_expression "(char *)pbVar12" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;)) (expression_statement "uVar11 = uVar11 + uVar6;" (assignment_expression "uVar11 = uVar11 + uVar6" identifier = (binary_expression "uVar11 + uVar6" identifier + identifier)) ;) (expression_statement "pbVar7 = (byte *)piVar10[3];" (assignment_expression "pbVar7 = (byte *)piVar10[3]" identifier = (cast_expression "(byte *)piVar10[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[3]" identifier [ number_literal ]))) ;) (expression_statement "pbVar12 = (byte *)(piVar10[2] + uVar6);" (assignment_expression "pbVar12 = (byte *)(piVar10[2] + uVar6)" identifier = (cast_expression "(byte *)(piVar10[2] + uVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar10[2] + uVar6)" ( (binary_expression "piVar10[2] + uVar6" (subscript_expression "piVar10[2]" identifier [ number_literal ]) + identifier) )))) ;) (expression_statement "piVar10[2] = (int)pbVar12;" (assignment_expression "piVar10[2] = (int)pbVar12" (subscript_expression "piVar10[2]" identifier [ number_literal ]) = (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }" if (parenthesized_expression "(pbVar12 < pbVar7)" ( (binary_expression "pbVar12 < pbVar7" identifier < identifier) )) (compound_statement "{\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }" { (expression_statement "bVar1 = *pbVar12;" (assignment_expression "bVar1 = *pbVar12" identifier = (pointer_expression "*pbVar12" * identifier)) ;) (labeled_statement "joined_r0x00332608:\n          uVar3 = (uint)bVar1;" statement_identifier : (expression_statement "uVar3 = (uint)bVar1;" (assignment_expression "uVar3 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;)) (if_statement "if (0x7ffffffe < uVar11) goto LAB_00332610;" if (parenthesized_expression "(0x7ffffffe < uVar11)" ( (binary_expression "0x7ffffffe < uVar11" number_literal < identifier) )) (goto_statement "goto LAB_00332610;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }" else (compound_statement "{\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }" { (labeled_statement "LAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);" statement_identifier : (expression_statement "uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);" (assignment_expression "uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10)" identifier = (call_expression "(**(code **)(*piVar10 + 0x24))(piVar10)" (parenthesized_expression "(**(code **)(*piVar10 + 0x24))" ( (pointer_expression "**(code **)(*piVar10 + 0x24)" * (pointer_expression "*(code **)(*piVar10 + 0x24)" * (cast_expression "(code **)(*piVar10 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar10 + 0x24)" ( (binary_expression "*piVar10 + 0x24" (pointer_expression "*piVar10" * identifier) + number_literal) ))))) )) (argument_list "(piVar10)" ( identifier )))) ;)) (if_statement "if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }" if (parenthesized_expression "(0x7ffffffe < uVar11)" ( (binary_expression "0x7ffffffe < uVar11" number_literal < identifier) )) (compound_statement "{\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }" { (expression_statement "uVar6 = 2;" (assignment_expression "uVar6 = 2" identifier = number_literal) ;) (if_statement "if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }" if (parenthesized_expression "(uVar3 == 0xffffffff)" ( (binary_expression "uVar3 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }" { (expression_statement "iVar2 = *(int *)param_1;" (assignment_expression "iVar2 = *(int *)param_1" identifier = (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (goto_statement "goto LAB_0033245c;" goto statement_identifier ;) })) (labeled_statement "LAB_00332610:\n            uVar6 = 4;" statement_identifier : (expression_statement "uVar6 = 4;" (assignment_expression "uVar6 = 4" identifier = number_literal) ;)) (if_statement "if (local_30 != uVar3) goto LAB_00332458;" if (parenthesized_expression "(local_30 != uVar3)" ( (binary_expression "local_30 != uVar3" identifier != identifier) )) (goto_statement "goto LAB_00332458;" goto statement_identifier ;)) (expression_statement "iVar2 = uVar11 + 1;" (assignment_expression "iVar2 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (if_statement "if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;" if (parenthesized_expression "((uint)piVar10[3] <= (uint)piVar10[2])" ( (binary_expression "(uint)piVar10[3] <= (uint)piVar10[2]" (cast_expression "(uint)piVar10[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar10[3]" identifier [ number_literal ])) <= (cast_expression "(uint)piVar10[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar10[2]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_003326b0;" goto statement_identifier ;)) (expression_statement "piVar10[2] = piVar10[2] + 1;" (assignment_expression "piVar10[2] = piVar10[2] + 1" (subscript_expression "piVar10[2]" identifier [ number_literal ]) = (binary_expression "piVar10[2] + 1" (subscript_expression "piVar10[2]" identifier [ number_literal ]) + number_literal)) ;) (if_statement "if (iVar2 != 0) {\n              return param_1;\n            }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n              return param_1;\n            }" { (return_statement "return param_1;" return identifier ;) })) (goto_statement "goto LAB_00332454;" goto statement_identifier ;) })) (if_statement "if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }" if (parenthesized_expression "(uVar3 == 0xffffffff)" ( (binary_expression "uVar3 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }" { (if_statement "if (uVar11 != 0) goto LAB_003326f0;" if (parenthesized_expression "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )) (goto_statement "goto LAB_003326f0;" goto statement_identifier ;)) (goto_statement "goto LAB_00332700;" goto statement_identifier ;) })) (expression_statement "pbVar7 = (byte *)piVar10[3];" (assignment_expression "pbVar7 = (byte *)piVar10[3]" identifier = (cast_expression "(byte *)piVar10[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[3]" identifier [ number_literal ]))) ;) }))) (expression_statement "pbVar12 = (byte *)piVar10[2];" (assignment_expression "pbVar12 = (byte *)piVar10[2]" identifier = (cast_expression "(byte *)piVar10[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[2]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "(uVar3 != local_30)" ( (binary_expression "uVar3 != local_30" identifier != identifier) )) ;) (expression_statement "iVar2 = uVar11 + 1;" (assignment_expression "iVar2 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (if_statement "if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }" if (parenthesized_expression "(pbVar7 <= pbVar12)" ( (binary_expression "pbVar7 <= pbVar12" identifier <= identifier) )) (compound_statement "{\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }" { (labeled_statement "LAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);" statement_identifier : (expression_statement "(**(code **)(*piVar10 + 0x28))(piVar10);" (call_expression "(**(code **)(*piVar10 + 0x28))(piVar10)" (parenthesized_expression "(**(code **)(*piVar10 + 0x28))" ( (pointer_expression "**(code **)(*piVar10 + 0x28)" * (pointer_expression "*(code **)(*piVar10 + 0x28)" * (cast_expression "(code **)(*piVar10 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar10 + 0x28)" ( (binary_expression "*piVar10 + 0x28" (pointer_expression "*piVar10" * identifier) + number_literal) ))))) )) (argument_list "(piVar10)" ( identifier ))) ;)) (expression_statement "uVar6 = 4;" (assignment_expression "uVar6 = 4" identifier = number_literal) ;) (if_statement "if (iVar2 != 0) {\n          return param_1;\n        }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n          return param_1;\n        }" { (return_statement "return param_1;" return identifier ;) })) (goto_statement "goto LAB_00332458;" goto statement_identifier ;) })) }))) (expression_statement "piVar10[2] = (int)(pbVar12 + 1);" (assignment_expression "piVar10[2] = (int)(pbVar12 + 1)" (subscript_expression "piVar10[2]" identifier [ number_literal ]) = (cast_expression "(int)(pbVar12 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar12 + 1)" ( (binary_expression "pbVar12 + 1" identifier + number_literal) )))) ;) }))) (return_statement "return param_1;" return identifier ;) }))
(translation_unit "istream * std::getline<char,std::char_traits<char>,std::allocator<char>>\n                    (istream *param_1,string *param_2,char param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  istream *piVar5;\n  uint uVar6;\n  byte *pbVar7;\n  string *psVar8;\n  undefined3 in_register_00000018;\n  uint uVar9;\n  int *piVar10;\n  uint uVar11;\n  byte *pbVar12;\n  char local_38 [8];\n  uint local_30;\n  string *local_2c;\n  \n  (*(code *)PTR_sentry_004c5178)(local_38,param_1,1);\n  if (local_38[0] == '\0') {\nLAB_00332454:\n    uVar6 = 4;\nLAB_00332458:\n    iVar2 = *(int *)param_1;\nLAB_0033245c:\n    (*(code *)PTR_clear_004c22b8)\n              (param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14));\n  }\n  else {\n    local_30 = (uint)(byte)param_3;\n    *(undefined4 *)(param_2 + 4) = 0;\n    **(undefined1 **)param_2 = 0;\n    piVar10 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78);\n    pbVar12 = (byte *)piVar10[2];\n    pbVar7 = (byte *)piVar10[3];\n    if (pbVar12 < pbVar7) {\n      uVar3 = (uint)*pbVar12;\n    }\n    else {\n                    \n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }\n    uVar11 = 0;\n    if ((byte)param_3 == uVar3) {\n      if (pbVar7 <= pbVar12) {\n                    \n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }\n    }\n    else {\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    \n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    \n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }\n    piVar10[2] = (int)(pbVar12 + 1);\n  }\n  return param_1;\n}\n\n" (ERROR "istream * std::getline<char," (binary_expression "istream * std::getline<char" (binary_expression "istream * std" identifier * identifier) (ERROR "::getline" : : identifier) < identifier) ,) (labeled_statement "std::char_traits<char>,std::allocator<char>>\n                    (istream *param_1,string *param_2,char param_3)" statement_identifier (ERROR "::char_traits<char>,std:" : : (binary_expression "char_traits<char>,std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) :) : (expression_statement "allocator<char>>\n                    (istream *param_1,string *param_2,char param_3)" (binary_expression "allocator<char>>\n                    (istream *param_1,string *param_2,char param_3)" identifier < (binary_expression "char>>\n                    (istream *param_1,string *param_2,char param_3)" identifier >> (parenthesized_expression "(istream *param_1,string *param_2,char param_3)" ( (comma_expression "istream *param_1,string *param_2,char param_3" (binary_expression "istream *param_1" identifier * identifier) , (comma_expression "string *param_2,char param_3" (binary_expression "string *param_2" identifier * identifier) , (ERROR "char" identifier) identifier)) )))) ;)) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  istream *piVar5;\n  uint uVar6;\n  byte *pbVar7;\n  string *psVar8;\n  undefined3 in_register_00000018;\n  uint uVar9;\n  int *piVar10;\n  uint uVar11;\n  byte *pbVar12;\n  char local_38 [8];\n  uint local_30;\n  string *local_2c;\n  \n  (*(code *)PTR_sentry_004c5178)(local_38,param_1,1);\n  if (local_38[0] == '\0') {\nLAB_00332454:\n    uVar6 = 4;\nLAB_00332458:\n    iVar2 = *(int *)param_1;\nLAB_0033245c:\n    (*(code *)PTR_clear_004c22b8)\n              (param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14));\n  }\n  else {\n    local_30 = (uint)(byte)param_3;\n    *(undefined4 *)(param_2 + 4) = 0;\n    **(undefined1 **)param_2 = 0;\n    piVar10 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78);\n    pbVar12 = (byte *)piVar10[2];\n    pbVar7 = (byte *)piVar10[3];\n    if (pbVar12 < pbVar7) {\n      uVar3 = (uint)*pbVar12;\n    }\n    else {\n                    \n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }\n    uVar11 = 0;\n    if ((byte)param_3 == uVar3) {\n      if (pbVar7 <= pbVar12) {\n                    \n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }\n    }\n    else {\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    \n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    \n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }\n    piVar10[2] = (int)(pbVar12 + 1);\n  }\n  return param_1;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "istream *piVar5;" type_identifier (pointer_declarator "*piVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "string *psVar8;" type_identifier (pointer_declarator "*psVar8" * identifier) ;) (declaration "undefined3 in_register_00000018;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "char local_38 [8];" primitive_type (array_declarator "local_38 [8]" identifier [ number_literal ]) ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "string *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (expression_statement "(*(code *)PTR_sentry_004c5178)(local_38,param_1,1);" (call_expression "(*(code *)PTR_sentry_004c5178)(local_38,param_1,1)" (parenthesized_expression "(*(code *)PTR_sentry_004c5178)" ( (pointer_expression "*(code *)PTR_sentry_004c5178" * (cast_expression "(code *)PTR_sentry_004c5178" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_38,param_1,1)" ( identifier , identifier , number_literal ))) ;) (if_statement "if (local_38[0] == '\0') {\nLAB_00332454:\n    uVar6 = 4;\nLAB_00332458:\n    iVar2 = *(int *)param_1;\nLAB_0033245c:\n    (*(code *)PTR_clear_004c22b8)\n              (param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14));\n  }\n  else {\n    local_30 = (uint)(byte)param_3;\n    *(undefined4 *)(param_2 + 4) = 0;\n    **(undefined1 **)param_2 = 0;\n    piVar10 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78);\n    pbVar12 = (byte *)piVar10[2];\n    pbVar7 = (byte *)piVar10[3];\n    if (pbVar12 < pbVar7) {\n      uVar3 = (uint)*pbVar12;\n    }\n    else {\n                    \n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }\n    uVar11 = 0;\n    if ((byte)param_3 == uVar3) {\n      if (pbVar7 <= pbVar12) {\n                    \n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }\n    }\n    else {\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    \n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    \n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }\n    piVar10[2] = (int)(pbVar12 + 1);\n  }" if (parenthesized_expression "(local_38[0] == '\0')" ( (binary_expression "local_38[0] == '\0'" (subscript_expression "local_38[0]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_00332454:\n    uVar6 = 4;\nLAB_00332458:\n    iVar2 = *(int *)param_1;\nLAB_0033245c:\n    (*(code *)PTR_clear_004c22b8)\n              (param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14));\n  }" { (labeled_statement "LAB_00332454:\n    uVar6 = 4;" statement_identifier : (expression_statement "uVar6 = 4;" (assignment_expression "uVar6 = 4" identifier = number_literal) ;)) (labeled_statement "LAB_00332458:\n    iVar2 = *(int *)param_1;" statement_identifier : (expression_statement "iVar2 = *(int *)param_1;" (assignment_expression "iVar2 = *(int *)param_1" identifier = (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;)) (labeled_statement "LAB_0033245c:\n    (*(code *)PTR_clear_004c22b8)\n              (param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14));" statement_identifier : (expression_statement "(*(code *)PTR_clear_004c22b8)\n              (param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14));" (call_expression "(*(code *)PTR_clear_004c22b8)\n              (param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14))" (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 "(param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14))" ( (binary_expression "param_1 + *(int *)(iVar2 + -0xc)" identifier + (pointer_expression "*(int *)(iVar2 + -0xc)" * (cast_expression "(int *)(iVar2 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + -0xc)" ( (binary_expression "iVar2 + -0xc" identifier + number_literal) ))))) , (binary_expression "uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14)" identifier | (pointer_expression "*(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14)" * (cast_expression "(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(int *)(iVar2 + -0xc) + 0x14)" ( (binary_expression "param_1 + *(int *)(iVar2 + -0xc) + 0x14" (binary_expression "param_1 + *(int *)(iVar2 + -0xc)" identifier + (pointer_expression "*(int *)(iVar2 + -0xc)" * (cast_expression "(int *)(iVar2 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + -0xc)" ( (binary_expression "iVar2 + -0xc" identifier + number_literal) ))))) + number_literal) ))))) ))) ;)) }) (else_clause "else {\n    local_30 = (uint)(byte)param_3;\n    *(undefined4 *)(param_2 + 4) = 0;\n    **(undefined1 **)param_2 = 0;\n    piVar10 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78);\n    pbVar12 = (byte *)piVar10[2];\n    pbVar7 = (byte *)piVar10[3];\n    if (pbVar12 < pbVar7) {\n      uVar3 = (uint)*pbVar12;\n    }\n    else {\n                    \n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }\n    uVar11 = 0;\n    if ((byte)param_3 == uVar3) {\n      if (pbVar7 <= pbVar12) {\n                    \n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }\n    }\n    else {\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    \n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    \n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }\n    piVar10[2] = (int)(pbVar12 + 1);\n  }" else (compound_statement "{\n    local_30 = (uint)(byte)param_3;\n    *(undefined4 *)(param_2 + 4) = 0;\n    **(undefined1 **)param_2 = 0;\n    piVar10 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78);\n    pbVar12 = (byte *)piVar10[2];\n    pbVar7 = (byte *)piVar10[3];\n    if (pbVar12 < pbVar7) {\n      uVar3 = (uint)*pbVar12;\n    }\n    else {\n                    \n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }\n    uVar11 = 0;\n    if ((byte)param_3 == uVar3) {\n      if (pbVar7 <= pbVar12) {\n                    \n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }\n    }\n    else {\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    \n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    \n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }\n    piVar10[2] = (int)(pbVar12 + 1);\n  }" { (expression_statement "local_30 = (uint)(byte)param_3;" (assignment_expression "local_30 = (uint)(byte)param_3" identifier = (cast_expression "(uint)(byte)param_3" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)param_3" ( (type_descriptor "byte" type_identifier) ) identifier))) ;) (expression_statement "*(undefined4 *)(param_2 + 4) = 0;" (assignment_expression "*(undefined4 *)(param_2 + 4) = 0" (pointer_expression "*(undefined4 *)(param_2 + 4)" * (cast_expression "(undefined4 *)(param_2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "**(undefined1 **)param_2 = 0;" (assignment_expression "**(undefined1 **)param_2 = 0" (pointer_expression "**(undefined1 **)param_2" * (pointer_expression "*(undefined1 **)param_2" * (cast_expression "(undefined1 **)param_2" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) = number_literal) ;) (expression_statement "piVar10 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78);" (assignment_expression "piVar10 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78)" identifier = (pointer_expression "*(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78)" * (cast_expression "(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78)" ( (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78" (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc)" identifier + (pointer_expression "*(int *)(*(int *)param_1 + -0xc)" * (cast_expression "(int *)(*(int *)param_1 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)param_1 + -0xc)" ( (binary_expression "*(int *)param_1 + -0xc" (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) + number_literal) ))))) ;) (expression_statement "pbVar12 = (byte *)piVar10[2];" (assignment_expression "pbVar12 = (byte *)piVar10[2]" identifier = (cast_expression "(byte *)piVar10[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[2]" identifier [ number_literal ]))) ;) (expression_statement "pbVar7 = (byte *)piVar10[3];" (assignment_expression "pbVar7 = (byte *)piVar10[3]" identifier = (cast_expression "(byte *)piVar10[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[3]" identifier [ number_literal ]))) ;) (if_statement "if (pbVar12 < pbVar7) {\n      uVar3 = (uint)*pbVar12;\n    }\n    else {\n                    \n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }" if (parenthesized_expression "(pbVar12 < pbVar7)" ( (binary_expression "pbVar12 < pbVar7" identifier < identifier) )) (compound_statement "{\n      uVar3 = (uint)*pbVar12;\n    }" { (expression_statement "uVar3 = (uint)*pbVar12;" (assignment_expression "uVar3 = (uint)*pbVar12" identifier = (binary_expression "(uint)*pbVar12" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) }) (else_clause "else {\n                    \n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }" else (compound_statement "{\n                    \n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }" { (expression_statement "uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);" (assignment_expression "uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10)" identifier = (call_expression "(**(code **)(*piVar10 + 0x24))(piVar10)" (parenthesized_expression "(**(code **)(*piVar10 + 0x24))" ( (pointer_expression "**(code **)(*piVar10 + 0x24)" * (pointer_expression "*(code **)(*piVar10 + 0x24)" * (cast_expression "(code **)(*piVar10 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar10 + 0x24)" ( (binary_expression "*piVar10 + 0x24" (pointer_expression "*piVar10" * identifier) + number_literal) ))))) )) (argument_list "(piVar10)" ( identifier )))) ;) (if_statement "if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }" if (parenthesized_expression "(uVar3 == 0xffffffff)" ( (binary_expression "uVar3 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }" { (labeled_statement "LAB_00332700:\n        uVar6 = 6;" statement_identifier : (expression_statement "uVar6 = 6;" (assignment_expression "uVar6 = 6" identifier = number_literal) ;)) (goto_statement "goto LAB_00332458;" goto statement_identifier ;) })) (expression_statement "pbVar7 = (byte *)piVar10[3];" (assignment_expression "pbVar7 = (byte *)piVar10[3]" identifier = (cast_expression "(byte *)piVar10[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[3]" identifier [ number_literal ]))) ;) (expression_statement "pbVar12 = (byte *)piVar10[2];" (assignment_expression "pbVar12 = (byte *)piVar10[2]" identifier = (cast_expression "(byte *)piVar10[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[2]" identifier [ number_literal ]))) ;) }))) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (if_statement "if ((byte)param_3 == uVar3) {\n      if (pbVar7 <= pbVar12) {\n                    \n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }\n    }\n    else {\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    \n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    \n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }" if (parenthesized_expression "((byte)param_3 == uVar3)" ( (binary_expression "(byte)param_3 == uVar3" (cast_expression "(byte)param_3" ( (type_descriptor "byte" type_identifier) ) identifier) == identifier) )) (compound_statement "{\n      if (pbVar7 <= pbVar12) {\n                    \n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }\n    }" { (if_statement "if (pbVar7 <= pbVar12) {\n                    \n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }" if (parenthesized_expression "(pbVar7 <= pbVar12)" ( (binary_expression "pbVar7 <= pbVar12" identifier <= identifier) )) (compound_statement "{\n                    \n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }" { (expression_statement "(**(code **)(*piVar10 + 0x28))(piVar10);" (call_expression "(**(code **)(*piVar10 + 0x28))(piVar10)" (parenthesized_expression "(**(code **)(*piVar10 + 0x28))" ( (pointer_expression "**(code **)(*piVar10 + 0x28)" * (pointer_expression "*(code **)(*piVar10 + 0x28)" * (cast_expression "(code **)(*piVar10 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar10 + 0x28)" ( (binary_expression "*piVar10 + 0x28" (pointer_expression "*piVar10" * identifier) + number_literal) ))))) )) (argument_list "(piVar10)" ( identifier ))) ;) (return_statement "return param_1;" return identifier ;) })) }) (else_clause "else {\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    \n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    \n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }" else (compound_statement "{\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    \n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    \n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }" { (expression_statement "local_2c = param_2 + 8;" (assignment_expression "local_2c = param_2 + 8" identifier = (binary_expression "param_2 + 8" identifier + number_literal)) ;) (do_statement "do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    \n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    \n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);" do (compound_statement "{\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    \n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    \n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      }" { (expression_statement "uVar9 = *(uint *)(param_2 + 4);" (assignment_expression "uVar9 = *(uint *)(param_2 + 4)" identifier = (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = 0x7fffffff - uVar11;" (assignment_expression "uVar6 = 0x7fffffff - uVar11" identifier = (binary_expression "0x7fffffff - uVar11" number_literal - identifier)) ;) (if_statement "if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }" if (parenthesized_expression "((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11))" ( (binary_expression "(int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)" (binary_expression "(int)pbVar7 - (int)pbVar12" (cast_expression "(int)pbVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) <= (cast_expression "(int)(0x7fffffff - uVar11)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(0x7fffffff - uVar11)" ( (binary_expression "0x7fffffff - uVar11" number_literal - identifier) )))) )) (compound_statement "{\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }" { (expression_statement "uVar6 = (int)pbVar7 - (int)pbVar12;" (assignment_expression "uVar6 = (int)pbVar7 - (int)pbVar12" identifier = (binary_expression "(int)pbVar7 - (int)pbVar12" (cast_expression "(int)pbVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (if_statement "if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }" if (parenthesized_expression "((int)uVar6 < 2)" ( (binary_expression "(int)uVar6 < 2" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }" { (expression_statement "psVar8 = *(string **)param_2;" (assignment_expression "psVar8 = *(string **)param_2" identifier = (pointer_expression "*(string **)param_2" * (cast_expression "(string **)param_2" ( (type_descriptor "string **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "uVar6 = uVar9 + 1;" (assignment_expression "uVar6 = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;) (if_statement "if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }" if (parenthesized_expression "(psVar8 == local_2c)" ( (binary_expression "psVar8 == local_2c" identifier == identifier) )) (compound_statement "{\n            uVar4 = 0xf;\n          }" { (expression_statement "uVar4 = 0xf;" (assignment_expression "uVar4 = 0xf" identifier = number_literal) ;) }) (else_clause "else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }" else (compound_statement "{\n            uVar4 = *(uint *)(param_2 + 8);\n          }" { (expression_statement "uVar4 = *(uint *)(param_2 + 8);" (assignment_expression "uVar4 = *(uint *)(param_2 + 8)" identifier = (pointer_expression "*(uint *)(param_2 + 8)" * (cast_expression "(uint *)(param_2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) }))) (if_statement "if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }" if (parenthesized_expression "(uVar4 < uVar6)" ( (binary_expression "uVar4 < uVar6" identifier < identifier) )) (compound_statement "{\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }" { (labeled_statement "string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_mutate(param_2,uVar9,0,(char *)0x0,1);" (call_expression "_M_mutate(param_2,uVar9,0,(char *)0x0,1)" identifier (argument_list "(param_2,uVar9,0,(char *)0x0,1)" ( identifier , identifier , number_literal , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))) ;)) (expression_statement "psVar8 = *(string **)param_2;" (assignment_expression "psVar8 = *(string **)param_2" identifier = (pointer_expression "*(string **)param_2" * (cast_expression "(string **)param_2" ( (type_descriptor "string **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) })) (expression_statement "psVar8[uVar9] = SUB41(uVar3,0);" (assignment_expression "psVar8[uVar9] = SUB41(uVar3,0)" (subscript_expression "psVar8[uVar9]" identifier [ identifier ]) = (call_expression "SUB41(uVar3,0)" identifier (argument_list "(uVar3,0)" ( identifier , number_literal )))) ;) (expression_statement "*(uint *)(param_2 + 4) = uVar6;" (assignment_expression "*(uint *)(param_2 + 4) = uVar6" (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 *)(*(int *)param_2 + uVar6) = 0;" (assignment_expression "*(undefined1 *)(*(int *)param_2 + uVar6) = 0" (pointer_expression "*(undefined1 *)(*(int *)param_2 + uVar6)" * (cast_expression "(undefined1 *)(*(int *)param_2 + uVar6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)param_2 + uVar6)" ( (binary_expression "*(int *)param_2 + uVar6" (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + identifier) )))) = number_literal) ;) (expression_statement "pbVar7 = (byte *)piVar10[3];" (assignment_expression "pbVar7 = (byte *)piVar10[3]" identifier = (cast_expression "(byte *)piVar10[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (if_statement "if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }" if (parenthesized_expression "((byte *)piVar10[2] < pbVar7)" ( (binary_expression "(byte *)piVar10[2] < pbVar7" (cast_expression "(byte *)piVar10[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[2]" identifier [ number_literal ])) < identifier) )) (compound_statement "{\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }" { (expression_statement "pbVar12 = (byte *)piVar10[2] + 1;" (assignment_expression "pbVar12 = (byte *)piVar10[2] + 1" identifier = (binary_expression "(byte *)piVar10[2] + 1" (cast_expression "(byte *)piVar10[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[2]" identifier [ number_literal ])) + number_literal)) ;) (expression_statement "piVar10[2] = (int)pbVar12;" (assignment_expression "piVar10[2] = (int)pbVar12" (subscript_expression "piVar10[2]" identifier [ number_literal ]) = (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (labeled_statement "LAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }" statement_identifier : (if_statement "if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }" if (parenthesized_expression "(pbVar12 < pbVar7)" ( (binary_expression "pbVar12 < pbVar7" identifier < identifier) )) (compound_statement "{\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }" { (expression_statement "bVar1 = *pbVar12;" (assignment_expression "bVar1 = *pbVar12" identifier = (pointer_expression "*pbVar12" * identifier)) ;) (goto_statement "goto joined_r0x00332608;" goto statement_identifier ;) }))) (goto_statement "goto LAB_00332644;" goto statement_identifier ;) })) (expression_statement "iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);" (assignment_expression "iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10)" identifier = (call_expression "(**(code **)(*piVar10 + 0x28))(piVar10)" (parenthesized_expression "(**(code **)(*piVar10 + 0x28))" ( (pointer_expression "**(code **)(*piVar10 + 0x28)" * (pointer_expression "*(code **)(*piVar10 + 0x28)" * (cast_expression "(code **)(*piVar10 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar10 + 0x28)" ( (binary_expression "*piVar10 + 0x28" (pointer_expression "*piVar10" * identifier) + number_literal) ))))) )) (argument_list "(piVar10)" ( identifier )))) ;) (if_statement "if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }" if (parenthesized_expression "(iVar2 != -1)" ( (binary_expression "iVar2 != -1" identifier != number_literal) )) (compound_statement "{\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }" { (expression_statement "pbVar12 = (byte *)piVar10[2];" (assignment_expression "pbVar12 = (byte *)piVar10[2]" identifier = (cast_expression "(byte *)piVar10[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[2]" identifier [ number_literal ]))) ;) (expression_statement "pbVar7 = (byte *)piVar10[3];" (assignment_expression "pbVar7 = (byte *)piVar10[3]" identifier = (cast_expression "(byte *)piVar10[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[3]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_003325fc;" goto statement_identifier ;) })) (labeled_statement "LAB_003326f0:\n          uVar6 = 2;" statement_identifier : (expression_statement "uVar6 = 2;" (assignment_expression "uVar6 = 2" identifier = number_literal) ;)) (goto_statement "goto LAB_00332458;" goto statement_identifier ;) })) (expression_statement "iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;" (assignment_expression "iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)" identifier = (call_expression "(*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)" (parenthesized_expression "(*(code *)PTR_memchr_004c5ac8)" ( (pointer_expression "*(code *)PTR_memchr_004c5ac8" * (cast_expression "(code *)PTR_memchr_004c5ac8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)" ( identifier , (call_expression "CONCAT31(in_register_00000018,param_3)" identifier (argument_list "(in_register_00000018,param_3)" ( identifier , identifier ))) , identifier )))) ;) (if_statement "if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n          uVar6 = iVar2 - (int)pbVar12;\n        }" { (expression_statement "uVar6 = iVar2 - (int)pbVar12;" (assignment_expression "uVar6 = iVar2 - (int)pbVar12" identifier = (binary_expression "iVar2 - (int)pbVar12" identifier - (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (if_statement "if (0x7fffffff - uVar9 < uVar6) {\n                    \n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }" if (parenthesized_expression "(0x7fffffff - uVar9 < uVar6)" ( (binary_expression "0x7fffffff - uVar9 < uVar6" (binary_expression "0x7fffffff - uVar9" number_literal - identifier) < identifier) )) (compound_statement "{\n                    \n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }" { (expression_statement "piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);" (assignment_expression "piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c)" identifier = (cast_expression "(istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c)" ( (type_descriptor "istream *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c)" (parenthesized_expression "(*(code *)PTR___throw_length_error_004c1e74)" ( (pointer_expression "*(code *)PTR___throw_length_error_004c1e74" * (cast_expression "(code *)PTR___throw_length_error_004c1e74" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c)" ( (binary_expression "PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c" identifier + number_literal) ))))) ;) (return_statement "return piVar5;" return identifier ;) })) (labeled_statement "string::_M_append(param_2,(char *)pbVar12,uVar6);" statement_identifier : (ERROR ":" :) (expression_statement "_M_append(param_2,(char *)pbVar12,uVar6);" (call_expression "_M_append(param_2,(char *)pbVar12,uVar6)" identifier (argument_list "(param_2,(char *)pbVar12,uVar6)" ( identifier , (cast_expression "(char *)pbVar12" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;)) (expression_statement "uVar11 = uVar11 + uVar6;" (assignment_expression "uVar11 = uVar11 + uVar6" identifier = (binary_expression "uVar11 + uVar6" identifier + identifier)) ;) (expression_statement "pbVar7 = (byte *)piVar10[3];" (assignment_expression "pbVar7 = (byte *)piVar10[3]" identifier = (cast_expression "(byte *)piVar10[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[3]" identifier [ number_literal ]))) ;) (expression_statement "pbVar12 = (byte *)(piVar10[2] + uVar6);" (assignment_expression "pbVar12 = (byte *)(piVar10[2] + uVar6)" identifier = (cast_expression "(byte *)(piVar10[2] + uVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar10[2] + uVar6)" ( (binary_expression "piVar10[2] + uVar6" (subscript_expression "piVar10[2]" identifier [ number_literal ]) + identifier) )))) ;) (expression_statement "piVar10[2] = (int)pbVar12;" (assignment_expression "piVar10[2] = (int)pbVar12" (subscript_expression "piVar10[2]" identifier [ number_literal ]) = (cast_expression "(int)pbVar12" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }" if (parenthesized_expression "(pbVar12 < pbVar7)" ( (binary_expression "pbVar12 < pbVar7" identifier < identifier) )) (compound_statement "{\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }" { (expression_statement "bVar1 = *pbVar12;" (assignment_expression "bVar1 = *pbVar12" identifier = (pointer_expression "*pbVar12" * identifier)) ;) (labeled_statement "joined_r0x00332608:\n          uVar3 = (uint)bVar1;" statement_identifier : (expression_statement "uVar3 = (uint)bVar1;" (assignment_expression "uVar3 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;)) (if_statement "if (0x7ffffffe < uVar11) goto LAB_00332610;" if (parenthesized_expression "(0x7ffffffe < uVar11)" ( (binary_expression "0x7ffffffe < uVar11" number_literal < identifier) )) (goto_statement "goto LAB_00332610;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }" else (compound_statement "{\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }" { (labeled_statement "LAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);" statement_identifier : (expression_statement "uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);" (assignment_expression "uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10)" identifier = (call_expression "(**(code **)(*piVar10 + 0x24))(piVar10)" (parenthesized_expression "(**(code **)(*piVar10 + 0x24))" ( (pointer_expression "**(code **)(*piVar10 + 0x24)" * (pointer_expression "*(code **)(*piVar10 + 0x24)" * (cast_expression "(code **)(*piVar10 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar10 + 0x24)" ( (binary_expression "*piVar10 + 0x24" (pointer_expression "*piVar10" * identifier) + number_literal) ))))) )) (argument_list "(piVar10)" ( identifier )))) ;)) (if_statement "if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }" if (parenthesized_expression "(0x7ffffffe < uVar11)" ( (binary_expression "0x7ffffffe < uVar11" number_literal < identifier) )) (compound_statement "{\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }" { (expression_statement "uVar6 = 2;" (assignment_expression "uVar6 = 2" identifier = number_literal) ;) (if_statement "if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }" if (parenthesized_expression "(uVar3 == 0xffffffff)" ( (binary_expression "uVar3 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }" { (expression_statement "iVar2 = *(int *)param_1;" (assignment_expression "iVar2 = *(int *)param_1" identifier = (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (goto_statement "goto LAB_0033245c;" goto statement_identifier ;) })) (labeled_statement "LAB_00332610:\n            uVar6 = 4;" statement_identifier : (expression_statement "uVar6 = 4;" (assignment_expression "uVar6 = 4" identifier = number_literal) ;)) (if_statement "if (local_30 != uVar3) goto LAB_00332458;" if (parenthesized_expression "(local_30 != uVar3)" ( (binary_expression "local_30 != uVar3" identifier != identifier) )) (goto_statement "goto LAB_00332458;" goto statement_identifier ;)) (expression_statement "iVar2 = uVar11 + 1;" (assignment_expression "iVar2 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (if_statement "if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;" if (parenthesized_expression "((uint)piVar10[3] <= (uint)piVar10[2])" ( (binary_expression "(uint)piVar10[3] <= (uint)piVar10[2]" (cast_expression "(uint)piVar10[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar10[3]" identifier [ number_literal ])) <= (cast_expression "(uint)piVar10[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar10[2]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_003326b0;" goto statement_identifier ;)) (expression_statement "piVar10[2] = piVar10[2] + 1;" (assignment_expression "piVar10[2] = piVar10[2] + 1" (subscript_expression "piVar10[2]" identifier [ number_literal ]) = (binary_expression "piVar10[2] + 1" (subscript_expression "piVar10[2]" identifier [ number_literal ]) + number_literal)) ;) (if_statement "if (iVar2 != 0) {\n              return param_1;\n            }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n              return param_1;\n            }" { (return_statement "return param_1;" return identifier ;) })) (goto_statement "goto LAB_00332454;" goto statement_identifier ;) })) (if_statement "if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }" if (parenthesized_expression "(uVar3 == 0xffffffff)" ( (binary_expression "uVar3 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }" { (if_statement "if (uVar11 != 0) goto LAB_003326f0;" if (parenthesized_expression "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )) (goto_statement "goto LAB_003326f0;" goto statement_identifier ;)) (goto_statement "goto LAB_00332700;" goto statement_identifier ;) })) (expression_statement "pbVar7 = (byte *)piVar10[3];" (assignment_expression "pbVar7 = (byte *)piVar10[3]" identifier = (cast_expression "(byte *)piVar10[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[3]" identifier [ number_literal ]))) ;) }))) (expression_statement "pbVar12 = (byte *)piVar10[2];" (assignment_expression "pbVar12 = (byte *)piVar10[2]" identifier = (cast_expression "(byte *)piVar10[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[2]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "(uVar3 != local_30)" ( (binary_expression "uVar3 != local_30" identifier != identifier) )) ;) (expression_statement "iVar2 = uVar11 + 1;" (assignment_expression "iVar2 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (if_statement "if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }" if (parenthesized_expression "(pbVar7 <= pbVar12)" ( (binary_expression "pbVar7 <= pbVar12" identifier <= identifier) )) (compound_statement "{\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }" { (labeled_statement "LAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);" statement_identifier : (expression_statement "(**(code **)(*piVar10 + 0x28))(piVar10);" (call_expression "(**(code **)(*piVar10 + 0x28))(piVar10)" (parenthesized_expression "(**(code **)(*piVar10 + 0x28))" ( (pointer_expression "**(code **)(*piVar10 + 0x28)" * (pointer_expression "*(code **)(*piVar10 + 0x28)" * (cast_expression "(code **)(*piVar10 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar10 + 0x28)" ( (binary_expression "*piVar10 + 0x28" (pointer_expression "*piVar10" * identifier) + number_literal) ))))) )) (argument_list "(piVar10)" ( identifier ))) ;)) (expression_statement "uVar6 = 4;" (assignment_expression "uVar6 = 4" identifier = number_literal) ;) (if_statement "if (iVar2 != 0) {\n          return param_1;\n        }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n          return param_1;\n        }" { (return_statement "return param_1;" return identifier ;) })) (goto_statement "goto LAB_00332458;" goto statement_identifier ;) })) }))) (expression_statement "piVar10[2] = (int)(pbVar12 + 1);" (assignment_expression "piVar10[2] = (int)(pbVar12 + 1)" (subscript_expression "piVar10[2]" identifier [ number_literal ]) = (cast_expression "(int)(pbVar12 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar12 + 1)" ( (binary_expression "pbVar12 + 1" identifier + number_literal) )))) ;) }))) (return_statement "return param_1;" return identifier ;) }))
(translation_unit (ERROR (binary_expression (binary_expression IDENT * IDENT) (ERROR : : IDENT) < IDENT) ,) (labeled_statement statement_identifier (ERROR : : (binary_expression (binary_expression IDENT < IDENT) > (ERROR ,) IDENT) :) : (expression_statement (binary_expression IDENT < (binary_expression IDENT >> (parenthesized_expression ( (comma_expression (binary_expression IDENT * IDENT) , (comma_expression (binary_expression IDENT * IDENT) , (ERROR IDENT) IDENT)) )))) ;)) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE 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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;)) (labeled_statement statement_identifier : (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 IDENT + LIT) ))))) , (binary_expression IDENT | (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 IDENT + LIT) ))))) + LIT) ))))) ))) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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 (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) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (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 ))) ;) (return_statement return IDENT ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) <= (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression LIT - IDENT) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) , LIT ))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (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)) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (goto_statement goto statement_identifier ;) }))) (goto_statement goto statement_identifier ;) })) (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 )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (call_expression IDENT (argument_list ( IDENT , IDENT ))) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression LIT - IDENT) < IDENT) )) (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 ( (binary_expression IDENT + LIT) ))))) ;) (return_statement return IDENT ;) })) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (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 )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return IDENT ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (labeled_statement statement_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 ))) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return IDENT ;) })) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) }))) (return_statement return IDENT ;) }))
(ERROR "istream * std::getline<char," (binary_expression "istream * std::getline<char" (binary_expression "istream * std" (identifier "istream") (* "*") (identifier "std")) (ERROR "::getline" (: ":") (: ":") (identifier "getline")) (< "<") (identifier "char")) (, ",")) (labeled_statement "std::char_traits<char>,std::allocator<char>>\n                    (istream *param_1,string *param_2,char param_3)" (statement_identifier "std") (ERROR "::char_traits<char>,std:" (: ":") (: ":") (binary_expression "char_traits<char>,std" (binary_expression "char_traits<char" (identifier "char_traits") (< "<") (identifier "char")) (> ">") (ERROR "," (, ",")) (identifier "std")) (: ":")) (: ":") (expression_statement "allocator<char>>\n                    (istream *param_1,string *param_2,char param_3)" (binary_expression "allocator<char>>\n                    (istream *param_1,string *param_2,char param_3)" (identifier "allocator") (< "<") (binary_expression "char>>\n                    (istream *param_1,string *param_2,char param_3)" (identifier "char") (>> ">>") (parenthesized_expression "(istream *param_1,string *param_2,char param_3)" (( "(") (comma_expression "istream *param_1,string *param_2,char param_3" (binary_expression "istream *param_1" (identifier "istream") (* "*") (identifier "param_1")) (, ",") (comma_expression "string *param_2,char param_3" (binary_expression "string *param_2" (identifier "string") (* "*") (identifier "param_2")) (, ",") (ERROR "char" (identifier "char")) (identifier "param_3"))) () ")")))) (; ""))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  istream *piVar5;\n  uint uVar6;\n  byte *pbVar7;\n  string *psVar8;\n  undefined3 in_register_00000018;\n  uint uVar9;\n  int *piVar10;\n  uint uVar11;\n  byte *pbVar12;\n  char local_38 [8];\n  uint local_30;\n  string *local_2c;\n  \n  (*(code *)PTR_sentry_004c5178)(local_38,param_1,1);\n  if (local_38[0] == '\0') {\nLAB_00332454:\n    uVar6 = 4;\nLAB_00332458:\n    iVar2 = *(int *)param_1;\nLAB_0033245c:\n    (*(code *)PTR_clear_004c22b8)\n              (param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14));\n  }\n  else {\n    local_30 = (uint)(byte)param_3;\n    *(undefined4 *)(param_2 + 4) = 0;\n    **(undefined1 **)param_2 = 0;\n    piVar10 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78);\n    pbVar12 = (byte *)piVar10[2];\n    pbVar7 = (byte *)piVar10[3];\n    if (pbVar12 < pbVar7) {\n      uVar3 = (uint)*pbVar12;\n    }\n    else {\n                    \n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }\n    uVar11 = 0;\n    if ((byte)param_3 == uVar3) {\n      if (pbVar7 <= pbVar12) {\n                    \n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }\n    }\n    else {\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    \n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    \n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }\n    piVar10[2] = (int)(pbVar12 + 1);\n  }\n  return param_1;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "istream *piVar5;" (type_identifier "istream") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "byte *pbVar7;" (type_identifier "byte") (pointer_declarator "*pbVar7" (* "*") (identifier "pbVar7")) (; ";")) (declaration "string *psVar8;" (type_identifier "string") (pointer_declarator "*psVar8" (* "*") (identifier "psVar8")) (; ";")) (declaration "undefined3 in_register_00000018;" (type_identifier "undefined3") (identifier "in_register_00000018") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "int *piVar10;" (primitive_type "int") (pointer_declarator "*piVar10" (* "*") (identifier "piVar10")) (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "byte *pbVar12;" (type_identifier "byte") (pointer_declarator "*pbVar12" (* "*") (identifier "pbVar12")) (; ";")) (declaration "char local_38 [8];" (primitive_type "char") (array_declarator "local_38 [8]" (identifier "local_38") ([ "[") (number_literal "8") (] "]")) (; ";")) (declaration "uint local_30;" (type_identifier "uint") (identifier "local_30") (; ";")) (declaration "string *local_2c;" (type_identifier "string") (pointer_declarator "*local_2c" (* "*") (identifier "local_2c")) (; ";")) (expression_statement "(*(code *)PTR_sentry_004c5178)(local_38,param_1,1);" (call_expression "(*(code *)PTR_sentry_004c5178)(local_38,param_1,1)" (parenthesized_expression "(*(code *)PTR_sentry_004c5178)" (( "(") (pointer_expression "*(code *)PTR_sentry_004c5178" (* "*") (cast_expression "(code *)PTR_sentry_004c5178" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_sentry_004c5178"))) () ")")) (argument_list "(local_38,param_1,1)" (( "(") (identifier "local_38") (, ",") (identifier "param_1") (, ",") (number_literal "1") () ")"))) (; ";")) (if_statement "if (local_38[0] == '\0') {\nLAB_00332454:\n    uVar6 = 4;\nLAB_00332458:\n    iVar2 = *(int *)param_1;\nLAB_0033245c:\n    (*(code *)PTR_clear_004c22b8)\n              (param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14));\n  }\n  else {\n    local_30 = (uint)(byte)param_3;\n    *(undefined4 *)(param_2 + 4) = 0;\n    **(undefined1 **)param_2 = 0;\n    piVar10 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78);\n    pbVar12 = (byte *)piVar10[2];\n    pbVar7 = (byte *)piVar10[3];\n    if (pbVar12 < pbVar7) {\n      uVar3 = (uint)*pbVar12;\n    }\n    else {\n                    \n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }\n    uVar11 = 0;\n    if ((byte)param_3 == uVar3) {\n      if (pbVar7 <= pbVar12) {\n                    \n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }\n    }\n    else {\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    \n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    \n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }\n    piVar10[2] = (int)(pbVar12 + 1);\n  }" (if "if") (parenthesized_expression "(local_38[0] == '\0')" (( "(") (binary_expression "local_38[0] == '\0'" (subscript_expression "local_38[0]" (identifier "local_38") ([ "[") (number_literal "0") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\nLAB_00332454:\n    uVar6 = 4;\nLAB_00332458:\n    iVar2 = *(int *)param_1;\nLAB_0033245c:\n    (*(code *)PTR_clear_004c22b8)\n              (param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14));\n  }" ({ "{") (labeled_statement "LAB_00332454:\n    uVar6 = 4;" (statement_identifier "LAB_00332454") (: ":") (expression_statement "uVar6 = 4;" (assignment_expression "uVar6 = 4" (identifier "uVar6") (= "=") (number_literal "4")) (; ";"))) (labeled_statement "LAB_00332458:\n    iVar2 = *(int *)param_1;" (statement_identifier "LAB_00332458") (: ":") (expression_statement "iVar2 = *(int *)param_1;" (assignment_expression "iVar2 = *(int *)param_1" (identifier "iVar2") (= "=") (pointer_expression "*(int *)param_1" (* "*") (cast_expression "(int *)param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1")))) (; ";"))) (labeled_statement "LAB_0033245c:\n    (*(code *)PTR_clear_004c22b8)\n              (param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14));" (statement_identifier "LAB_0033245c") (: ":") (expression_statement "(*(code *)PTR_clear_004c22b8)\n              (param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14));" (call_expression "(*(code *)PTR_clear_004c22b8)\n              (param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14))" (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 "(param_1 + *(int *)(iVar2 + -0xc),\n               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14))" (( "(") (binary_expression "param_1 + *(int *)(iVar2 + -0xc)" (identifier "param_1") (+ "+") (pointer_expression "*(int *)(iVar2 + -0xc)" (* "*") (cast_expression "(int *)(iVar2 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + -0xc)" (( "(") (binary_expression "iVar2 + -0xc" (identifier "iVar2") (+ "+") (number_literal "-0xc")) () ")"))))) (, ",") (binary_expression "uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14)" (identifier "uVar6") (| "|") (pointer_expression "*(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14)" (* "*") (cast_expression "(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + *(int *)(iVar2 + -0xc) + 0x14)" (( "(") (binary_expression "param_1 + *(int *)(iVar2 + -0xc) + 0x14" (binary_expression "param_1 + *(int *)(iVar2 + -0xc)" (identifier "param_1") (+ "+") (pointer_expression "*(int *)(iVar2 + -0xc)" (* "*") (cast_expression "(int *)(iVar2 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + -0xc)" (( "(") (binary_expression "iVar2 + -0xc" (identifier "iVar2") (+ "+") (number_literal "-0xc")) () ")"))))) (+ "+") (number_literal "0x14")) () ")"))))) () ")"))) (; ";"))) (} "}")) (else_clause "else {\n    local_30 = (uint)(byte)param_3;\n    *(undefined4 *)(param_2 + 4) = 0;\n    **(undefined1 **)param_2 = 0;\n    piVar10 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78);\n    pbVar12 = (byte *)piVar10[2];\n    pbVar7 = (byte *)piVar10[3];\n    if (pbVar12 < pbVar7) {\n      uVar3 = (uint)*pbVar12;\n    }\n    else {\n                    \n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }\n    uVar11 = 0;\n    if ((byte)param_3 == uVar3) {\n      if (pbVar7 <= pbVar12) {\n                    \n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }\n    }\n    else {\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    \n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    \n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }\n    piVar10[2] = (int)(pbVar12 + 1);\n  }" (else "else") (compound_statement "{\n    local_30 = (uint)(byte)param_3;\n    *(undefined4 *)(param_2 + 4) = 0;\n    **(undefined1 **)param_2 = 0;\n    piVar10 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78);\n    pbVar12 = (byte *)piVar10[2];\n    pbVar7 = (byte *)piVar10[3];\n    if (pbVar12 < pbVar7) {\n      uVar3 = (uint)*pbVar12;\n    }\n    else {\n                    \n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }\n    uVar11 = 0;\n    if ((byte)param_3 == uVar3) {\n      if (pbVar7 <= pbVar12) {\n                    \n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }\n    }\n    else {\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    \n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    \n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }\n    piVar10[2] = (int)(pbVar12 + 1);\n  }" ({ "{") (expression_statement "local_30 = (uint)(byte)param_3;" (assignment_expression "local_30 = (uint)(byte)param_3" (identifier "local_30") (= "=") (cast_expression "(uint)(byte)param_3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(byte)param_3" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "param_3")))) (; ";")) (expression_statement "*(undefined4 *)(param_2 + 4) = 0;" (assignment_expression "*(undefined4 *)(param_2 + 4) = 0" (pointer_expression "*(undefined4 *)(param_2 + 4)" (* "*") (cast_expression "(undefined4 *)(param_2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "**(undefined1 **)param_2 = 0;" (assignment_expression "**(undefined1 **)param_2 = 0" (pointer_expression "**(undefined1 **)param_2" (* "*") (pointer_expression "*(undefined1 **)param_2" (* "*") (cast_expression "(undefined1 **)param_2" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "param_2")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar10 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78);" (assignment_expression "piVar10 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78)" (identifier "piVar10") (= "=") (pointer_expression "*(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78)" (* "*") (cast_expression "(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78)" (( "(") (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78" (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc)" (identifier "param_1") (+ "+") (pointer_expression "*(int *)(*(int *)param_1 + -0xc)" (* "*") (cast_expression "(int *)(*(int *)param_1 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)param_1 + -0xc)" (( "(") (binary_expression "*(int *)param_1 + -0xc" (pointer_expression "*(int *)param_1" (* "*") (cast_expression "(int *)param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1"))) (+ "+") (number_literal "-0xc")) () ")"))))) (+ "+") (number_literal "0x78")) () ")"))))) (; ";")) (expression_statement "pbVar12 = (byte *)piVar10[2];" (assignment_expression "pbVar12 = (byte *)piVar10[2]" (identifier "pbVar12") (= "=") (cast_expression "(byte *)piVar10[2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar10[2]" (identifier "piVar10") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "pbVar7 = (byte *)piVar10[3];" (assignment_expression "pbVar7 = (byte *)piVar10[3]" (identifier "pbVar7") (= "=") (cast_expression "(byte *)piVar10[3]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar10[3]" (identifier "piVar10") ([ "[") (number_literal "3") (] "]")))) (; ";")) (if_statement "if (pbVar12 < pbVar7) {\n      uVar3 = (uint)*pbVar12;\n    }\n    else {\n                    \n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }" (if "if") (parenthesized_expression "(pbVar12 < pbVar7)" (( "(") (binary_expression "pbVar12 < pbVar7" (identifier "pbVar12") (< "<") (identifier "pbVar7")) () ")")) (compound_statement "{\n      uVar3 = (uint)*pbVar12;\n    }" ({ "{") (expression_statement "uVar3 = (uint)*pbVar12;" (assignment_expression "uVar3 = (uint)*pbVar12" (identifier "uVar3") (= "=") (binary_expression "(uint)*pbVar12" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar12"))) (; ";")) (} "}")) (else_clause "else {\n                    \n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }" (else "else") (compound_statement "{\n                    \n      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n      if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }\n      pbVar7 = (byte *)piVar10[3];\n      pbVar12 = (byte *)piVar10[2];\n    }" ({ "{") (expression_statement "uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);" (assignment_expression "uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10)" (identifier "uVar3") (= "=") (call_expression "(**(code **)(*piVar10 + 0x24))(piVar10)" (parenthesized_expression "(**(code **)(*piVar10 + 0x24))" (( "(") (pointer_expression "**(code **)(*piVar10 + 0x24)" (* "*") (pointer_expression "*(code **)(*piVar10 + 0x24)" (* "*") (cast_expression "(code **)(*piVar10 + 0x24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar10 + 0x24)" (( "(") (binary_expression "*piVar10 + 0x24" (pointer_expression "*piVar10" (* "*") (identifier "piVar10")) (+ "+") (number_literal "0x24")) () ")"))))) () ")")) (argument_list "(piVar10)" (( "(") (identifier "piVar10") () ")")))) (; ";")) (if_statement "if (uVar3 == 0xffffffff) {\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }" (if "if") (parenthesized_expression "(uVar3 == 0xffffffff)" (( "(") (binary_expression "uVar3 == 0xffffffff" (identifier "uVar3") (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\nLAB_00332700:\n        uVar6 = 6;\n        goto LAB_00332458;\n      }" ({ "{") (labeled_statement "LAB_00332700:\n        uVar6 = 6;" (statement_identifier "LAB_00332700") (: ":") (expression_statement "uVar6 = 6;" (assignment_expression "uVar6 = 6" (identifier "uVar6") (= "=") (number_literal "6")) (; ";"))) (goto_statement "goto LAB_00332458;" (goto "goto") (statement_identifier "LAB_00332458") (; ";")) (} "}"))) (expression_statement "pbVar7 = (byte *)piVar10[3];" (assignment_expression "pbVar7 = (byte *)piVar10[3]" (identifier "pbVar7") (= "=") (cast_expression "(byte *)piVar10[3]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar10[3]" (identifier "piVar10") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "pbVar12 = (byte *)piVar10[2];" (assignment_expression "pbVar12 = (byte *)piVar10[2]" (identifier "pbVar12") (= "=") (cast_expression "(byte *)piVar10[2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar10[2]" (identifier "piVar10") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")))) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((byte)param_3 == uVar3) {\n      if (pbVar7 <= pbVar12) {\n                    \n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }\n    }\n    else {\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    \n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    \n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }" (if "if") (parenthesized_expression "((byte)param_3 == uVar3)" (( "(") (binary_expression "(byte)param_3 == uVar3" (cast_expression "(byte)param_3" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "param_3")) (== "==") (identifier "uVar3")) () ")")) (compound_statement "{\n      if (pbVar7 <= pbVar12) {\n                    \n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }\n    }" ({ "{") (if_statement "if (pbVar7 <= pbVar12) {\n                    \n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }" (if "if") (parenthesized_expression "(pbVar7 <= pbVar12)" (( "(") (binary_expression "pbVar7 <= pbVar12" (identifier "pbVar7") (<= "<=") (identifier "pbVar12")) () ")")) (compound_statement "{\n                    \n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        return param_1;\n      }" ({ "{") (expression_statement "(**(code **)(*piVar10 + 0x28))(piVar10);" (call_expression "(**(code **)(*piVar10 + 0x28))(piVar10)" (parenthesized_expression "(**(code **)(*piVar10 + 0x28))" (( "(") (pointer_expression "**(code **)(*piVar10 + 0x28)" (* "*") (pointer_expression "*(code **)(*piVar10 + 0x28)" (* "*") (cast_expression "(code **)(*piVar10 + 0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar10 + 0x28)" (( "(") (binary_expression "*piVar10 + 0x28" (pointer_expression "*piVar10" (* "*") (identifier "piVar10")) (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (argument_list "(piVar10)" (( "(") (identifier "piVar10") () ")"))) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    \n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    \n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }" (else "else") (compound_statement "{\n      local_2c = param_2 + 8;\n      do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    \n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    \n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);\n      iVar2 = uVar11 + 1;\n      if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }\n    }" ({ "{") (expression_statement "local_2c = param_2 + 8;" (assignment_expression "local_2c = param_2 + 8" (identifier "local_2c") (= "=") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8"))) (; ";")) (do_statement "do {\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    \n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    \n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      } while (uVar3 != local_30);" (do "do") (compound_statement "{\n        uVar9 = *(uint *)(param_2 + 4);\n        uVar6 = 0x7fffffff - uVar11;\n        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }\n        if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }\n        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;\n        if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }\n        if (0x7fffffff - uVar9 < uVar6) {\n                    \n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }\n                    \n        string::_M_append(param_2,(char *)pbVar12,uVar6);\n        uVar11 = uVar11 + uVar6;\n        pbVar7 = (byte *)piVar10[3];\n        pbVar12 = (byte *)(piVar10[2] + uVar6);\n        piVar10[2] = (int)pbVar12;\n        if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }\n        pbVar12 = (byte *)piVar10[2];\n      }" ({ "{") (expression_statement "uVar9 = *(uint *)(param_2 + 4);" (assignment_expression "uVar9 = *(uint *)(param_2 + 4)" (identifier "uVar9") (= "=") (pointer_expression "*(uint *)(param_2 + 4)" (* "*") (cast_expression "(uint *)(param_2 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uVar6 = 0x7fffffff - uVar11;" (assignment_expression "uVar6 = 0x7fffffff - uVar11" (identifier "uVar6") (= "=") (binary_expression "0x7fffffff - uVar11" (number_literal "0x7fffffff") (- "-") (identifier "uVar11"))) (; ";")) (if_statement "if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }" (if "if") (parenthesized_expression "((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11))" (( "(") (binary_expression "(int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)" (binary_expression "(int)pbVar7 - (int)pbVar12" (cast_expression "(int)pbVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar7")) (- "-") (cast_expression "(int)pbVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar12"))) (<= "<=") (cast_expression "(int)(0x7fffffff - uVar11)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(0x7fffffff - uVar11)" (( "(") (binary_expression "0x7fffffff - uVar11" (number_literal "0x7fffffff") (- "-") (identifier "uVar11")) () ")")))) () ")")) (compound_statement "{\n          uVar6 = (int)pbVar7 - (int)pbVar12;\n        }" ({ "{") (expression_statement "uVar6 = (int)pbVar7 - (int)pbVar12;" (assignment_expression "uVar6 = (int)pbVar7 - (int)pbVar12" (identifier "uVar6") (= "=") (binary_expression "(int)pbVar7 - (int)pbVar12" (cast_expression "(int)pbVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar7")) (- "-") (cast_expression "(int)pbVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar12")))) (; ";")) (} "}"))) (if_statement "if ((int)uVar6 < 2) {\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }" (if "if") (parenthesized_expression "((int)uVar6 < 2)" (( "(") (binary_expression "(int)uVar6 < 2" (cast_expression "(int)uVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar6")) (< "<") (number_literal "2")) () ")")) (compound_statement "{\n          psVar8 = *(string **)param_2;\n          uVar6 = uVar9 + 1;\n          if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }\n          if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }\n          psVar8[uVar9] = SUB41(uVar3,0);\n          *(uint *)(param_2 + 4) = uVar6;\n          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;\n          pbVar7 = (byte *)piVar10[3];\n          uVar11 = uVar11 + 1;\n          if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }\n          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);\n          if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }\nLAB_003326f0:\n          uVar6 = 2;\n          goto LAB_00332458;\n        }" ({ "{") (expression_statement "psVar8 = *(string **)param_2;" (assignment_expression "psVar8 = *(string **)param_2" (identifier "psVar8") (= "=") (pointer_expression "*(string **)param_2" (* "*") (cast_expression "(string **)param_2" (( "(") (type_descriptor "string **" (type_identifier "string") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "param_2")))) (; ";")) (expression_statement "uVar6 = uVar9 + 1;" (assignment_expression "uVar6 = uVar9 + 1" (identifier "uVar6") (= "=") (binary_expression "uVar9 + 1" (identifier "uVar9") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (psVar8 == local_2c) {\n            uVar4 = 0xf;\n          }\n          else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }" (if "if") (parenthesized_expression "(psVar8 == local_2c)" (( "(") (binary_expression "psVar8 == local_2c" (identifier "psVar8") (== "==") (identifier "local_2c")) () ")")) (compound_statement "{\n            uVar4 = 0xf;\n          }" ({ "{") (expression_statement "uVar4 = 0xf;" (assignment_expression "uVar4 = 0xf" (identifier "uVar4") (= "=") (number_literal "0xf")) (; ";")) (} "}")) (else_clause "else {\n            uVar4 = *(uint *)(param_2 + 8);\n          }" (else "else") (compound_statement "{\n            uVar4 = *(uint *)(param_2 + 8);\n          }" ({ "{") (expression_statement "uVar4 = *(uint *)(param_2 + 8);" (assignment_expression "uVar4 = *(uint *)(param_2 + 8)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(param_2 + 8)" (* "*") (cast_expression "(uint *)(param_2 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}")))) (if_statement "if (uVar4 < uVar6) {\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }" (if "if") (parenthesized_expression "(uVar4 < uVar6)" (( "(") (binary_expression "uVar4 < uVar6" (identifier "uVar4") (< "<") (identifier "uVar6")) () ")")) (compound_statement "{\n            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);\n            psVar8 = *(string **)param_2;\n          }" ({ "{") (labeled_statement "string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);" (statement_identifier "string") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_mutate(param_2,uVar9,0,(char *)0x0,1);" (call_expression "_M_mutate(param_2,uVar9,0,(char *)0x0,1)" (identifier "_M_mutate") (argument_list "(param_2,uVar9,0,(char *)0x0,1)" (( "(") (identifier "param_2") (, ",") (identifier "uVar9") (, ",") (number_literal "0") (, ",") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (, ",") (number_literal "1") () ")"))) (; ";"))) (expression_statement "psVar8 = *(string **)param_2;" (assignment_expression "psVar8 = *(string **)param_2" (identifier "psVar8") (= "=") (pointer_expression "*(string **)param_2" (* "*") (cast_expression "(string **)param_2" (( "(") (type_descriptor "string **" (type_identifier "string") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "param_2")))) (; ";")) (} "}"))) (expression_statement "psVar8[uVar9] = SUB41(uVar3,0);" (assignment_expression "psVar8[uVar9] = SUB41(uVar3,0)" (subscript_expression "psVar8[uVar9]" (identifier "psVar8") ([ "[") (identifier "uVar9") (] "]")) (= "=") (call_expression "SUB41(uVar3,0)" (identifier "SUB41") (argument_list "(uVar3,0)" (( "(") (identifier "uVar3") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "*(uint *)(param_2 + 4) = uVar6;" (assignment_expression "*(uint *)(param_2 + 4) = uVar6" (pointer_expression "*(uint *)(param_2 + 4)" (* "*") (cast_expression "(uint *)(param_2 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "*(undefined1 *)(*(int *)param_2 + uVar6) = 0;" (assignment_expression "*(undefined1 *)(*(int *)param_2 + uVar6) = 0" (pointer_expression "*(undefined1 *)(*(int *)param_2 + uVar6)" (* "*") (cast_expression "(undefined1 *)(*(int *)param_2 + uVar6)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)param_2 + uVar6)" (( "(") (binary_expression "*(int *)param_2 + uVar6" (pointer_expression "*(int *)param_2" (* "*") (cast_expression "(int *)param_2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2"))) (+ "+") (identifier "uVar6")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar7 = (byte *)piVar10[3];" (assignment_expression "pbVar7 = (byte *)piVar10[3]" (identifier "pbVar7") (= "=") (cast_expression "(byte *)piVar10[3]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar10[3]" (identifier "piVar10") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 + 1" (identifier "uVar11") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((byte *)piVar10[2] < pbVar7) {\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }" (if "if") (parenthesized_expression "((byte *)piVar10[2] < pbVar7)" (( "(") (binary_expression "(byte *)piVar10[2] < pbVar7" (cast_expression "(byte *)piVar10[2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar10[2]" (identifier "piVar10") ([ "[") (number_literal "2") (] "]"))) (< "<") (identifier "pbVar7")) () ")")) (compound_statement "{\n            pbVar12 = (byte *)piVar10[2] + 1;\n            piVar10[2] = (int)pbVar12;\nLAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }\n            goto LAB_00332644;\n          }" ({ "{") (expression_statement "pbVar12 = (byte *)piVar10[2] + 1;" (assignment_expression "pbVar12 = (byte *)piVar10[2] + 1" (identifier "pbVar12") (= "=") (binary_expression "(byte *)piVar10[2] + 1" (cast_expression "(byte *)piVar10[2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar10[2]" (identifier "piVar10") ([ "[") (number_literal "2") (] "]"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar10[2] = (int)pbVar12;" (assignment_expression "piVar10[2] = (int)pbVar12" (subscript_expression "piVar10[2]" (identifier "piVar10") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)pbVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar12"))) (; ";")) (labeled_statement "LAB_003325fc:\n            if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }" (statement_identifier "LAB_003325fc") (: ":") (if_statement "if (pbVar12 < pbVar7) {\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }" (if "if") (parenthesized_expression "(pbVar12 < pbVar7)" (( "(") (binary_expression "pbVar12 < pbVar7" (identifier "pbVar12") (< "<") (identifier "pbVar7")) () ")")) (compound_statement "{\n              bVar1 = *pbVar12;\n              goto joined_r0x00332608;\n            }" ({ "{") (expression_statement "bVar1 = *pbVar12;" (assignment_expression "bVar1 = *pbVar12" (identifier "bVar1") (= "=") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12"))) (; ";")) (goto_statement "goto joined_r0x00332608;" (goto "goto") (statement_identifier "joined_r0x00332608") (; ";")) (} "}")))) (goto_statement "goto LAB_00332644;" (goto "goto") (statement_identifier "LAB_00332644") (; ";")) (} "}"))) (expression_statement "iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);" (assignment_expression "iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10)" (identifier "iVar2") (= "=") (call_expression "(**(code **)(*piVar10 + 0x28))(piVar10)" (parenthesized_expression "(**(code **)(*piVar10 + 0x28))" (( "(") (pointer_expression "**(code **)(*piVar10 + 0x28)" (* "*") (pointer_expression "*(code **)(*piVar10 + 0x28)" (* "*") (cast_expression "(code **)(*piVar10 + 0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar10 + 0x28)" (( "(") (binary_expression "*piVar10 + 0x28" (pointer_expression "*piVar10" (* "*") (identifier "piVar10")) (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (argument_list "(piVar10)" (( "(") (identifier "piVar10") () ")")))) (; ";")) (if_statement "if (iVar2 != -1) {\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }" (if "if") (parenthesized_expression "(iVar2 != -1)" (( "(") (binary_expression "iVar2 != -1" (identifier "iVar2") (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n            pbVar12 = (byte *)piVar10[2];\n            pbVar7 = (byte *)piVar10[3];\n            goto LAB_003325fc;\n          }" ({ "{") (expression_statement "pbVar12 = (byte *)piVar10[2];" (assignment_expression "pbVar12 = (byte *)piVar10[2]" (identifier "pbVar12") (= "=") (cast_expression "(byte *)piVar10[2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar10[2]" (identifier "piVar10") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "pbVar7 = (byte *)piVar10[3];" (assignment_expression "pbVar7 = (byte *)piVar10[3]" (identifier "pbVar7") (= "=") (cast_expression "(byte *)piVar10[3]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar10[3]" (identifier "piVar10") ([ "[") (number_literal "3") (] "]")))) (; ";")) (goto_statement "goto LAB_003325fc;" (goto "goto") (statement_identifier "LAB_003325fc") (; ";")) (} "}"))) (labeled_statement "LAB_003326f0:\n          uVar6 = 2;" (statement_identifier "LAB_003326f0") (: ":") (expression_statement "uVar6 = 2;" (assignment_expression "uVar6 = 2" (identifier "uVar6") (= "=") (number_literal "2")) (; ";"))) (goto_statement "goto LAB_00332458;" (goto "goto") (statement_identifier "LAB_00332458") (; ";")) (} "}"))) (expression_statement "iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)\n        ;" (assignment_expression "iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)" (identifier "iVar2") (= "=") (call_expression "(*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)" (parenthesized_expression "(*(code *)PTR_memchr_004c5ac8)" (( "(") (pointer_expression "*(code *)PTR_memchr_004c5ac8" (* "*") (cast_expression "(code *)PTR_memchr_004c5ac8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memchr_004c5ac8"))) () ")")) (argument_list "(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)" (( "(") (identifier "pbVar12") (, ",") (call_expression "CONCAT31(in_register_00000018,param_3)" (identifier "CONCAT31") (argument_list "(in_register_00000018,param_3)" (( "(") (identifier "in_register_00000018") (, ",") (identifier "param_3") () ")"))) (, ",") (identifier "uVar6") () ")")))) (; ";")) (if_statement "if (iVar2 != 0) {\n          uVar6 = iVar2 - (int)pbVar12;\n        }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          uVar6 = iVar2 - (int)pbVar12;\n        }" ({ "{") (expression_statement "uVar6 = iVar2 - (int)pbVar12;" (assignment_expression "uVar6 = iVar2 - (int)pbVar12" (identifier "uVar6") (= "=") (binary_expression "iVar2 - (int)pbVar12" (identifier "iVar2") (- "-") (cast_expression "(int)pbVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar12")))) (; ";")) (} "}"))) (if_statement "if (0x7fffffff - uVar9 < uVar6) {\n                    \n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }" (if "if") (parenthesized_expression "(0x7fffffff - uVar9 < uVar6)" (( "(") (binary_expression "0x7fffffff - uVar9 < uVar6" (binary_expression "0x7fffffff - uVar9" (number_literal "0x7fffffff") (- "-") (identifier "uVar9")) (< "<") (identifier "uVar6")) () ")")) (compound_statement "{\n                    \n          piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);\n          return piVar5;\n        }" ({ "{") (expression_statement "piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);" (assignment_expression "piVar5 = (istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c)" (identifier "piVar5") (= "=") (cast_expression "(istream *)\n                   (*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c)" (( "(") (type_descriptor "istream *" (type_identifier "istream") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___throw_length_error_004c1e74)\n                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c)" (parenthesized_expression "(*(code *)PTR___throw_length_error_004c1e74)" (( "(") (pointer_expression "*(code *)PTR___throw_length_error_004c1e74" (* "*") (cast_expression "(code *)PTR___throw_length_error_004c1e74" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___throw_length_error_004c1e74"))) () ")")) (argument_list "(PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c)" (( "(") (binary_expression "PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c" (identifier "PTR_s_ral_options14Struct_no_crefE_004c127c") (+ "+") (number_literal "0x446c")) () ")"))))) (; ";")) (return_statement "return piVar5;" (return "return") (identifier "piVar5") (; ";")) (} "}"))) (labeled_statement "string::_M_append(param_2,(char *)pbVar12,uVar6);" (statement_identifier "string") (: ":") (ERROR ":" (: ":")) (expression_statement "_M_append(param_2,(char *)pbVar12,uVar6);" (call_expression "_M_append(param_2,(char *)pbVar12,uVar6)" (identifier "_M_append") (argument_list "(param_2,(char *)pbVar12,uVar6)" (( "(") (identifier "param_2") (, ",") (cast_expression "(char *)pbVar12" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar12")) (, ",") (identifier "uVar6") () ")"))) (; ";"))) (expression_statement "uVar11 = uVar11 + uVar6;" (assignment_expression "uVar11 = uVar11 + uVar6" (identifier "uVar11") (= "=") (binary_expression "uVar11 + uVar6" (identifier "uVar11") (+ "+") (identifier "uVar6"))) (; ";")) (expression_statement "pbVar7 = (byte *)piVar10[3];" (assignment_expression "pbVar7 = (byte *)piVar10[3]" (identifier "pbVar7") (= "=") (cast_expression "(byte *)piVar10[3]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar10[3]" (identifier "piVar10") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "pbVar12 = (byte *)(piVar10[2] + uVar6);" (assignment_expression "pbVar12 = (byte *)(piVar10[2] + uVar6)" (identifier "pbVar12") (= "=") (cast_expression "(byte *)(piVar10[2] + uVar6)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar10[2] + uVar6)" (( "(") (binary_expression "piVar10[2] + uVar6" (subscript_expression "piVar10[2]" (identifier "piVar10") ([ "[") (number_literal "2") (] "]")) (+ "+") (identifier "uVar6")) () ")")))) (; ";")) (expression_statement "piVar10[2] = (int)pbVar12;" (assignment_expression "piVar10[2] = (int)pbVar12" (subscript_expression "piVar10[2]" (identifier "piVar10") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)pbVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar12"))) (; ";")) (if_statement "if (pbVar12 < pbVar7) {\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }\n        else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }" (if "if") (parenthesized_expression "(pbVar12 < pbVar7)" (( "(") (binary_expression "pbVar12 < pbVar7" (identifier "pbVar12") (< "<") (identifier "pbVar7")) () ")")) (compound_statement "{\n          bVar1 = *pbVar12;\njoined_r0x00332608:\n          uVar3 = (uint)bVar1;\n          if (0x7ffffffe < uVar11) goto LAB_00332610;\n        }" ({ "{") (expression_statement "bVar1 = *pbVar12;" (assignment_expression "bVar1 = *pbVar12" (identifier "bVar1") (= "=") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12"))) (; ";")) (labeled_statement "joined_r0x00332608:\n          uVar3 = (uint)bVar1;" (statement_identifier "joined_r0x00332608") (: ":") (expression_statement "uVar3 = (uint)bVar1;" (assignment_expression "uVar3 = (uint)bVar1" (identifier "uVar3") (= "=") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1"))) (; ";"))) (if_statement "if (0x7ffffffe < uVar11) goto LAB_00332610;" (if "if") (parenthesized_expression "(0x7ffffffe < uVar11)" (( "(") (binary_expression "0x7ffffffe < uVar11" (number_literal "0x7ffffffe") (< "<") (identifier "uVar11")) () ")")) (goto_statement "goto LAB_00332610;" (goto "goto") (statement_identifier "LAB_00332610") (; ";"))) (} "}")) (else_clause "else {\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }" (else "else") (compound_statement "{\nLAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);\n          if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }\n          if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }\n          pbVar7 = (byte *)piVar10[3];\n        }" ({ "{") (labeled_statement "LAB_00332644:\n          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);" (statement_identifier "LAB_00332644") (: ":") (expression_statement "uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);" (assignment_expression "uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10)" (identifier "uVar3") (= "=") (call_expression "(**(code **)(*piVar10 + 0x24))(piVar10)" (parenthesized_expression "(**(code **)(*piVar10 + 0x24))" (( "(") (pointer_expression "**(code **)(*piVar10 + 0x24)" (* "*") (pointer_expression "*(code **)(*piVar10 + 0x24)" (* "*") (cast_expression "(code **)(*piVar10 + 0x24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar10 + 0x24)" (( "(") (binary_expression "*piVar10 + 0x24" (pointer_expression "*piVar10" (* "*") (identifier "piVar10")) (+ "+") (number_literal "0x24")) () ")"))))) () ")")) (argument_list "(piVar10)" (( "(") (identifier "piVar10") () ")")))) (; ";"))) (if_statement "if (0x7ffffffe < uVar11) {\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }" (if "if") (parenthesized_expression "(0x7ffffffe < uVar11)" (( "(") (binary_expression "0x7ffffffe < uVar11" (number_literal "0x7ffffffe") (< "<") (identifier "uVar11")) () ")")) (compound_statement "{\n            uVar6 = 2;\n            if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }\nLAB_00332610:\n            uVar6 = 4;\n            if (local_30 != uVar3) goto LAB_00332458;\n            iVar2 = uVar11 + 1;\n            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;\n            piVar10[2] = piVar10[2] + 1;\n            if (iVar2 != 0) {\n              return param_1;\n            }\n            goto LAB_00332454;\n          }" ({ "{") (expression_statement "uVar6 = 2;" (assignment_expression "uVar6 = 2" (identifier "uVar6") (= "=") (number_literal "2")) (; ";")) (if_statement "if (uVar3 == 0xffffffff) {\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }" (if "if") (parenthesized_expression "(uVar3 == 0xffffffff)" (( "(") (binary_expression "uVar3 == 0xffffffff" (identifier "uVar3") (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n              iVar2 = *(int *)param_1;\n              goto LAB_0033245c;\n            }" ({ "{") (expression_statement "iVar2 = *(int *)param_1;" (assignment_expression "iVar2 = *(int *)param_1" (identifier "iVar2") (= "=") (pointer_expression "*(int *)param_1" (* "*") (cast_expression "(int *)param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1")))) (; ";")) (goto_statement "goto LAB_0033245c;" (goto "goto") (statement_identifier "LAB_0033245c") (; ";")) (} "}"))) (labeled_statement "LAB_00332610:\n            uVar6 = 4;" (statement_identifier "LAB_00332610") (: ":") (expression_statement "uVar6 = 4;" (assignment_expression "uVar6 = 4" (identifier "uVar6") (= "=") (number_literal "4")) (; ";"))) (if_statement "if (local_30 != uVar3) goto LAB_00332458;" (if "if") (parenthesized_expression "(local_30 != uVar3)" (( "(") (binary_expression "local_30 != uVar3" (identifier "local_30") (!= "!=") (identifier "uVar3")) () ")")) (goto_statement "goto LAB_00332458;" (goto "goto") (statement_identifier "LAB_00332458") (; ";"))) (expression_statement "iVar2 = uVar11 + 1;" (assignment_expression "iVar2 = uVar11 + 1" (identifier "iVar2") (= "=") (binary_expression "uVar11 + 1" (identifier "uVar11") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;" (if "if") (parenthesized_expression "((uint)piVar10[3] <= (uint)piVar10[2])" (( "(") (binary_expression "(uint)piVar10[3] <= (uint)piVar10[2]" (cast_expression "(uint)piVar10[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "piVar10[3]" (identifier "piVar10") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (cast_expression "(uint)piVar10[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "piVar10[2]" (identifier "piVar10") ([ "[") (number_literal "2") (] "]")))) () ")")) (goto_statement "goto LAB_003326b0;" (goto "goto") (statement_identifier "LAB_003326b0") (; ";"))) (expression_statement "piVar10[2] = piVar10[2] + 1;" (assignment_expression "piVar10[2] = piVar10[2] + 1" (subscript_expression "piVar10[2]" (identifier "piVar10") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "piVar10[2] + 1" (subscript_expression "piVar10[2]" (identifier "piVar10") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar2 != 0) {\n              return param_1;\n            }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              return param_1;\n            }" ({ "{") (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (goto_statement "goto LAB_00332454;" (goto "goto") (statement_identifier "LAB_00332454") (; ";")) (} "}"))) (if_statement "if (uVar3 == 0xffffffff) {\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }" (if "if") (parenthesized_expression "(uVar3 == 0xffffffff)" (( "(") (binary_expression "uVar3 == 0xffffffff" (identifier "uVar3") (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n            if (uVar11 != 0) goto LAB_003326f0;\n            goto LAB_00332700;\n          }" ({ "{") (if_statement "if (uVar11 != 0) goto LAB_003326f0;" (if "if") (parenthesized_expression "(uVar11 != 0)" (( "(") (binary_expression "uVar11 != 0" (identifier "uVar11") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_003326f0;" (goto "goto") (statement_identifier "LAB_003326f0") (; ";"))) (goto_statement "goto LAB_00332700;" (goto "goto") (statement_identifier "LAB_00332700") (; ";")) (} "}"))) (expression_statement "pbVar7 = (byte *)piVar10[3];" (assignment_expression "pbVar7 = (byte *)piVar10[3]" (identifier "pbVar7") (= "=") (cast_expression "(byte *)piVar10[3]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar10[3]" (identifier "piVar10") ([ "[") (number_literal "3") (] "]")))) (; ";")) (} "}")))) (expression_statement "pbVar12 = (byte *)piVar10[2];" (assignment_expression "pbVar12 = (byte *)piVar10[2]" (identifier "pbVar12") (= "=") (cast_expression "(byte *)piVar10[2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar10[2]" (identifier "piVar10") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar3 != local_30)" (( "(") (binary_expression "uVar3 != local_30" (identifier "uVar3") (!= "!=") (identifier "local_30")) () ")")) (; ";")) (expression_statement "iVar2 = uVar11 + 1;" (assignment_expression "iVar2 = uVar11 + 1" (identifier "iVar2") (= "=") (binary_expression "uVar11 + 1" (identifier "uVar11") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (pbVar7 <= pbVar12) {\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }" (if "if") (parenthesized_expression "(pbVar7 <= pbVar12)" (( "(") (binary_expression "pbVar7 <= pbVar12" (identifier "pbVar7") (<= "<=") (identifier "pbVar12")) () ")")) (compound_statement "{\nLAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);\n        uVar6 = 4;\n        if (iVar2 != 0) {\n          return param_1;\n        }\n        goto LAB_00332458;\n      }" ({ "{") (labeled_statement "LAB_003326b0:\n        (**(code **)(*piVar10 + 0x28))(piVar10);" (statement_identifier "LAB_003326b0") (: ":") (expression_statement "(**(code **)(*piVar10 + 0x28))(piVar10);" (call_expression "(**(code **)(*piVar10 + 0x28))(piVar10)" (parenthesized_expression "(**(code **)(*piVar10 + 0x28))" (( "(") (pointer_expression "**(code **)(*piVar10 + 0x28)" (* "*") (pointer_expression "*(code **)(*piVar10 + 0x28)" (* "*") (cast_expression "(code **)(*piVar10 + 0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar10 + 0x28)" (( "(") (binary_expression "*piVar10 + 0x28" (pointer_expression "*piVar10" (* "*") (identifier "piVar10")) (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (argument_list "(piVar10)" (( "(") (identifier "piVar10") () ")"))) (; ";"))) (expression_statement "uVar6 = 4;" (assignment_expression "uVar6 = 4" (identifier "uVar6") (= "=") (number_literal "4")) (; ";")) (if_statement "if (iVar2 != 0) {\n          return param_1;\n        }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          return param_1;\n        }" ({ "{") (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (goto_statement "goto LAB_00332458;" (goto "goto") (statement_identifier "LAB_00332458") (; ";")) (} "}"))) (} "}")))) (expression_statement "piVar10[2] = (int)(pbVar12 + 1);" (assignment_expression "piVar10[2] = (int)(pbVar12 + 1)" (subscript_expression "piVar10[2]" (identifier "piVar10") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)(pbVar12 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(pbVar12 + 1)" (( "(") (binary_expression "pbVar12 + 1" (identifier "pbVar12") (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}")))) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))
(translation_unit (ERROR (binary_expression left: (binary_expression left: (identifier) right: (identifier)) (ERROR (identifier)) right: (identifier))) (labeled_statement label: (statement_identifier) (ERROR (binary_expression left: (binary_expression left: (identifier) right: (identifier)) (ERROR) right: (identifier))) (expression_statement (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (comma_expression left: (binary_expression left: (identifier) right: (identifier)) right: (comma_expression left: (binary_expression left: (identifier) right: (identifier)) (ERROR (identifier)) right: (identifier)))))) (MISSING ";"))) (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (labeled_statement label: (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: (identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (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: (identifier) right: (number_literal)))))) (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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: (identifier) right: (number_literal)))))) right: (number_literal))))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator 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: (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))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (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)))) (return_statement (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (ERROR) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal) (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) 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: (identifier))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (goto_statement label: (statement_identifier))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (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: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (number_literal) right: (identifier)) right: (identifier))) 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 (binary_expression left: (identifier) right: (number_literal))))))) (return_statement (identifier)))) (labeled_statement label: (statement_identifier) (ERROR) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (identifier)))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_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))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (identifier)))) (goto_statement label: (statement_identifier))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (return_statement (identifier))))

/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* std::istream& std::getline<char, std::char_traits<char>, std::allocator<char> >(std::istream&,
   std::string&, char) */

istream * std::MASKED
                    (istream *param_1,string *param_2,char param_3)

{
  byte bVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  istream *piVar5;
  uint uVar6;
  byte *pbVar7;
  string *psVar8;
  undefined3 in_register_00000018;
  uint uVar9;
  int *piVar10;
  uint uVar11;
  byte *pbVar12;
  char local_38 [8];
  uint local_30;
  string *local_2c;
  
  (*(code *)PTR_sentry_004c5178)(local_38,param_1,1);
  if (local_38[0] == '\0') {
LAB_00332454:
    uVar6 = 4;
LAB_00332458:
    iVar2 = *(int *)param_1;
LAB_0033245c:
    (*(code *)PTR_clear_004c22b8)
              (param_1 + *(int *)(iVar2 + -0xc),
               uVar6 | *(uint *)(param_1 + *(int *)(iVar2 + -0xc) + 0x14));
  }
  else {
    local_30 = (uint)(byte)param_3;
    *(undefined4 *)(param_2 + 4) = 0;
    **(undefined1 **)param_2 = 0;
    piVar10 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x78);
    pbVar12 = (byte *)piVar10[2];
    pbVar7 = (byte *)piVar10[3];
    if (pbVar12 < pbVar7) {
      uVar3 = (uint)*pbVar12;
    }
    else {
                    /* try { // try from 00332710 to 00332717 has its CatchHandler @ 00332790 */
      uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);
      if (uVar3 == 0xffffffff) {
LAB_00332700:
        uVar6 = 6;
        goto LAB_00332458;
      }
      pbVar7 = (byte *)piVar10[3];
      pbVar12 = (byte *)piVar10[2];
    }
    uVar11 = 0;
    if ((byte)param_3 == uVar3) {
      if (pbVar7 <= pbVar12) {
                    /* try { // try from 00332764 to 0033276b has its CatchHandler @ 003327e8 */
        (**(code **)(*piVar10 + 0x28))(piVar10);
        return param_1;
      }
    }
    else {
      local_2c = param_2 + 8;
      do {
        uVar9 = *(uint *)(param_2 + 4);
        uVar6 = 0x7fffffff - uVar11;
        if ((int)pbVar7 - (int)pbVar12 <= (int)(0x7fffffff - uVar11)) {
          uVar6 = (int)pbVar7 - (int)pbVar12;
        }
        if ((int)uVar6 < 2) {
          psVar8 = *(string **)param_2;
          uVar6 = uVar9 + 1;
          if (psVar8 == local_2c) {
            uVar4 = 0xf;
          }
          else {
            uVar4 = *(uint *)(param_2 + 8);
          }
          if (uVar4 < uVar6) {
            string::_M_mutate(param_2,uVar9,0,(char *)0x0,1);
            psVar8 = *(string **)param_2;
          }
          psVar8[uVar9] = SUB41(uVar3,0);
          *(uint *)(param_2 + 4) = uVar6;
          *(undefined1 *)(*(int *)param_2 + uVar6) = 0;
          pbVar7 = (byte *)piVar10[3];
          uVar11 = uVar11 + 1;
          if ((byte *)piVar10[2] < pbVar7) {
            pbVar12 = (byte *)piVar10[2] + 1;
            piVar10[2] = (int)pbVar12;
LAB_003325fc:
            if (pbVar12 < pbVar7) {
              bVar1 = *pbVar12;
              goto joined_r0x00332608;
            }
            goto LAB_00332644;
          }
          iVar2 = (**(code **)(*piVar10 + 0x28))(piVar10);
          if (iVar2 != -1) {
            pbVar12 = (byte *)piVar10[2];
            pbVar7 = (byte *)piVar10[3];
            goto LAB_003325fc;
          }
LAB_003326f0:
          uVar6 = 2;
          goto LAB_00332458;
        }
        iVar2 = (*(code *)PTR_memchr_004c5ac8)(pbVar12,CONCAT31(in_register_00000018,param_3),uVar6)
        ;
        if (iVar2 != 0) {
          uVar6 = iVar2 - (int)pbVar12;
        }
        if (0x7fffffff - uVar9 < uVar6) {
                    /* try { // try from 0033277c to 00332783 has its CatchHandler @ 003327e0 */
          piVar5 = (istream *)
                   (*(code *)PTR___throw_length_error_004c1e74)
                             (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x446c);
          return piVar5;
        }
                    /* try { // try from 00332540 to 003326e3 has its CatchHandler @ 003327e0 */
        string::_M_append(param_2,(char *)pbVar12,uVar6);
        uVar11 = uVar11 + uVar6;
        pbVar7 = (byte *)piVar10[3];
        pbVar12 = (byte *)(piVar10[2] + uVar6);
        piVar10[2] = (int)pbVar12;
        if (pbVar12 < pbVar7) {
          bVar1 = *pbVar12;
joined_r0x00332608:
          uVar3 = (uint)bVar1;
          if (0x7ffffffe < uVar11) goto LAB_00332610;
        }
        else {
LAB_00332644:
          uVar3 = (**(code **)(*piVar10 + 0x24))(piVar10);
          if (0x7ffffffe < uVar11) {
            uVar6 = 2;
            if (uVar3 == 0xffffffff) {
              iVar2 = *(int *)param_1;
              goto LAB_0033245c;
            }
LAB_00332610:
            uVar6 = 4;
            if (local_30 != uVar3) goto LAB_00332458;
            iVar2 = uVar11 + 1;
            if ((uint)piVar10[3] <= (uint)piVar10[2]) goto LAB_003326b0;
            piVar10[2] = piVar10[2] + 1;
            if (iVar2 != 0) {
              return param_1;
            }
            goto LAB_00332454;
          }
          if (uVar3 == 0xffffffff) {
            if (uVar11 != 0) goto LAB_003326f0;
            goto LAB_00332700;
          }
          pbVar7 = (byte *)piVar10[3];
        }
        pbVar12 = (byte *)piVar10[2];
      } while (uVar3 != local_30);
      iVar2 = uVar11 + 1;
      if (pbVar7 <= pbVar12) {
LAB_003326b0:
        (**(code **)(*piVar10 + 0x28))(piVar10);
        uVar6 = 4;
        if (iVar2 != 0) {
          return param_1;
        }
        goto LAB_00332458;
      }
    }
    piVar10[2] = (int)(pbVar12 + 1);
  }
  return param_1;
}

