
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* std::wistream& std::TEMPNAMEPLACEHOLDERVALUE(std::wistream&, wchar_t*) */

wistream * std::operator>>(wistream *param_1,wchar_t *param_2)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  int *piVar4;
  int *piVar5;
  int iVar6;
  int iVar7;
  _Ios_Iostate _Var8;
  wchar_t *pwVar9;
  int iVar10;
  int iVar11;
  undefined1 auStack_38 [4];
  sentry local_34 [16];
  
  wistream::sentry::sentry(local_34,param_1,false);
  if (local_34[0] == (sentry)0x0) {
    iVar10 = *(int *)param_1;
    _Var8 = _S_failbit;
  }
  else {
    iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);
    if (iVar10 < 1) {
      iVar10 = 0x7fffffff;
    }
    (*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c);
                    /* try { // try from 002e8e84 to 002e8e8b has its CatchHandler @ 002e90d0 */
    piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38);
    (*(code *)PTR__locale_00433084)(auStack_38);
    piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);
    if ((int *)piVar5[2] < (int *)piVar5[3]) {
      iVar6 = *(int *)piVar5[2];
    }
    else {
                    /* try { // try from 002e9084 to 002e908b has its CatchHandler @ 002e8f74 */
      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);
    }
    iVar10 = iVar10 + -1;
    iVar7 = 0;
    while (pwVar9 = param_2, iVar7 != iVar10) {
      while( true ) {
        param_2 = pwVar9;
        if (iVar6 == -1) goto LAB_002e90a0;
                    /* try { // try from 002e8ef0 to 002e8ef7 has its CatchHandler @ 002e90c8 */
        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);
        iVar11 = iVar7;
        if (iVar2 != 0) goto LAB_002e8f54;
        piVar4 = (int *)piVar5[2];
        param_2 = pwVar9 + 2;
        piVar3 = (int *)piVar5[3];
        iVar7 = iVar7 + 1;
        *(int *)pwVar9 = iVar6;
        if (piVar4 < piVar3) {
          iVar6 = *piVar4;
          piVar5[2] = (int)(piVar4 + 1);
        }
        else {
                    /* try { // try from 002e9034 to 002e906f has its CatchHandler @ 002e90c8 */
          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);
        }
        if (iVar6 == -1) {
          iVar10 = *(int *)param_1;
          _Var8 = _S_eofbit;
          param_2[0] = L'\0';
          param_2[1] = L'\0';
          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;
          goto LAB_002e8fd4;
        }
        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;
        iVar6 = *(int *)piVar5[2];
        pwVar9 = param_2;
        if (iVar7 == iVar10) goto LAB_002e8f4c;
      }
      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);
    }
LAB_002e8f4c:
    pwVar9 = param_2;
    iVar11 = iVar10;
    if (iVar6 == -1) {
LAB_002e90a0:
      iVar10 = *(int *)param_1;
      _Var8 = _S_eofbit;
      param_2[0] = L'\0';
      param_2[1] = L'\0';
      if (iVar7 == 0) {
        _Var8 = _S_failbit|_S_eofbit;
      }
      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;
    }
    else {
LAB_002e8f54:
      iVar10 = *(int *)param_1;
      pwVar9[0] = L'\0';
      pwVar9[1] = L'\0';
      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;
      if (iVar11 != 0) {
        return param_1;
      }
      _Var8 = _S_failbit;
    }
  }
LAB_002e8fd4:
  wios::clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),
              _Var8 | *(_Ios_Iostate *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14));
  return param_1;
}



wistream * FUN_002e8df0(wistream *param_1,int *param_2)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  int *piVar4;
  int *piVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  int *piVar9;
  int iVar10;
  int iVar11;
  undefined1 auStack_38 [4];
  sentry local_34 [16];
  
  std::wistream::sentry::sentry(local_34,param_1,false);
  if (local_34[0] == (sentry)0x0) {
    iVar10 = *(int *)param_1;
    uVar8 = 4;
  }
  else {
    iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);
    if (iVar10 < 1) {
      iVar10 = 0x7fffffff;
    }
    (*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c);
                    /* try { // try from 002e8e84 to 002e8e8b has its CatchHandler @ 002e90d0 */
    piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38);
    (*(code *)PTR__locale_00433084)(auStack_38);
    piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);
    if ((int *)piVar5[2] < (int *)piVar5[3]) {
      iVar6 = *(int *)piVar5[2];
    }
    else {
                    /* try { // try from 002e9084 to 002e908b has its CatchHandler @ 002e8f74 */
      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);
    }
    iVar10 = iVar10 + -1;
    iVar7 = 0;
    while (piVar9 = param_2, iVar7 != iVar10) {
      while( true ) {
        param_2 = piVar9;
        if (iVar6 == -1) goto LAB_002e90a0;
                    /* try { // try from 002e8ef0 to 002e8ef7 has its CatchHandler @ 002e90c8 */
        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);
        iVar11 = iVar7;
        if (iVar2 != 0) goto LAB_002e8f54;
        piVar4 = (int *)piVar5[2];
        param_2 = piVar9 + 1;
        piVar3 = (int *)piVar5[3];
        iVar7 = iVar7 + 1;
        *piVar9 = iVar6;
        if (piVar4 < piVar3) {
          iVar6 = *piVar4;
          piVar5[2] = (int)(piVar4 + 1);
        }
        else {
                    /* try { // try from 002e9034 to 002e906f has its CatchHandler @ 002e90c8 */
          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);
        }
        if (iVar6 == -1) {
          iVar10 = *(int *)param_1;
          uVar8 = 2;
          *param_2 = 0;
          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;
          goto LAB_002e8fd4;
        }
        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;
        iVar6 = *(int *)piVar5[2];
        piVar9 = param_2;
        if (iVar7 == iVar10) goto LAB_002e8f4c;
      }
      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);
    }
LAB_002e8f4c:
    piVar9 = param_2;
    iVar11 = iVar10;
    if (iVar6 == -1) {
LAB_002e90a0:
      iVar10 = *(int *)param_1;
      uVar8 = 2;
      *param_2 = 0;
      if (iVar7 == 0) {
        uVar8 = 6;
      }
      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;
    }
    else {
LAB_002e8f54:
      iVar10 = *(int *)param_1;
      *piVar9 = 0;
      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;
      if (iVar11 != 0) {
        return param_1;
      }
      uVar8 = 4;
    }
  }
LAB_002e8fd4:
  std::wios::clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),
                   uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14));
  return param_1;
}


lui gp,0x15
addiu gp,gp,0x13e0
addu gp,gp,t9
addiu sp,sp,-0x50
lw t9,-0x4454(gp)
or a2,zero,zero
sw s7,0x48(sp)
or s7,a0,zero
addiu a0,sp,0x1c
sw gp,0x10(sp)
sw s3,0x38(sp)
or s3,a1,zero
sw ra,0x4c(sp)
or a1,s7,zero
sw s6,0x44(sp)
sw s5,0x40(sp)
sw s4,0x3c(sp)
sw s2,0x34(sp)
sw s1,0x30(sp)
bal 0x002e62b8
_sw s0,0x2c(sp)
lbu v0,0x1c(sp)
beq v0,zero,0x002e8fcc
_lw gp,0x10(sp)
lw v0,0x0(s7)
lw a1,-0xc(v0)
addu a1,s7,a1
lw s6,0x8(a1)
blez s6,0x002e9020
_nop
lw t9,-0x6920(gp)
addiu s0,sp,0x18
addiu a1,a1,0x6c
jalr t9
_or a0,s0,zero
lw gp,0x10(sp)
lw t9,-0x6708(gp)
jalr t9
_or a0,s0,zero
lw gp,0x10(sp)
or a0,s0,zero
lw t9,-0x714c(gp)
jalr t9
_or s4,v0,zero
lw v0,0x0(s7)
lw v0,-0xc(v0)
addu v0,s7,v0
lw s0,0x7c(v0)
lw v1,0x8(s0)
lw v0,0xc(s0)
sltu v0,v1,v0
beq v0,zero,0x002e907c
_lw gp,0x10(sp)
lw s1,0x0(v1)
addiu s6,s6,-0x1
or s2,zero,zero
li s5,-0x1
beq s2,s6,0x002e8f4c
_li v0,-0x1
beq s1,s5,0x002e90a0
_or a2,s1,zero
lw v0,0x0(s4)
li a1,0x20
lw t9,0x8(v0)
jalr t9
_or a0,s4,zero
bne v0,zero,0x002e9098
_lw gp,0x10(sp)
lw v1,0x8(s0)
addiu s3,s3,0x4
lw v0,0xc(s0)
addiu s2,s2,0x1
sltu v0,v1,v0
beq v0,zero,0x002e902c
_sw s1,-0x4(s3)
lw v0,0x0(v1)
addiu a0,v1,0x4
beq v0,s5,0x002e9044
_sw a0,0x8(s0)
lw v1,0x8(s0)
lw v0,0xc(s0)
sltu v0,v1,v0
beq v0,zero,0x002e9060
_nop
bne s2,s6,0x002e8edc
_lw s1,0x0(v1)
li v0,-0x1
beq s1,v0,0x002e90a0
_nop
lw v0,0x0(s7)
sw zero,0x0(s3)
lw v1,-0xc(v0)
addu v1,s7,v1
bne s6,zero,0x002e8ff0
_sw zero,0x8(v1)
b 0x002e8fd4
_li s2,0x4
lw v0,0x0(s7)
li s2,0x4
lw v0,-0xc(v0)
lw t9,-0x4450(gp)
addu v0,s7,v0
or a0,v0,zero
lw a1,0x14(v0)
bal 0x002eb754
_or a1,s2,a1
lw ra,0x4c(sp)
or v0,s7,zero
lw s7,0x48(sp)
lw s6,0x44(sp)
lw s5,0x40(sp)
lw s4,0x3c(sp)
lw s3,0x38(sp)
lw s2,0x34(sp)
lw s1,0x30(sp)
lw s0,0x2c(sp)
jr ra
_addiu sp,sp,0x50
lui s6,0x7fff
b 0x002e8e68
_ori s6,s6,0xffff
lw v0,0x0(s0)
lw t9,0x28(v0)
jalr t9
_or a0,s0,zero
bne v0,s5,0x002e8f2c
_lw gp,0x10(sp)
lw v0,0x0(s7)
li s2,0x2
sw zero,0x0(s3)
lw v1,-0xc(v0)
addu v1,s7,v1
b 0x002e8fd4
_sw zero,0x8(v1)
lw v0,0x0(s0)
lw t9,0x24(v0)
jalr t9
_or a0,s0,zero
lw gp,0x10(sp)
b 0x002e8ed4
_or s1,v0,zero
lw v0,0x0(s0)
lw t9,0x24(v0)
jalr t9
_or a0,s0,zero
lw gp,0x10(sp)
b 0x002e8ec8
_or s1,v0,zero
b 0x002e8f54
_or s6,s2,zero
li a0,0x6
lw v0,0x0(s7)
li v1,0x2
sw zero,0x0(s3)
movz v1,a0,s2
or s2,v1,zero
lw v1,-0xc(v0)
addu v1,s7,v1
b 0x002e8fd4
_sw zero,0x8(v1)
(translation_unit "wistream * FUN_002e8df0(wistream *param_1,int *param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int *piVar3;\n  int *piVar4;\n  int *piVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  int *piVar9;\n  int iVar10;\n  int iVar11;\n  undefined1 auStack_38 [4];\n  sentry local_34 [16];\n  \n  std::wistream::sentry::sentry(local_34,param_1,false);\n  if (local_34[0] == (sentry)0x0) {\n    iVar10 = *(int *)param_1;\n    uVar8 = 4;\n  }\n  else {\n    iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);\n    if (iVar10 < 1) {\n      iVar10 = 0x7fffffff;\n    }\n    (*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c);\n                    /* try { // try from 002e8e84 to 002e8e8b has its CatchHandler @ 002e90d0 */\n    piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38);\n    (*(code *)PTR__locale_00433084)(auStack_38);\n    piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);\n    if ((int *)piVar5[2] < (int *)piVar5[3]) {\n      iVar6 = *(int *)piVar5[2];\n    }\n    else {\n                    /* try { // try from 002e9084 to 002e908b has its CatchHandler @ 002e8f74 */\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\n    iVar10 = iVar10 + -1;\n    iVar7 = 0;\n    while (piVar9 = param_2, iVar7 != iVar10) {\n      while( true ) {\n        param_2 = piVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    /* try { // try from 002e8ef0 to 002e8ef7 has its CatchHandler @ 002e90c8 */\n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = piVar9 + 1;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *piVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    /* try { // try from 002e9034 to 002e906f has its CatchHandler @ 002e90c8 */\n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        piVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\nLAB_002e8f4c:\n    piVar9 = param_2;\n    iVar11 = iVar10;\n    if (iVar6 == -1) {\nLAB_002e90a0:\n      iVar10 = *(int *)param_1;\n      uVar8 = 2;\n      *param_2 = 0;\n      if (iVar7 == 0) {\n        uVar8 = 6;\n      }\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n    }\n    else {\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      *piVar9 = 0;\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      uVar8 = 4;\n    }\n  }\nLAB_002e8fd4:\n  std::wios::clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n                   uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14));\n  return param_1;\n}\n\n" (function_definition "wistream * FUN_002e8df0(wistream *param_1,int *param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int *piVar3;\n  int *piVar4;\n  int *piVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  int *piVar9;\n  int iVar10;\n  int iVar11;\n  undefined1 auStack_38 [4];\n  sentry local_34 [16];\n  \n  std::wistream::sentry::sentry(local_34,param_1,false);\n  if (local_34[0] == (sentry)0x0) {\n    iVar10 = *(int *)param_1;\n    uVar8 = 4;\n  }\n  else {\n    iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);\n    if (iVar10 < 1) {\n      iVar10 = 0x7fffffff;\n    }\n    (*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c);\n                    /* try { // try from 002e8e84 to 002e8e8b has its CatchHandler @ 002e90d0 */\n    piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38);\n    (*(code *)PTR__locale_00433084)(auStack_38);\n    piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);\n    if ((int *)piVar5[2] < (int *)piVar5[3]) {\n      iVar6 = *(int *)piVar5[2];\n    }\n    else {\n                    /* try { // try from 002e9084 to 002e908b has its CatchHandler @ 002e8f74 */\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\n    iVar10 = iVar10 + -1;\n    iVar7 = 0;\n    while (piVar9 = param_2, iVar7 != iVar10) {\n      while( true ) {\n        param_2 = piVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    /* try { // try from 002e8ef0 to 002e8ef7 has its CatchHandler @ 002e90c8 */\n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = piVar9 + 1;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *piVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    /* try { // try from 002e9034 to 002e906f has its CatchHandler @ 002e90c8 */\n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        piVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\nLAB_002e8f4c:\n    piVar9 = param_2;\n    iVar11 = iVar10;\n    if (iVar6 == -1) {\nLAB_002e90a0:\n      iVar10 = *(int *)param_1;\n      uVar8 = 2;\n      *param_2 = 0;\n      if (iVar7 == 0) {\n        uVar8 = 6;\n      }\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n    }\n    else {\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      *piVar9 = 0;\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      uVar8 = 4;\n    }\n  }\nLAB_002e8fd4:\n  std::wios::clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n                   uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14));\n  return param_1;\n}" type_identifier (pointer_declarator "* FUN_002e8df0(wistream *param_1,int *param_2)" * (function_declarator "FUN_002e8df0(wistream *param_1,int *param_2)" identifier (parameter_list "(wistream *param_1,int *param_2)" ( (parameter_declaration "wistream *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int *piVar3;\n  int *piVar4;\n  int *piVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  int *piVar9;\n  int iVar10;\n  int iVar11;\n  undefined1 auStack_38 [4];\n  sentry local_34 [16];\n  \n  std::wistream::sentry::sentry(local_34,param_1,false);\n  if (local_34[0] == (sentry)0x0) {\n    iVar10 = *(int *)param_1;\n    uVar8 = 4;\n  }\n  else {\n    iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);\n    if (iVar10 < 1) {\n      iVar10 = 0x7fffffff;\n    }\n    (*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c);\n                    /* try { // try from 002e8e84 to 002e8e8b has its CatchHandler @ 002e90d0 */\n    piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38);\n    (*(code *)PTR__locale_00433084)(auStack_38);\n    piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);\n    if ((int *)piVar5[2] < (int *)piVar5[3]) {\n      iVar6 = *(int *)piVar5[2];\n    }\n    else {\n                    /* try { // try from 002e9084 to 002e908b has its CatchHandler @ 002e8f74 */\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\n    iVar10 = iVar10 + -1;\n    iVar7 = 0;\n    while (piVar9 = param_2, iVar7 != iVar10) {\n      while( true ) {\n        param_2 = piVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    /* try { // try from 002e8ef0 to 002e8ef7 has its CatchHandler @ 002e90c8 */\n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = piVar9 + 1;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *piVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    /* try { // try from 002e9034 to 002e906f has its CatchHandler @ 002e90c8 */\n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        piVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\nLAB_002e8f4c:\n    piVar9 = param_2;\n    iVar11 = iVar10;\n    if (iVar6 == -1) {\nLAB_002e90a0:\n      iVar10 = *(int *)param_1;\n      uVar8 = 2;\n      *param_2 = 0;\n      if (iVar7 == 0) {\n        uVar8 = 6;\n      }\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n    }\n    else {\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      *piVar9 = 0;\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      uVar8 = 4;\n    }\n  }\nLAB_002e8fd4:\n  std::wios::clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n                   uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14));\n  return param_1;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined1 auStack_38 [4];" type_identifier (array_declarator "auStack_38 [4]" identifier [ number_literal ]) ;) (declaration "sentry local_34 [16];" type_identifier (array_declarator "local_34 [16]" identifier [ number_literal ]) ;) (labeled_statement "std::wistream::sentry::sentry(local_34,param_1,false);" statement_identifier : (ERROR ":" :) (labeled_statement "wistream::sentry::sentry(local_34,param_1,false);" statement_identifier : (ERROR ":" :) (labeled_statement "sentry::sentry(local_34,param_1,false);" statement_identifier : (ERROR ":" :) (expression_statement "sentry(local_34,param_1,false);" (call_expression "sentry(local_34,param_1,false)" identifier (argument_list "(local_34,param_1,false)" ( identifier , identifier , false ))) ;)))) (if_statement "if (local_34[0] == (sentry)0x0) {\n    iVar10 = *(int *)param_1;\n    uVar8 = 4;\n  }\n  else {\n    iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);\n    if (iVar10 < 1) {\n      iVar10 = 0x7fffffff;\n    }\n    (*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c);\n                    /* try { // try from 002e8e84 to 002e8e8b has its CatchHandler @ 002e90d0 */\n    piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38);\n    (*(code *)PTR__locale_00433084)(auStack_38);\n    piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);\n    if ((int *)piVar5[2] < (int *)piVar5[3]) {\n      iVar6 = *(int *)piVar5[2];\n    }\n    else {\n                    /* try { // try from 002e9084 to 002e908b has its CatchHandler @ 002e8f74 */\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\n    iVar10 = iVar10 + -1;\n    iVar7 = 0;\n    while (piVar9 = param_2, iVar7 != iVar10) {\n      while( true ) {\n        param_2 = piVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    /* try { // try from 002e8ef0 to 002e8ef7 has its CatchHandler @ 002e90c8 */\n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = piVar9 + 1;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *piVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    /* try { // try from 002e9034 to 002e906f has its CatchHandler @ 002e90c8 */\n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        piVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\nLAB_002e8f4c:\n    piVar9 = param_2;\n    iVar11 = iVar10;\n    if (iVar6 == -1) {\nLAB_002e90a0:\n      iVar10 = *(int *)param_1;\n      uVar8 = 2;\n      *param_2 = 0;\n      if (iVar7 == 0) {\n        uVar8 = 6;\n      }\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n    }\n    else {\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      *piVar9 = 0;\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      uVar8 = 4;\n    }\n  }" if (parenthesized_expression "(local_34[0] == (sentry)0x0)" ( (binary_expression "local_34[0] == (sentry)0x0" (subscript_expression "local_34[0]" identifier [ number_literal ]) == (cast_expression "(sentry)0x0" ( (type_descriptor "sentry" type_identifier) ) number_literal)) )) (compound_statement "{\n    iVar10 = *(int *)param_1;\n    uVar8 = 4;\n  }" { (expression_statement "iVar10 = *(int *)param_1;" (assignment_expression "iVar10 = *(int *)param_1" identifier = (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar8 = 4;" (assignment_expression "uVar8 = 4" identifier = number_literal) ;) }) (else_clause "else {\n    iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);\n    if (iVar10 < 1) {\n      iVar10 = 0x7fffffff;\n    }\n    (*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c);\n                    /* try { // try from 002e8e84 to 002e8e8b has its CatchHandler @ 002e90d0 */\n    piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38);\n    (*(code *)PTR__locale_00433084)(auStack_38);\n    piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);\n    if ((int *)piVar5[2] < (int *)piVar5[3]) {\n      iVar6 = *(int *)piVar5[2];\n    }\n    else {\n                    /* try { // try from 002e9084 to 002e908b has its CatchHandler @ 002e8f74 */\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\n    iVar10 = iVar10 + -1;\n    iVar7 = 0;\n    while (piVar9 = param_2, iVar7 != iVar10) {\n      while( true ) {\n        param_2 = piVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    /* try { // try from 002e8ef0 to 002e8ef7 has its CatchHandler @ 002e90c8 */\n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = piVar9 + 1;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *piVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    /* try { // try from 002e9034 to 002e906f has its CatchHandler @ 002e90c8 */\n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        piVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\nLAB_002e8f4c:\n    piVar9 = param_2;\n    iVar11 = iVar10;\n    if (iVar6 == -1) {\nLAB_002e90a0:\n      iVar10 = *(int *)param_1;\n      uVar8 = 2;\n      *param_2 = 0;\n      if (iVar7 == 0) {\n        uVar8 = 6;\n      }\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n    }\n    else {\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      *piVar9 = 0;\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      uVar8 = 4;\n    }\n  }" else (compound_statement "{\n    iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);\n    if (iVar10 < 1) {\n      iVar10 = 0x7fffffff;\n    }\n    (*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c);\n                    /* try { // try from 002e8e84 to 002e8e8b has its CatchHandler @ 002e90d0 */\n    piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38);\n    (*(code *)PTR__locale_00433084)(auStack_38);\n    piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);\n    if ((int *)piVar5[2] < (int *)piVar5[3]) {\n      iVar6 = *(int *)piVar5[2];\n    }\n    else {\n                    /* try { // try from 002e9084 to 002e908b has its CatchHandler @ 002e8f74 */\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\n    iVar10 = iVar10 + -1;\n    iVar7 = 0;\n    while (piVar9 = param_2, iVar7 != iVar10) {\n      while( true ) {\n        param_2 = piVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    /* try { // try from 002e8ef0 to 002e8ef7 has its CatchHandler @ 002e90c8 */\n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = piVar9 + 1;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *piVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    /* try { // try from 002e9034 to 002e906f has its CatchHandler @ 002e90c8 */\n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        piVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\nLAB_002e8f4c:\n    piVar9 = param_2;\n    iVar11 = iVar10;\n    if (iVar6 == -1) {\nLAB_002e90a0:\n      iVar10 = *(int *)param_1;\n      uVar8 = 2;\n      *param_2 = 0;\n      if (iVar7 == 0) {\n        uVar8 = 6;\n      }\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n    }\n    else {\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      *piVar9 = 0;\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      uVar8 = 4;\n    }\n  }" { (expression_statement "iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);" (assignment_expression "iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8)" identifier = (pointer_expression "*(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8)" * (cast_expression "(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8)" ( (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc) + 8" (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) ))))) ;) (if_statement "if (iVar10 < 1) {\n      iVar10 = 0x7fffffff;\n    }" if (parenthesized_expression "(iVar10 < 1)" ( (binary_expression "iVar10 < 1" identifier < number_literal) )) (compound_statement "{\n      iVar10 = 0x7fffffff;\n    }" { (expression_statement "iVar10 = 0x7fffffff;" (assignment_expression "iVar10 = 0x7fffffff" identifier = number_literal) ;) })) (expression_statement "(*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c);" (call_expression "(*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c)" (parenthesized_expression "(*(code *)PTR_locale_004338b0)" ( (pointer_expression "*(code *)PTR_locale_004338b0" * (cast_expression "(code *)PTR_locale_004338b0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c)" ( identifier , (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c" (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) ))) ;) comment (expression_statement "piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38);" (assignment_expression "piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38)" identifier = (cast_expression "(int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38)" (parenthesized_expression "(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)" ( (binary_expression "*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8" (binary_expression "*(code *)PTR_use_facet<std_ctype" (pointer_expression "*(code *)PTR_use_facet" * (cast_expression "(code *)PTR_use_facet" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) < identifier) < (binary_expression "wchar_t>>_00433ac8" identifier >> identifier)) )) (argument_list "(auStack_38)" ( identifier ))))) ;) (expression_statement "(*(code *)PTR__locale_00433084)(auStack_38);" (call_expression "(*(code *)PTR__locale_00433084)(auStack_38)" (parenthesized_expression "(*(code *)PTR__locale_00433084)" ( (pointer_expression "*(code *)PTR__locale_00433084" * (cast_expression "(code *)PTR__locale_00433084" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_38)" ( identifier ))) ;) (expression_statement "piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);" (assignment_expression "piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c)" identifier = (pointer_expression "*(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c)" * (cast_expression "(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c)" ( (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c" (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) ))))) ;) (if_statement "if ((int *)piVar5[2] < (int *)piVar5[3]) {\n      iVar6 = *(int *)piVar5[2];\n    }\n    else {\n                    /* try { // try from 002e9084 to 002e908b has its CatchHandler @ 002e8f74 */\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }" if (parenthesized_expression "((int *)piVar5[2] < (int *)piVar5[3])" ( (binary_expression "(int *)piVar5[2] < (int *)piVar5[3]" (cast_expression "(int *)piVar5[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[2]" identifier [ number_literal ])) < (cast_expression "(int *)piVar5[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar6 = *(int *)piVar5[2];\n    }" { (expression_statement "iVar6 = *(int *)piVar5[2];" (assignment_expression "iVar6 = *(int *)piVar5[2]" identifier = (pointer_expression "*(int *)piVar5[2]" * (cast_expression "(int *)piVar5[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n                    /* try { // try from 002e9084 to 002e908b has its CatchHandler @ 002e8f74 */\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }" else (compound_statement "{\n                    /* try { // try from 002e9084 to 002e908b has its CatchHandler @ 002e8f74 */\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }" { comment (expression_statement "iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);" (assignment_expression "iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5)" identifier = (call_expression "(**(code **)(*piVar5 + 0x24))(piVar5)" (parenthesized_expression "(**(code **)(*piVar5 + 0x24))" ( (pointer_expression "**(code **)(*piVar5 + 0x24)" * (pointer_expression "*(code **)(*piVar5 + 0x24)" * (cast_expression "(code **)(*piVar5 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 0x24)" ( (binary_expression "*piVar5 + 0x24" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(piVar5)" ( identifier )))) ;) }))) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (while_statement "while (piVar9 = param_2, iVar7 != iVar10) {\n      while( true ) {\n        param_2 = piVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    /* try { // try from 002e8ef0 to 002e8ef7 has its CatchHandler @ 002e90c8 */\n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = piVar9 + 1;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *piVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    /* try { // try from 002e9034 to 002e906f has its CatchHandler @ 002e90c8 */\n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        piVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }" while (parenthesized_expression "(piVar9 = param_2, iVar7 != iVar10)" ( (comma_expression "piVar9 = param_2, iVar7 != iVar10" (assignment_expression "piVar9 = param_2" identifier = identifier) , (binary_expression "iVar7 != iVar10" identifier != identifier)) )) (compound_statement "{\n      while( true ) {\n        param_2 = piVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    /* try { // try from 002e8ef0 to 002e8ef7 has its CatchHandler @ 002e90c8 */\n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = piVar9 + 1;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *piVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    /* try { // try from 002e9034 to 002e906f has its CatchHandler @ 002e90c8 */\n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        piVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }" { (while_statement "while( true ) {\n        param_2 = piVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    /* try { // try from 002e8ef0 to 002e8ef7 has its CatchHandler @ 002e90c8 */\n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = piVar9 + 1;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *piVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    /* try { // try from 002e9034 to 002e906f has its CatchHandler @ 002e90c8 */\n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        piVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        param_2 = piVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    /* try { // try from 002e8ef0 to 002e8ef7 has its CatchHandler @ 002e90c8 */\n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = piVar9 + 1;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *piVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    /* try { // try from 002e9034 to 002e906f has its CatchHandler @ 002e90c8 */\n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        piVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }" { (expression_statement "param_2 = piVar9;" (assignment_expression "param_2 = piVar9" identifier = identifier) ;) (if_statement "if (iVar6 == -1) goto LAB_002e90a0;" if (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) (goto_statement "goto LAB_002e90a0;" goto statement_identifier ;)) comment (expression_statement "iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);" (assignment_expression "iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6)" identifier = (call_expression "(**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6)" (parenthesized_expression "(**(code **)(*piVar1 + 8))" ( (pointer_expression "**(code **)(*piVar1 + 8)" * (pointer_expression "*(code **)(*piVar1 + 8)" * (cast_expression "(code **)(*piVar1 + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar1 + 8)" ( (binary_expression "*piVar1 + 8" (pointer_expression "*piVar1" * identifier) + number_literal) ))))) )) (argument_list "(piVar1,0x20,iVar6)" ( identifier , number_literal , identifier )))) ;) (expression_statement "iVar11 = iVar7;" (assignment_expression "iVar11 = iVar7" identifier = identifier) ;) (if_statement "if (iVar2 != 0) goto LAB_002e8f54;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_002e8f54;" goto statement_identifier ;)) (expression_statement "piVar4 = (int *)piVar5[2];" (assignment_expression "piVar4 = (int *)piVar5[2]" identifier = (cast_expression "(int *)piVar5[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[2]" identifier [ number_literal ]))) ;) (expression_statement "param_2 = piVar9 + 1;" (assignment_expression "param_2 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (expression_statement "piVar3 = (int *)piVar5[3];" (assignment_expression "piVar3 = (int *)piVar5[3]" identifier = (cast_expression "(int *)piVar5[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[3]" identifier [ number_literal ]))) ;) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "*piVar9 = iVar6;" (assignment_expression "*piVar9 = iVar6" (pointer_expression "*piVar9" * identifier) = identifier) ;) (if_statement "if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    /* try { // try from 002e9034 to 002e906f has its CatchHandler @ 002e90c8 */\n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }" if (parenthesized_expression "(piVar4 < piVar3)" ( (binary_expression "piVar4 < piVar3" identifier < identifier) )) (compound_statement "{\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }" { (expression_statement "iVar6 = *piVar4;" (assignment_expression "iVar6 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "piVar5[2] = (int)(piVar4 + 1);" (assignment_expression "piVar5[2] = (int)(piVar4 + 1)" (subscript_expression "piVar5[2]" identifier [ number_literal ]) = (cast_expression "(int)(piVar4 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar4 + 1)" ( (binary_expression "piVar4 + 1" identifier + number_literal) )))) ;) }) (else_clause "else {\n                    /* try { // try from 002e9034 to 002e906f has its CatchHandler @ 002e90c8 */\n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }" else (compound_statement "{\n                    /* try { // try from 002e9034 to 002e906f has its CatchHandler @ 002e90c8 */\n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }" { comment (expression_statement "iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);" (assignment_expression "iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5)" identifier = (call_expression "(**(code **)(*piVar5 + 0x28))(piVar5)" (parenthesized_expression "(**(code **)(*piVar5 + 0x28))" ( (pointer_expression "**(code **)(*piVar5 + 0x28)" * (pointer_expression "*(code **)(*piVar5 + 0x28)" * (cast_expression "(code **)(*piVar5 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 0x28)" ( (binary_expression "*piVar5 + 0x28" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(piVar5)" ( identifier )))) ;) }))) (if_statement "if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }" if (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) (compound_statement "{\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }" { (expression_statement "iVar10 = *(int *)param_1;" (assignment_expression "iVar10 = *(int *)param_1" identifier = (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar8 = 2;" (assignment_expression "uVar8 = 2" identifier = number_literal) ;) (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" * identifier) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0" (pointer_expression "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8)" * (cast_expression "(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(int *)(iVar10 + -0xc) + 8)" ( (binary_expression "param_1 + *(int *)(iVar10 + -0xc) + 8" (binary_expression "param_1 + *(int *)(iVar10 + -0xc)" identifier + (pointer_expression "*(int *)(iVar10 + -0xc)" * (cast_expression "(int *)(iVar10 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + -0xc)" ( (binary_expression "iVar10 + -0xc" identifier + number_literal) ))))) + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_002e8fd4;" goto statement_identifier ;) })) (if_statement "if ((int *)piVar5[3] <= (int *)piVar5[2]) break;" if (parenthesized_expression "((int *)piVar5[3] <= (int *)piVar5[2])" ( (binary_expression "(int *)piVar5[3] <= (int *)piVar5[2]" (cast_expression "(int *)piVar5[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[3]" identifier [ number_literal ])) <= (cast_expression "(int *)piVar5[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[2]" identifier [ number_literal ]))) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = *(int *)piVar5[2];" (assignment_expression "iVar6 = *(int *)piVar5[2]" identifier = (pointer_expression "*(int *)piVar5[2]" * (cast_expression "(int *)piVar5[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[2]" identifier [ number_literal ])))) ;) (expression_statement "piVar9 = param_2;" (assignment_expression "piVar9 = param_2" identifier = identifier) ;) (if_statement "if (iVar7 == iVar10) goto LAB_002e8f4c;" if (parenthesized_expression "(iVar7 == iVar10)" ( (binary_expression "iVar7 == iVar10" identifier == identifier) )) (goto_statement "goto LAB_002e8f4c;" goto statement_identifier ;)) })) (expression_statement "iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);" (assignment_expression "iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5)" identifier = (call_expression "(**(code **)(*piVar5 + 0x24))(piVar5)" (parenthesized_expression "(**(code **)(*piVar5 + 0x24))" ( (pointer_expression "**(code **)(*piVar5 + 0x24)" * (pointer_expression "*(code **)(*piVar5 + 0x24)" * (cast_expression "(code **)(*piVar5 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 0x24)" ( (binary_expression "*piVar5 + 0x24" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(piVar5)" ( identifier )))) ;) })) (labeled_statement "LAB_002e8f4c:\n    piVar9 = param_2;" statement_identifier : (expression_statement "piVar9 = param_2;" (assignment_expression "piVar9 = param_2" identifier = identifier) ;)) (expression_statement "iVar11 = iVar10;" (assignment_expression "iVar11 = iVar10" identifier = identifier) ;) (if_statement "if (iVar6 == -1) {\nLAB_002e90a0:\n      iVar10 = *(int *)param_1;\n      uVar8 = 2;\n      *param_2 = 0;\n      if (iVar7 == 0) {\n        uVar8 = 6;\n      }\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n    }\n    else {\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      *piVar9 = 0;\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      uVar8 = 4;\n    }" if (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) (compound_statement "{\nLAB_002e90a0:\n      iVar10 = *(int *)param_1;\n      uVar8 = 2;\n      *param_2 = 0;\n      if (iVar7 == 0) {\n        uVar8 = 6;\n      }\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n    }" { (labeled_statement "LAB_002e90a0:\n      iVar10 = *(int *)param_1;" statement_identifier : (expression_statement "iVar10 = *(int *)param_1;" (assignment_expression "iVar10 = *(int *)param_1" identifier = (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;)) (expression_statement "uVar8 = 2;" (assignment_expression "uVar8 = 2" identifier = number_literal) ;) (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" * identifier) = number_literal) ;) (if_statement "if (iVar7 == 0) {\n        uVar8 = 6;\n      }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar8 = 6;\n      }" { (expression_statement "uVar8 = 6;" (assignment_expression "uVar8 = 6" identifier = number_literal) ;) })) (expression_statement "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0" (pointer_expression "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8)" * (cast_expression "(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(int *)(iVar10 + -0xc) + 8)" ( (binary_expression "param_1 + *(int *)(iVar10 + -0xc) + 8" (binary_expression "param_1 + *(int *)(iVar10 + -0xc)" identifier + (pointer_expression "*(int *)(iVar10 + -0xc)" * (cast_expression "(int *)(iVar10 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + -0xc)" ( (binary_expression "iVar10 + -0xc" identifier + number_literal) ))))) + number_literal) )))) = number_literal) ;) }) (else_clause "else {\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      *piVar9 = 0;\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      uVar8 = 4;\n    }" else (compound_statement "{\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      *piVar9 = 0;\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      uVar8 = 4;\n    }" { (labeled_statement "LAB_002e8f54:\n      iVar10 = *(int *)param_1;" statement_identifier : (expression_statement "iVar10 = *(int *)param_1;" (assignment_expression "iVar10 = *(int *)param_1" identifier = (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;)) (expression_statement "*piVar9 = 0;" (assignment_expression "*piVar9 = 0" (pointer_expression "*piVar9" * identifier) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0" (pointer_expression "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8)" * (cast_expression "(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(int *)(iVar10 + -0xc) + 8)" ( (binary_expression "param_1 + *(int *)(iVar10 + -0xc) + 8" (binary_expression "param_1 + *(int *)(iVar10 + -0xc)" identifier + (pointer_expression "*(int *)(iVar10 + -0xc)" * (cast_expression "(int *)(iVar10 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + -0xc)" ( (binary_expression "iVar10 + -0xc" identifier + number_literal) ))))) + number_literal) )))) = number_literal) ;) (if_statement "if (iVar11 != 0) {\n        return param_1;\n      }" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (compound_statement "{\n        return param_1;\n      }" { (return_statement "return param_1;" return identifier ;) })) (expression_statement "uVar8 = 4;" (assignment_expression "uVar8 = 4" identifier = number_literal) ;) }))) }))) (labeled_statement "LAB_002e8fd4:\n  std::wios::clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n                   uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14));" statement_identifier : (labeled_statement "std::wios::clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n                   uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14));" statement_identifier : (ERROR ":" :) (labeled_statement "wios::clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n                   uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14));" statement_identifier : (ERROR ":" :) (expression_statement "clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n                   uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14));" (call_expression "clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n                   uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14))" identifier (argument_list "((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n                   uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14))" ( (cast_expression "(wios *)(param_1 + *(int *)(iVar10 + -0xc))" ( (type_descriptor "wios *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(int *)(iVar10 + -0xc))" ( (binary_expression "param_1 + *(int *)(iVar10 + -0xc)" identifier + (pointer_expression "*(int *)(iVar10 + -0xc)" * (cast_expression "(int *)(iVar10 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + -0xc)" ( (binary_expression "iVar10 + -0xc" identifier + number_literal) ))))) ))) , (binary_expression "uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14)" identifier | (pointer_expression "*(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14)" * (cast_expression "(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14)" ( (binary_expression "(wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14" (cast_expression "(wios *)(param_1 + *(int *)(iVar10 + -0xc))" ( (type_descriptor "wios *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(int *)(iVar10 + -0xc))" ( (binary_expression "param_1 + *(int *)(iVar10 + -0xc)" identifier + (pointer_expression "*(int *)(iVar10 + -0xc)" * (cast_expression "(int *)(iVar10 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + -0xc)" ( (binary_expression "iVar10 + -0xc" identifier + number_literal) ))))) ))) + number_literal) ))))) ))) ;)))) (return_statement "return param_1;" return identifier ;) })))
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n/* std::wistream& std::TEMPNAMEPLACEHOLDERVALUE(std::wistream&, wchar_t*) */\n\nwistream * std::operator>>(wistream *param_1,wchar_t *param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int *piVar3;\n  int *piVar4;\n  int *piVar5;\n  int iVar6;\n  int iVar7;\n  _Ios_Iostate _Var8;\n  wchar_t *pwVar9;\n  int iVar10;\n  int iVar11;\n  undefined1 auStack_38 [4];\n  sentry local_34 [16];\n  \n  wistream::sentry::sentry(local_34,param_1,false);\n  if (local_34[0] == (sentry)0x0) {\n    iVar10 = *(int *)param_1;\n    _Var8 = _S_failbit;\n  }\n  else {\n    iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);\n    if (iVar10 < 1) {\n      iVar10 = 0x7fffffff;\n    }\n    (*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c);\n                    /* try { // try from 002e8e84 to 002e8e8b has its CatchHandler @ 002e90d0 */\n    piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38);\n    (*(code *)PTR__locale_00433084)(auStack_38);\n    piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);\n    if ((int *)piVar5[2] < (int *)piVar5[3]) {\n      iVar6 = *(int *)piVar5[2];\n    }\n    else {\n                    /* try { // try from 002e9084 to 002e908b has its CatchHandler @ 002e8f74 */\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\n    iVar10 = iVar10 + -1;\n    iVar7 = 0;\n    while (pwVar9 = param_2, iVar7 != iVar10) {\n      while( true ) {\n        param_2 = pwVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    /* try { // try from 002e8ef0 to 002e8ef7 has its CatchHandler @ 002e90c8 */\n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = pwVar9 + 2;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *(int *)pwVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    /* try { // try from 002e9034 to 002e906f has its CatchHandler @ 002e90c8 */\n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          _Var8 = _S_eofbit;\n          param_2[0] = L'\0';\n          param_2[1] = L'\0';\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        pwVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\nLAB_002e8f4c:\n    pwVar9 = param_2;\n    iVar11 = iVar10;\n    if (iVar6 == -1) {\nLAB_002e90a0:\n      iVar10 = *(int *)param_1;\n      _Var8 = _S_eofbit;\n      param_2[0] = L'\0';\n      param_2[1] = L'\0';\n      if (iVar7 == 0) {\n        _Var8 = _S_failbit|_S_eofbit;\n      }\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n    }\n    else {\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      pwVar9[0] = L'\0';\n      pwVar9[1] = L'\0';\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      _Var8 = _S_failbit;\n    }\n  }\nLAB_002e8fd4:\n  wios::clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n              _Var8 | *(_Ios_Iostate *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14));\n  return param_1;\n}\n\n" comment comment (ERROR "wistream * std::operator>>(wistream *param_1,wchar_t *param_2)" (binary_expression "wistream * std::operator>>(wistream *param_1,wchar_t *param_2)" (binary_expression "wistream * std" identifier * identifier) (ERROR "::operator" : : identifier) >> (parenthesized_expression "(wistream *param_1,wchar_t *param_2)" ( (comma_expression "wistream *param_1,wchar_t *param_2" (binary_expression "wistream *param_1" identifier * identifier) , (binary_expression "wchar_t *param_2" identifier * identifier)) )))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int *piVar3;\n  int *piVar4;\n  int *piVar5;\n  int iVar6;\n  int iVar7;\n  _Ios_Iostate _Var8;\n  wchar_t *pwVar9;\n  int iVar10;\n  int iVar11;\n  undefined1 auStack_38 [4];\n  sentry local_34 [16];\n  \n  wistream::sentry::sentry(local_34,param_1,false);\n  if (local_34[0] == (sentry)0x0) {\n    iVar10 = *(int *)param_1;\n    _Var8 = _S_failbit;\n  }\n  else {\n    iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);\n    if (iVar10 < 1) {\n      iVar10 = 0x7fffffff;\n    }\n    (*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c);\n                    /* try { // try from 002e8e84 to 002e8e8b has its CatchHandler @ 002e90d0 */\n    piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38);\n    (*(code *)PTR__locale_00433084)(auStack_38);\n    piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);\n    if ((int *)piVar5[2] < (int *)piVar5[3]) {\n      iVar6 = *(int *)piVar5[2];\n    }\n    else {\n                    /* try { // try from 002e9084 to 002e908b has its CatchHandler @ 002e8f74 */\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\n    iVar10 = iVar10 + -1;\n    iVar7 = 0;\n    while (pwVar9 = param_2, iVar7 != iVar10) {\n      while( true ) {\n        param_2 = pwVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    /* try { // try from 002e8ef0 to 002e8ef7 has its CatchHandler @ 002e90c8 */\n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = pwVar9 + 2;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *(int *)pwVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    /* try { // try from 002e9034 to 002e906f has its CatchHandler @ 002e90c8 */\n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          _Var8 = _S_eofbit;\n          param_2[0] = L'\0';\n          param_2[1] = L'\0';\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        pwVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\nLAB_002e8f4c:\n    pwVar9 = param_2;\n    iVar11 = iVar10;\n    if (iVar6 == -1) {\nLAB_002e90a0:\n      iVar10 = *(int *)param_1;\n      _Var8 = _S_eofbit;\n      param_2[0] = L'\0';\n      param_2[1] = L'\0';\n      if (iVar7 == 0) {\n        _Var8 = _S_failbit|_S_eofbit;\n      }\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n    }\n    else {\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      pwVar9[0] = L'\0';\n      pwVar9[1] = L'\0';\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      _Var8 = _S_failbit;\n    }\n  }\nLAB_002e8fd4:\n  wios::clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n              _Var8 | *(_Ios_Iostate *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14));\n  return param_1;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "_Ios_Iostate _Var8;" type_identifier identifier ;) (declaration "wchar_t *pwVar9;" type_identifier (pointer_declarator "*pwVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined1 auStack_38 [4];" type_identifier (array_declarator "auStack_38 [4]" identifier [ number_literal ]) ;) (declaration "sentry local_34 [16];" type_identifier (array_declarator "local_34 [16]" identifier [ number_literal ]) ;) (labeled_statement "wistream::sentry::sentry(local_34,param_1,false);" statement_identifier : (ERROR ":" :) (labeled_statement "sentry::sentry(local_34,param_1,false);" statement_identifier : (ERROR ":" :) (expression_statement "sentry(local_34,param_1,false);" (call_expression "sentry(local_34,param_1,false)" identifier (argument_list "(local_34,param_1,false)" ( identifier , identifier , false ))) ;))) (if_statement "if (local_34[0] == (sentry)0x0) {\n    iVar10 = *(int *)param_1;\n    _Var8 = _S_failbit;\n  }\n  else {\n    iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);\n    if (iVar10 < 1) {\n      iVar10 = 0x7fffffff;\n    }\n    (*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c);\n                    /* try { // try from 002e8e84 to 002e8e8b has its CatchHandler @ 002e90d0 */\n    piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38);\n    (*(code *)PTR__locale_00433084)(auStack_38);\n    piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);\n    if ((int *)piVar5[2] < (int *)piVar5[3]) {\n      iVar6 = *(int *)piVar5[2];\n    }\n    else {\n                    /* try { // try from 002e9084 to 002e908b has its CatchHandler @ 002e8f74 */\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\n    iVar10 = iVar10 + -1;\n    iVar7 = 0;\n    while (pwVar9 = param_2, iVar7 != iVar10) {\n      while( true ) {\n        param_2 = pwVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    /* try { // try from 002e8ef0 to 002e8ef7 has its CatchHandler @ 002e90c8 */\n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = pwVar9 + 2;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *(int *)pwVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    /* try { // try from 002e9034 to 002e906f has its CatchHandler @ 002e90c8 */\n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          _Var8 = _S_eofbit;\n          param_2[0] = L'\0';\n          param_2[1] = L'\0';\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        pwVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\nLAB_002e8f4c:\n    pwVar9 = param_2;\n    iVar11 = iVar10;\n    if (iVar6 == -1) {\nLAB_002e90a0:\n      iVar10 = *(int *)param_1;\n      _Var8 = _S_eofbit;\n      param_2[0] = L'\0';\n      param_2[1] = L'\0';\n      if (iVar7 == 0) {\n        _Var8 = _S_failbit|_S_eofbit;\n      }\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n    }\n    else {\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      pwVar9[0] = L'\0';\n      pwVar9[1] = L'\0';\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      _Var8 = _S_failbit;\n    }\n  }" if (parenthesized_expression "(local_34[0] == (sentry)0x0)" ( (binary_expression "local_34[0] == (sentry)0x0" (subscript_expression "local_34[0]" identifier [ number_literal ]) == (cast_expression "(sentry)0x0" ( (type_descriptor "sentry" type_identifier) ) number_literal)) )) (compound_statement "{\n    iVar10 = *(int *)param_1;\n    _Var8 = _S_failbit;\n  }" { (expression_statement "iVar10 = *(int *)param_1;" (assignment_expression "iVar10 = *(int *)param_1" identifier = (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "_Var8 = _S_failbit;" (assignment_expression "_Var8 = _S_failbit" identifier = identifier) ;) }) (else_clause "else {\n    iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);\n    if (iVar10 < 1) {\n      iVar10 = 0x7fffffff;\n    }\n    (*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c);\n                    /* try { // try from 002e8e84 to 002e8e8b has its CatchHandler @ 002e90d0 */\n    piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38);\n    (*(code *)PTR__locale_00433084)(auStack_38);\n    piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);\n    if ((int *)piVar5[2] < (int *)piVar5[3]) {\n      iVar6 = *(int *)piVar5[2];\n    }\n    else {\n                    /* try { // try from 002e9084 to 002e908b has its CatchHandler @ 002e8f74 */\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\n    iVar10 = iVar10 + -1;\n    iVar7 = 0;\n    while (pwVar9 = param_2, iVar7 != iVar10) {\n      while( true ) {\n        param_2 = pwVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    /* try { // try from 002e8ef0 to 002e8ef7 has its CatchHandler @ 002e90c8 */\n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = pwVar9 + 2;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *(int *)pwVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    /* try { // try from 002e9034 to 002e906f has its CatchHandler @ 002e90c8 */\n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          _Var8 = _S_eofbit;\n          param_2[0] = L'\0';\n          param_2[1] = L'\0';\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        pwVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\nLAB_002e8f4c:\n    pwVar9 = param_2;\n    iVar11 = iVar10;\n    if (iVar6 == -1) {\nLAB_002e90a0:\n      iVar10 = *(int *)param_1;\n      _Var8 = _S_eofbit;\n      param_2[0] = L'\0';\n      param_2[1] = L'\0';\n      if (iVar7 == 0) {\n        _Var8 = _S_failbit|_S_eofbit;\n      }\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n    }\n    else {\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      pwVar9[0] = L'\0';\n      pwVar9[1] = L'\0';\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      _Var8 = _S_failbit;\n    }\n  }" else (compound_statement "{\n    iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);\n    if (iVar10 < 1) {\n      iVar10 = 0x7fffffff;\n    }\n    (*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c);\n                    /* try { // try from 002e8e84 to 002e8e8b has its CatchHandler @ 002e90d0 */\n    piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38);\n    (*(code *)PTR__locale_00433084)(auStack_38);\n    piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);\n    if ((int *)piVar5[2] < (int *)piVar5[3]) {\n      iVar6 = *(int *)piVar5[2];\n    }\n    else {\n                    /* try { // try from 002e9084 to 002e908b has its CatchHandler @ 002e8f74 */\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\n    iVar10 = iVar10 + -1;\n    iVar7 = 0;\n    while (pwVar9 = param_2, iVar7 != iVar10) {\n      while( true ) {\n        param_2 = pwVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    /* try { // try from 002e8ef0 to 002e8ef7 has its CatchHandler @ 002e90c8 */\n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = pwVar9 + 2;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *(int *)pwVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    /* try { // try from 002e9034 to 002e906f has its CatchHandler @ 002e90c8 */\n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          _Var8 = _S_eofbit;\n          param_2[0] = L'\0';\n          param_2[1] = L'\0';\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        pwVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\nLAB_002e8f4c:\n    pwVar9 = param_2;\n    iVar11 = iVar10;\n    if (iVar6 == -1) {\nLAB_002e90a0:\n      iVar10 = *(int *)param_1;\n      _Var8 = _S_eofbit;\n      param_2[0] = L'\0';\n      param_2[1] = L'\0';\n      if (iVar7 == 0) {\n        _Var8 = _S_failbit|_S_eofbit;\n      }\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n    }\n    else {\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      pwVar9[0] = L'\0';\n      pwVar9[1] = L'\0';\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      _Var8 = _S_failbit;\n    }\n  }" { (expression_statement "iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);" (assignment_expression "iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8)" identifier = (pointer_expression "*(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8)" * (cast_expression "(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8)" ( (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc) + 8" (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) ))))) ;) (if_statement "if (iVar10 < 1) {\n      iVar10 = 0x7fffffff;\n    }" if (parenthesized_expression "(iVar10 < 1)" ( (binary_expression "iVar10 < 1" identifier < number_literal) )) (compound_statement "{\n      iVar10 = 0x7fffffff;\n    }" { (expression_statement "iVar10 = 0x7fffffff;" (assignment_expression "iVar10 = 0x7fffffff" identifier = number_literal) ;) })) (expression_statement "(*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c);" (call_expression "(*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c)" (parenthesized_expression "(*(code *)PTR_locale_004338b0)" ( (pointer_expression "*(code *)PTR_locale_004338b0" * (cast_expression "(code *)PTR_locale_004338b0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c)" ( identifier , (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c" (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) ))) ;) comment (expression_statement "piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38);" (assignment_expression "piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38)" identifier = (cast_expression "(int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38)" (parenthesized_expression "(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)" ( (binary_expression "*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8" (binary_expression "*(code *)PTR_use_facet<std_ctype" (pointer_expression "*(code *)PTR_use_facet" * (cast_expression "(code *)PTR_use_facet" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) < identifier) < (binary_expression "wchar_t>>_00433ac8" identifier >> identifier)) )) (argument_list "(auStack_38)" ( identifier ))))) ;) (expression_statement "(*(code *)PTR__locale_00433084)(auStack_38);" (call_expression "(*(code *)PTR__locale_00433084)(auStack_38)" (parenthesized_expression "(*(code *)PTR__locale_00433084)" ( (pointer_expression "*(code *)PTR__locale_00433084" * (cast_expression "(code *)PTR__locale_00433084" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_38)" ( identifier ))) ;) (expression_statement "piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);" (assignment_expression "piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c)" identifier = (pointer_expression "*(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c)" * (cast_expression "(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c)" ( (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c" (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) ))))) ;) (if_statement "if ((int *)piVar5[2] < (int *)piVar5[3]) {\n      iVar6 = *(int *)piVar5[2];\n    }\n    else {\n                    /* try { // try from 002e9084 to 002e908b has its CatchHandler @ 002e8f74 */\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }" if (parenthesized_expression "((int *)piVar5[2] < (int *)piVar5[3])" ( (binary_expression "(int *)piVar5[2] < (int *)piVar5[3]" (cast_expression "(int *)piVar5[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[2]" identifier [ number_literal ])) < (cast_expression "(int *)piVar5[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar6 = *(int *)piVar5[2];\n    }" { (expression_statement "iVar6 = *(int *)piVar5[2];" (assignment_expression "iVar6 = *(int *)piVar5[2]" identifier = (pointer_expression "*(int *)piVar5[2]" * (cast_expression "(int *)piVar5[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n                    /* try { // try from 002e9084 to 002e908b has its CatchHandler @ 002e8f74 */\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }" else (compound_statement "{\n                    /* try { // try from 002e9084 to 002e908b has its CatchHandler @ 002e8f74 */\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }" { comment (expression_statement "iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);" (assignment_expression "iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5)" identifier = (call_expression "(**(code **)(*piVar5 + 0x24))(piVar5)" (parenthesized_expression "(**(code **)(*piVar5 + 0x24))" ( (pointer_expression "**(code **)(*piVar5 + 0x24)" * (pointer_expression "*(code **)(*piVar5 + 0x24)" * (cast_expression "(code **)(*piVar5 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 0x24)" ( (binary_expression "*piVar5 + 0x24" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(piVar5)" ( identifier )))) ;) }))) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (while_statement "while (pwVar9 = param_2, iVar7 != iVar10) {\n      while( true ) {\n        param_2 = pwVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    /* try { // try from 002e8ef0 to 002e8ef7 has its CatchHandler @ 002e90c8 */\n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = pwVar9 + 2;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *(int *)pwVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    /* try { // try from 002e9034 to 002e906f has its CatchHandler @ 002e90c8 */\n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          _Var8 = _S_eofbit;\n          param_2[0] = L'\0';\n          param_2[1] = L'\0';\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        pwVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }" while (parenthesized_expression "(pwVar9 = param_2, iVar7 != iVar10)" ( (comma_expression "pwVar9 = param_2, iVar7 != iVar10" (assignment_expression "pwVar9 = param_2" identifier = identifier) , (binary_expression "iVar7 != iVar10" identifier != identifier)) )) (compound_statement "{\n      while( true ) {\n        param_2 = pwVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    /* try { // try from 002e8ef0 to 002e8ef7 has its CatchHandler @ 002e90c8 */\n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = pwVar9 + 2;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *(int *)pwVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    /* try { // try from 002e9034 to 002e906f has its CatchHandler @ 002e90c8 */\n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          _Var8 = _S_eofbit;\n          param_2[0] = L'\0';\n          param_2[1] = L'\0';\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        pwVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }" { (while_statement "while( true ) {\n        param_2 = pwVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    /* try { // try from 002e8ef0 to 002e8ef7 has its CatchHandler @ 002e90c8 */\n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = pwVar9 + 2;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *(int *)pwVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    /* try { // try from 002e9034 to 002e906f has its CatchHandler @ 002e90c8 */\n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          _Var8 = _S_eofbit;\n          param_2[0] = L'\0';\n          param_2[1] = L'\0';\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        pwVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        param_2 = pwVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    /* try { // try from 002e8ef0 to 002e8ef7 has its CatchHandler @ 002e90c8 */\n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = pwVar9 + 2;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *(int *)pwVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    /* try { // try from 002e9034 to 002e906f has its CatchHandler @ 002e90c8 */\n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          _Var8 = _S_eofbit;\n          param_2[0] = L'\0';\n          param_2[1] = L'\0';\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        pwVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }" { (expression_statement "param_2 = pwVar9;" (assignment_expression "param_2 = pwVar9" identifier = identifier) ;) (if_statement "if (iVar6 == -1) goto LAB_002e90a0;" if (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) (goto_statement "goto LAB_002e90a0;" goto statement_identifier ;)) comment (expression_statement "iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);" (assignment_expression "iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6)" identifier = (call_expression "(**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6)" (parenthesized_expression "(**(code **)(*piVar1 + 8))" ( (pointer_expression "**(code **)(*piVar1 + 8)" * (pointer_expression "*(code **)(*piVar1 + 8)" * (cast_expression "(code **)(*piVar1 + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar1 + 8)" ( (binary_expression "*piVar1 + 8" (pointer_expression "*piVar1" * identifier) + number_literal) ))))) )) (argument_list "(piVar1,0x20,iVar6)" ( identifier , number_literal , identifier )))) ;) (expression_statement "iVar11 = iVar7;" (assignment_expression "iVar11 = iVar7" identifier = identifier) ;) (if_statement "if (iVar2 != 0) goto LAB_002e8f54;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_002e8f54;" goto statement_identifier ;)) (expression_statement "piVar4 = (int *)piVar5[2];" (assignment_expression "piVar4 = (int *)piVar5[2]" identifier = (cast_expression "(int *)piVar5[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[2]" identifier [ number_literal ]))) ;) (expression_statement "param_2 = pwVar9 + 2;" (assignment_expression "param_2 = pwVar9 + 2" identifier = (binary_expression "pwVar9 + 2" identifier + number_literal)) ;) (expression_statement "piVar3 = (int *)piVar5[3];" (assignment_expression "piVar3 = (int *)piVar5[3]" identifier = (cast_expression "(int *)piVar5[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[3]" identifier [ number_literal ]))) ;) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "*(int *)pwVar9 = iVar6;" (assignment_expression "*(int *)pwVar9 = iVar6" (pointer_expression "*(int *)pwVar9" * (cast_expression "(int *)pwVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (if_statement "if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    /* try { // try from 002e9034 to 002e906f has its CatchHandler @ 002e90c8 */\n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }" if (parenthesized_expression "(piVar4 < piVar3)" ( (binary_expression "piVar4 < piVar3" identifier < identifier) )) (compound_statement "{\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }" { (expression_statement "iVar6 = *piVar4;" (assignment_expression "iVar6 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "piVar5[2] = (int)(piVar4 + 1);" (assignment_expression "piVar5[2] = (int)(piVar4 + 1)" (subscript_expression "piVar5[2]" identifier [ number_literal ]) = (cast_expression "(int)(piVar4 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar4 + 1)" ( (binary_expression "piVar4 + 1" identifier + number_literal) )))) ;) }) (else_clause "else {\n                    /* try { // try from 002e9034 to 002e906f has its CatchHandler @ 002e90c8 */\n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }" else (compound_statement "{\n                    /* try { // try from 002e9034 to 002e906f has its CatchHandler @ 002e90c8 */\n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }" { comment (expression_statement "iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);" (assignment_expression "iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5)" identifier = (call_expression "(**(code **)(*piVar5 + 0x28))(piVar5)" (parenthesized_expression "(**(code **)(*piVar5 + 0x28))" ( (pointer_expression "**(code **)(*piVar5 + 0x28)" * (pointer_expression "*(code **)(*piVar5 + 0x28)" * (cast_expression "(code **)(*piVar5 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 0x28)" ( (binary_expression "*piVar5 + 0x28" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(piVar5)" ( identifier )))) ;) }))) (if_statement "if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          _Var8 = _S_eofbit;\n          param_2[0] = L'\0';\n          param_2[1] = L'\0';\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }" if (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) (compound_statement "{\n          iVar10 = *(int *)param_1;\n          _Var8 = _S_eofbit;\n          param_2[0] = L'\0';\n          param_2[1] = L'\0';\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }" { (expression_statement "iVar10 = *(int *)param_1;" (assignment_expression "iVar10 = *(int *)param_1" identifier = (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "_Var8 = _S_eofbit;" (assignment_expression "_Var8 = _S_eofbit" identifier = identifier) ;) (expression_statement "param_2[0] = L'\0';" (assignment_expression "param_2[0] = L'\0'" (subscript_expression "param_2[0]" identifier [ number_literal ]) = (char_literal "L'\0'" L' escape_sequence ')) ;) (expression_statement "param_2[1] = L'\0';" (assignment_expression "param_2[1] = L'\0'" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (char_literal "L'\0'" L' escape_sequence ')) ;) (expression_statement "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0" (pointer_expression "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8)" * (cast_expression "(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(int *)(iVar10 + -0xc) + 8)" ( (binary_expression "param_1 + *(int *)(iVar10 + -0xc) + 8" (binary_expression "param_1 + *(int *)(iVar10 + -0xc)" identifier + (pointer_expression "*(int *)(iVar10 + -0xc)" * (cast_expression "(int *)(iVar10 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + -0xc)" ( (binary_expression "iVar10 + -0xc" identifier + number_literal) ))))) + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_002e8fd4;" goto statement_identifier ;) })) (if_statement "if ((int *)piVar5[3] <= (int *)piVar5[2]) break;" if (parenthesized_expression "((int *)piVar5[3] <= (int *)piVar5[2])" ( (binary_expression "(int *)piVar5[3] <= (int *)piVar5[2]" (cast_expression "(int *)piVar5[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[3]" identifier [ number_literal ])) <= (cast_expression "(int *)piVar5[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[2]" identifier [ number_literal ]))) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = *(int *)piVar5[2];" (assignment_expression "iVar6 = *(int *)piVar5[2]" identifier = (pointer_expression "*(int *)piVar5[2]" * (cast_expression "(int *)piVar5[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[2]" identifier [ number_literal ])))) ;) (expression_statement "pwVar9 = param_2;" (assignment_expression "pwVar9 = param_2" identifier = identifier) ;) (if_statement "if (iVar7 == iVar10) goto LAB_002e8f4c;" if (parenthesized_expression "(iVar7 == iVar10)" ( (binary_expression "iVar7 == iVar10" identifier == identifier) )) (goto_statement "goto LAB_002e8f4c;" goto statement_identifier ;)) })) (expression_statement "iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);" (assignment_expression "iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5)" identifier = (call_expression "(**(code **)(*piVar5 + 0x24))(piVar5)" (parenthesized_expression "(**(code **)(*piVar5 + 0x24))" ( (pointer_expression "**(code **)(*piVar5 + 0x24)" * (pointer_expression "*(code **)(*piVar5 + 0x24)" * (cast_expression "(code **)(*piVar5 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 0x24)" ( (binary_expression "*piVar5 + 0x24" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(piVar5)" ( identifier )))) ;) })) (labeled_statement "LAB_002e8f4c:\n    pwVar9 = param_2;" statement_identifier : (expression_statement "pwVar9 = param_2;" (assignment_expression "pwVar9 = param_2" identifier = identifier) ;)) (expression_statement "iVar11 = iVar10;" (assignment_expression "iVar11 = iVar10" identifier = identifier) ;) (if_statement "if (iVar6 == -1) {\nLAB_002e90a0:\n      iVar10 = *(int *)param_1;\n      _Var8 = _S_eofbit;\n      param_2[0] = L'\0';\n      param_2[1] = L'\0';\n      if (iVar7 == 0) {\n        _Var8 = _S_failbit|_S_eofbit;\n      }\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n    }\n    else {\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      pwVar9[0] = L'\0';\n      pwVar9[1] = L'\0';\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      _Var8 = _S_failbit;\n    }" if (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) (compound_statement "{\nLAB_002e90a0:\n      iVar10 = *(int *)param_1;\n      _Var8 = _S_eofbit;\n      param_2[0] = L'\0';\n      param_2[1] = L'\0';\n      if (iVar7 == 0) {\n        _Var8 = _S_failbit|_S_eofbit;\n      }\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n    }" { (labeled_statement "LAB_002e90a0:\n      iVar10 = *(int *)param_1;" statement_identifier : (expression_statement "iVar10 = *(int *)param_1;" (assignment_expression "iVar10 = *(int *)param_1" identifier = (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;)) (expression_statement "_Var8 = _S_eofbit;" (assignment_expression "_Var8 = _S_eofbit" identifier = identifier) ;) (expression_statement "param_2[0] = L'\0';" (assignment_expression "param_2[0] = L'\0'" (subscript_expression "param_2[0]" identifier [ number_literal ]) = (char_literal "L'\0'" L' escape_sequence ')) ;) (expression_statement "param_2[1] = L'\0';" (assignment_expression "param_2[1] = L'\0'" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (char_literal "L'\0'" L' escape_sequence ')) ;) (if_statement "if (iVar7 == 0) {\n        _Var8 = _S_failbit|_S_eofbit;\n      }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n        _Var8 = _S_failbit|_S_eofbit;\n      }" { (expression_statement "_Var8 = _S_failbit|_S_eofbit;" (assignment_expression "_Var8 = _S_failbit|_S_eofbit" identifier = (binary_expression "_S_failbit|_S_eofbit" identifier | identifier)) ;) })) (expression_statement "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0" (pointer_expression "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8)" * (cast_expression "(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(int *)(iVar10 + -0xc) + 8)" ( (binary_expression "param_1 + *(int *)(iVar10 + -0xc) + 8" (binary_expression "param_1 + *(int *)(iVar10 + -0xc)" identifier + (pointer_expression "*(int *)(iVar10 + -0xc)" * (cast_expression "(int *)(iVar10 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + -0xc)" ( (binary_expression "iVar10 + -0xc" identifier + number_literal) ))))) + number_literal) )))) = number_literal) ;) }) (else_clause "else {\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      pwVar9[0] = L'\0';\n      pwVar9[1] = L'\0';\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      _Var8 = _S_failbit;\n    }" else (compound_statement "{\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      pwVar9[0] = L'\0';\n      pwVar9[1] = L'\0';\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      _Var8 = _S_failbit;\n    }" { (labeled_statement "LAB_002e8f54:\n      iVar10 = *(int *)param_1;" statement_identifier : (expression_statement "iVar10 = *(int *)param_1;" (assignment_expression "iVar10 = *(int *)param_1" identifier = (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;)) (expression_statement "pwVar9[0] = L'\0';" (assignment_expression "pwVar9[0] = L'\0'" (subscript_expression "pwVar9[0]" identifier [ number_literal ]) = (char_literal "L'\0'" L' escape_sequence ')) ;) (expression_statement "pwVar9[1] = L'\0';" (assignment_expression "pwVar9[1] = L'\0'" (subscript_expression "pwVar9[1]" identifier [ number_literal ]) = (char_literal "L'\0'" L' escape_sequence ')) ;) (expression_statement "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0" (pointer_expression "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8)" * (cast_expression "(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(int *)(iVar10 + -0xc) + 8)" ( (binary_expression "param_1 + *(int *)(iVar10 + -0xc) + 8" (binary_expression "param_1 + *(int *)(iVar10 + -0xc)" identifier + (pointer_expression "*(int *)(iVar10 + -0xc)" * (cast_expression "(int *)(iVar10 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + -0xc)" ( (binary_expression "iVar10 + -0xc" identifier + number_literal) ))))) + number_literal) )))) = number_literal) ;) (if_statement "if (iVar11 != 0) {\n        return param_1;\n      }" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (compound_statement "{\n        return param_1;\n      }" { (return_statement "return param_1;" return identifier ;) })) (expression_statement "_Var8 = _S_failbit;" (assignment_expression "_Var8 = _S_failbit" identifier = identifier) ;) }))) }))) (labeled_statement "LAB_002e8fd4:\n  wios::clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n              _Var8 | *(_Ios_Iostate *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14));" statement_identifier : (labeled_statement "wios::clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n              _Var8 | *(_Ios_Iostate *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14));" statement_identifier : (ERROR ":" :) (expression_statement "clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n              _Var8 | *(_Ios_Iostate *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14));" (call_expression "clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n              _Var8 | *(_Ios_Iostate *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14))" identifier (argument_list "((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n              _Var8 | *(_Ios_Iostate *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14))" ( (cast_expression "(wios *)(param_1 + *(int *)(iVar10 + -0xc))" ( (type_descriptor "wios *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(int *)(iVar10 + -0xc))" ( (binary_expression "param_1 + *(int *)(iVar10 + -0xc)" identifier + (pointer_expression "*(int *)(iVar10 + -0xc)" * (cast_expression "(int *)(iVar10 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + -0xc)" ( (binary_expression "iVar10 + -0xc" identifier + number_literal) ))))) ))) , (binary_expression "_Var8 | *(_Ios_Iostate *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14)" identifier | (pointer_expression "*(_Ios_Iostate *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14)" * (cast_expression "(_Ios_Iostate *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14)" ( (type_descriptor "_Ios_Iostate *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14)" ( (binary_expression "(wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14" (cast_expression "(wios *)(param_1 + *(int *)(iVar10 + -0xc))" ( (type_descriptor "wios *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(int *)(iVar10 + -0xc))" ( (binary_expression "param_1 + *(int *)(iVar10 + -0xc)" identifier + (pointer_expression "*(int *)(iVar10 + -0xc)" * (cast_expression "(int *)(iVar10 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + -0xc)" ( (binary_expression "iVar10 + -0xc" identifier + number_literal) ))))) ))) + number_literal) ))))) ))) ;))) (return_statement "return param_1;" return identifier ;) }))
(translation_unit "wistream * FUN_002e8df0(wistream *param_1,int *param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int *piVar3;\n  int *piVar4;\n  int *piVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  int *piVar9;\n  int iVar10;\n  int iVar11;\n  undefined1 auStack_38 [4];\n  sentry local_34 [16];\n  \n  std::wistream::sentry::sentry(local_34,param_1,false);\n  if (local_34[0] == (sentry)0x0) {\n    iVar10 = *(int *)param_1;\n    uVar8 = 4;\n  }\n  else {\n    iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);\n    if (iVar10 < 1) {\n      iVar10 = 0x7fffffff;\n    }\n    (*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c);\n                    \n    piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38);\n    (*(code *)PTR__locale_00433084)(auStack_38);\n    piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);\n    if ((int *)piVar5[2] < (int *)piVar5[3]) {\n      iVar6 = *(int *)piVar5[2];\n    }\n    else {\n                    \n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\n    iVar10 = iVar10 + -1;\n    iVar7 = 0;\n    while (piVar9 = param_2, iVar7 != iVar10) {\n      while( true ) {\n        param_2 = piVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    \n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = piVar9 + 1;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *piVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    \n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        piVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\nLAB_002e8f4c:\n    piVar9 = param_2;\n    iVar11 = iVar10;\n    if (iVar6 == -1) {\nLAB_002e90a0:\n      iVar10 = *(int *)param_1;\n      uVar8 = 2;\n      *param_2 = 0;\n      if (iVar7 == 0) {\n        uVar8 = 6;\n      }\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n    }\n    else {\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      *piVar9 = 0;\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      uVar8 = 4;\n    }\n  }\nLAB_002e8fd4:\n  std::wios::clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n                   uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14));\n  return param_1;\n}\n\n" (function_definition "wistream * FUN_002e8df0(wistream *param_1,int *param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int *piVar3;\n  int *piVar4;\n  int *piVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  int *piVar9;\n  int iVar10;\n  int iVar11;\n  undefined1 auStack_38 [4];\n  sentry local_34 [16];\n  \n  std::wistream::sentry::sentry(local_34,param_1,false);\n  if (local_34[0] == (sentry)0x0) {\n    iVar10 = *(int *)param_1;\n    uVar8 = 4;\n  }\n  else {\n    iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);\n    if (iVar10 < 1) {\n      iVar10 = 0x7fffffff;\n    }\n    (*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c);\n                    \n    piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38);\n    (*(code *)PTR__locale_00433084)(auStack_38);\n    piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);\n    if ((int *)piVar5[2] < (int *)piVar5[3]) {\n      iVar6 = *(int *)piVar5[2];\n    }\n    else {\n                    \n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\n    iVar10 = iVar10 + -1;\n    iVar7 = 0;\n    while (piVar9 = param_2, iVar7 != iVar10) {\n      while( true ) {\n        param_2 = piVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    \n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = piVar9 + 1;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *piVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    \n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        piVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\nLAB_002e8f4c:\n    piVar9 = param_2;\n    iVar11 = iVar10;\n    if (iVar6 == -1) {\nLAB_002e90a0:\n      iVar10 = *(int *)param_1;\n      uVar8 = 2;\n      *param_2 = 0;\n      if (iVar7 == 0) {\n        uVar8 = 6;\n      }\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n    }\n    else {\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      *piVar9 = 0;\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      uVar8 = 4;\n    }\n  }\nLAB_002e8fd4:\n  std::wios::clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n                   uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14));\n  return param_1;\n}" type_identifier (pointer_declarator "* FUN_002e8df0(wistream *param_1,int *param_2)" * (function_declarator "FUN_002e8df0(wistream *param_1,int *param_2)" identifier (parameter_list "(wistream *param_1,int *param_2)" ( (parameter_declaration "wistream *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int *piVar3;\n  int *piVar4;\n  int *piVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  int *piVar9;\n  int iVar10;\n  int iVar11;\n  undefined1 auStack_38 [4];\n  sentry local_34 [16];\n  \n  std::wistream::sentry::sentry(local_34,param_1,false);\n  if (local_34[0] == (sentry)0x0) {\n    iVar10 = *(int *)param_1;\n    uVar8 = 4;\n  }\n  else {\n    iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);\n    if (iVar10 < 1) {\n      iVar10 = 0x7fffffff;\n    }\n    (*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c);\n                    \n    piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38);\n    (*(code *)PTR__locale_00433084)(auStack_38);\n    piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);\n    if ((int *)piVar5[2] < (int *)piVar5[3]) {\n      iVar6 = *(int *)piVar5[2];\n    }\n    else {\n                    \n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\n    iVar10 = iVar10 + -1;\n    iVar7 = 0;\n    while (piVar9 = param_2, iVar7 != iVar10) {\n      while( true ) {\n        param_2 = piVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    \n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = piVar9 + 1;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *piVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    \n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        piVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\nLAB_002e8f4c:\n    piVar9 = param_2;\n    iVar11 = iVar10;\n    if (iVar6 == -1) {\nLAB_002e90a0:\n      iVar10 = *(int *)param_1;\n      uVar8 = 2;\n      *param_2 = 0;\n      if (iVar7 == 0) {\n        uVar8 = 6;\n      }\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n    }\n    else {\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      *piVar9 = 0;\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      uVar8 = 4;\n    }\n  }\nLAB_002e8fd4:\n  std::wios::clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n                   uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14));\n  return param_1;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined1 auStack_38 [4];" type_identifier (array_declarator "auStack_38 [4]" identifier [ number_literal ]) ;) (declaration "sentry local_34 [16];" type_identifier (array_declarator "local_34 [16]" identifier [ number_literal ]) ;) (labeled_statement "std::wistream::sentry::sentry(local_34,param_1,false);" statement_identifier : (ERROR ":" :) (labeled_statement "wistream::sentry::sentry(local_34,param_1,false);" statement_identifier : (ERROR ":" :) (labeled_statement "sentry::sentry(local_34,param_1,false);" statement_identifier : (ERROR ":" :) (expression_statement "sentry(local_34,param_1,false);" (call_expression "sentry(local_34,param_1,false)" identifier (argument_list "(local_34,param_1,false)" ( identifier , identifier , false ))) ;)))) (if_statement "if (local_34[0] == (sentry)0x0) {\n    iVar10 = *(int *)param_1;\n    uVar8 = 4;\n  }\n  else {\n    iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);\n    if (iVar10 < 1) {\n      iVar10 = 0x7fffffff;\n    }\n    (*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c);\n                    \n    piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38);\n    (*(code *)PTR__locale_00433084)(auStack_38);\n    piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);\n    if ((int *)piVar5[2] < (int *)piVar5[3]) {\n      iVar6 = *(int *)piVar5[2];\n    }\n    else {\n                    \n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\n    iVar10 = iVar10 + -1;\n    iVar7 = 0;\n    while (piVar9 = param_2, iVar7 != iVar10) {\n      while( true ) {\n        param_2 = piVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    \n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = piVar9 + 1;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *piVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    \n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        piVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\nLAB_002e8f4c:\n    piVar9 = param_2;\n    iVar11 = iVar10;\n    if (iVar6 == -1) {\nLAB_002e90a0:\n      iVar10 = *(int *)param_1;\n      uVar8 = 2;\n      *param_2 = 0;\n      if (iVar7 == 0) {\n        uVar8 = 6;\n      }\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n    }\n    else {\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      *piVar9 = 0;\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      uVar8 = 4;\n    }\n  }" if (parenthesized_expression "(local_34[0] == (sentry)0x0)" ( (binary_expression "local_34[0] == (sentry)0x0" (subscript_expression "local_34[0]" identifier [ number_literal ]) == (cast_expression "(sentry)0x0" ( (type_descriptor "sentry" type_identifier) ) number_literal)) )) (compound_statement "{\n    iVar10 = *(int *)param_1;\n    uVar8 = 4;\n  }" { (expression_statement "iVar10 = *(int *)param_1;" (assignment_expression "iVar10 = *(int *)param_1" identifier = (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar8 = 4;" (assignment_expression "uVar8 = 4" identifier = number_literal) ;) }) (else_clause "else {\n    iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);\n    if (iVar10 < 1) {\n      iVar10 = 0x7fffffff;\n    }\n    (*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c);\n                    \n    piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38);\n    (*(code *)PTR__locale_00433084)(auStack_38);\n    piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);\n    if ((int *)piVar5[2] < (int *)piVar5[3]) {\n      iVar6 = *(int *)piVar5[2];\n    }\n    else {\n                    \n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\n    iVar10 = iVar10 + -1;\n    iVar7 = 0;\n    while (piVar9 = param_2, iVar7 != iVar10) {\n      while( true ) {\n        param_2 = piVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    \n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = piVar9 + 1;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *piVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    \n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        piVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\nLAB_002e8f4c:\n    piVar9 = param_2;\n    iVar11 = iVar10;\n    if (iVar6 == -1) {\nLAB_002e90a0:\n      iVar10 = *(int *)param_1;\n      uVar8 = 2;\n      *param_2 = 0;\n      if (iVar7 == 0) {\n        uVar8 = 6;\n      }\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n    }\n    else {\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      *piVar9 = 0;\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      uVar8 = 4;\n    }\n  }" else (compound_statement "{\n    iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);\n    if (iVar10 < 1) {\n      iVar10 = 0x7fffffff;\n    }\n    (*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c);\n                    \n    piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38);\n    (*(code *)PTR__locale_00433084)(auStack_38);\n    piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);\n    if ((int *)piVar5[2] < (int *)piVar5[3]) {\n      iVar6 = *(int *)piVar5[2];\n    }\n    else {\n                    \n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\n    iVar10 = iVar10 + -1;\n    iVar7 = 0;\n    while (piVar9 = param_2, iVar7 != iVar10) {\n      while( true ) {\n        param_2 = piVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    \n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = piVar9 + 1;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *piVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    \n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        piVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\nLAB_002e8f4c:\n    piVar9 = param_2;\n    iVar11 = iVar10;\n    if (iVar6 == -1) {\nLAB_002e90a0:\n      iVar10 = *(int *)param_1;\n      uVar8 = 2;\n      *param_2 = 0;\n      if (iVar7 == 0) {\n        uVar8 = 6;\n      }\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n    }\n    else {\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      *piVar9 = 0;\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      uVar8 = 4;\n    }\n  }" { (expression_statement "iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);" (assignment_expression "iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8)" identifier = (pointer_expression "*(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8)" * (cast_expression "(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8)" ( (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc) + 8" (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) ))))) ;) (if_statement "if (iVar10 < 1) {\n      iVar10 = 0x7fffffff;\n    }" if (parenthesized_expression "(iVar10 < 1)" ( (binary_expression "iVar10 < 1" identifier < number_literal) )) (compound_statement "{\n      iVar10 = 0x7fffffff;\n    }" { (expression_statement "iVar10 = 0x7fffffff;" (assignment_expression "iVar10 = 0x7fffffff" identifier = number_literal) ;) })) (expression_statement "(*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c);" (call_expression "(*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c)" (parenthesized_expression "(*(code *)PTR_locale_004338b0)" ( (pointer_expression "*(code *)PTR_locale_004338b0" * (cast_expression "(code *)PTR_locale_004338b0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c)" ( identifier , (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c" (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 "piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38);" (assignment_expression "piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38)" identifier = (cast_expression "(int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38)" (parenthesized_expression "(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)" ( (binary_expression "*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8" (binary_expression "*(code *)PTR_use_facet<std_ctype" (pointer_expression "*(code *)PTR_use_facet" * (cast_expression "(code *)PTR_use_facet" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) < identifier) < (binary_expression "wchar_t>>_00433ac8" identifier >> identifier)) )) (argument_list "(auStack_38)" ( identifier ))))) ;) (expression_statement "(*(code *)PTR__locale_00433084)(auStack_38);" (call_expression "(*(code *)PTR__locale_00433084)(auStack_38)" (parenthesized_expression "(*(code *)PTR__locale_00433084)" ( (pointer_expression "*(code *)PTR__locale_00433084" * (cast_expression "(code *)PTR__locale_00433084" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_38)" ( identifier ))) ;) (expression_statement "piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);" (assignment_expression "piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c)" identifier = (pointer_expression "*(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c)" * (cast_expression "(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c)" ( (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c" (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) ))))) ;) (if_statement "if ((int *)piVar5[2] < (int *)piVar5[3]) {\n      iVar6 = *(int *)piVar5[2];\n    }\n    else {\n                    \n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }" if (parenthesized_expression "((int *)piVar5[2] < (int *)piVar5[3])" ( (binary_expression "(int *)piVar5[2] < (int *)piVar5[3]" (cast_expression "(int *)piVar5[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[2]" identifier [ number_literal ])) < (cast_expression "(int *)piVar5[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar6 = *(int *)piVar5[2];\n    }" { (expression_statement "iVar6 = *(int *)piVar5[2];" (assignment_expression "iVar6 = *(int *)piVar5[2]" identifier = (pointer_expression "*(int *)piVar5[2]" * (cast_expression "(int *)piVar5[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n                    \n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }" else (compound_statement "{\n                    \n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }" { (expression_statement "iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);" (assignment_expression "iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5)" identifier = (call_expression "(**(code **)(*piVar5 + 0x24))(piVar5)" (parenthesized_expression "(**(code **)(*piVar5 + 0x24))" ( (pointer_expression "**(code **)(*piVar5 + 0x24)" * (pointer_expression "*(code **)(*piVar5 + 0x24)" * (cast_expression "(code **)(*piVar5 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 0x24)" ( (binary_expression "*piVar5 + 0x24" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(piVar5)" ( identifier )))) ;) }))) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (while_statement "while (piVar9 = param_2, iVar7 != iVar10) {\n      while( true ) {\n        param_2 = piVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    \n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = piVar9 + 1;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *piVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    \n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        piVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }" while (parenthesized_expression "(piVar9 = param_2, iVar7 != iVar10)" ( (comma_expression "piVar9 = param_2, iVar7 != iVar10" (assignment_expression "piVar9 = param_2" identifier = identifier) , (binary_expression "iVar7 != iVar10" identifier != identifier)) )) (compound_statement "{\n      while( true ) {\n        param_2 = piVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    \n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = piVar9 + 1;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *piVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    \n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        piVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }" { (while_statement "while( true ) {\n        param_2 = piVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    \n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = piVar9 + 1;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *piVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    \n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        piVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        param_2 = piVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    \n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = piVar9 + 1;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *piVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    \n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        piVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }" { (expression_statement "param_2 = piVar9;" (assignment_expression "param_2 = piVar9" identifier = identifier) ;) (if_statement "if (iVar6 == -1) goto LAB_002e90a0;" if (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) (goto_statement "goto LAB_002e90a0;" goto statement_identifier ;)) (expression_statement "iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);" (assignment_expression "iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6)" identifier = (call_expression "(**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6)" (parenthesized_expression "(**(code **)(*piVar1 + 8))" ( (pointer_expression "**(code **)(*piVar1 + 8)" * (pointer_expression "*(code **)(*piVar1 + 8)" * (cast_expression "(code **)(*piVar1 + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar1 + 8)" ( (binary_expression "*piVar1 + 8" (pointer_expression "*piVar1" * identifier) + number_literal) ))))) )) (argument_list "(piVar1,0x20,iVar6)" ( identifier , number_literal , identifier )))) ;) (expression_statement "iVar11 = iVar7;" (assignment_expression "iVar11 = iVar7" identifier = identifier) ;) (if_statement "if (iVar2 != 0) goto LAB_002e8f54;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_002e8f54;" goto statement_identifier ;)) (expression_statement "piVar4 = (int *)piVar5[2];" (assignment_expression "piVar4 = (int *)piVar5[2]" identifier = (cast_expression "(int *)piVar5[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[2]" identifier [ number_literal ]))) ;) (expression_statement "param_2 = piVar9 + 1;" (assignment_expression "param_2 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (expression_statement "piVar3 = (int *)piVar5[3];" (assignment_expression "piVar3 = (int *)piVar5[3]" identifier = (cast_expression "(int *)piVar5[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[3]" identifier [ number_literal ]))) ;) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "*piVar9 = iVar6;" (assignment_expression "*piVar9 = iVar6" (pointer_expression "*piVar9" * identifier) = identifier) ;) (if_statement "if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    \n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }" if (parenthesized_expression "(piVar4 < piVar3)" ( (binary_expression "piVar4 < piVar3" identifier < identifier) )) (compound_statement "{\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }" { (expression_statement "iVar6 = *piVar4;" (assignment_expression "iVar6 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "piVar5[2] = (int)(piVar4 + 1);" (assignment_expression "piVar5[2] = (int)(piVar4 + 1)" (subscript_expression "piVar5[2]" identifier [ number_literal ]) = (cast_expression "(int)(piVar4 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar4 + 1)" ( (binary_expression "piVar4 + 1" identifier + number_literal) )))) ;) }) (else_clause "else {\n                    \n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }" else (compound_statement "{\n                    \n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }" { (expression_statement "iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);" (assignment_expression "iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5)" identifier = (call_expression "(**(code **)(*piVar5 + 0x28))(piVar5)" (parenthesized_expression "(**(code **)(*piVar5 + 0x28))" ( (pointer_expression "**(code **)(*piVar5 + 0x28)" * (pointer_expression "*(code **)(*piVar5 + 0x28)" * (cast_expression "(code **)(*piVar5 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 0x28)" ( (binary_expression "*piVar5 + 0x28" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(piVar5)" ( identifier )))) ;) }))) (if_statement "if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }" if (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) (compound_statement "{\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }" { (expression_statement "iVar10 = *(int *)param_1;" (assignment_expression "iVar10 = *(int *)param_1" identifier = (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar8 = 2;" (assignment_expression "uVar8 = 2" identifier = number_literal) ;) (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" * identifier) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0" (pointer_expression "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8)" * (cast_expression "(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(int *)(iVar10 + -0xc) + 8)" ( (binary_expression "param_1 + *(int *)(iVar10 + -0xc) + 8" (binary_expression "param_1 + *(int *)(iVar10 + -0xc)" identifier + (pointer_expression "*(int *)(iVar10 + -0xc)" * (cast_expression "(int *)(iVar10 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + -0xc)" ( (binary_expression "iVar10 + -0xc" identifier + number_literal) ))))) + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_002e8fd4;" goto statement_identifier ;) })) (if_statement "if ((int *)piVar5[3] <= (int *)piVar5[2]) break;" if (parenthesized_expression "((int *)piVar5[3] <= (int *)piVar5[2])" ( (binary_expression "(int *)piVar5[3] <= (int *)piVar5[2]" (cast_expression "(int *)piVar5[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[3]" identifier [ number_literal ])) <= (cast_expression "(int *)piVar5[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[2]" identifier [ number_literal ]))) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = *(int *)piVar5[2];" (assignment_expression "iVar6 = *(int *)piVar5[2]" identifier = (pointer_expression "*(int *)piVar5[2]" * (cast_expression "(int *)piVar5[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[2]" identifier [ number_literal ])))) ;) (expression_statement "piVar9 = param_2;" (assignment_expression "piVar9 = param_2" identifier = identifier) ;) (if_statement "if (iVar7 == iVar10) goto LAB_002e8f4c;" if (parenthesized_expression "(iVar7 == iVar10)" ( (binary_expression "iVar7 == iVar10" identifier == identifier) )) (goto_statement "goto LAB_002e8f4c;" goto statement_identifier ;)) })) (expression_statement "iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);" (assignment_expression "iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5)" identifier = (call_expression "(**(code **)(*piVar5 + 0x24))(piVar5)" (parenthesized_expression "(**(code **)(*piVar5 + 0x24))" ( (pointer_expression "**(code **)(*piVar5 + 0x24)" * (pointer_expression "*(code **)(*piVar5 + 0x24)" * (cast_expression "(code **)(*piVar5 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 0x24)" ( (binary_expression "*piVar5 + 0x24" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(piVar5)" ( identifier )))) ;) })) (labeled_statement "LAB_002e8f4c:\n    piVar9 = param_2;" statement_identifier : (expression_statement "piVar9 = param_2;" (assignment_expression "piVar9 = param_2" identifier = identifier) ;)) (expression_statement "iVar11 = iVar10;" (assignment_expression "iVar11 = iVar10" identifier = identifier) ;) (if_statement "if (iVar6 == -1) {\nLAB_002e90a0:\n      iVar10 = *(int *)param_1;\n      uVar8 = 2;\n      *param_2 = 0;\n      if (iVar7 == 0) {\n        uVar8 = 6;\n      }\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n    }\n    else {\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      *piVar9 = 0;\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      uVar8 = 4;\n    }" if (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) (compound_statement "{\nLAB_002e90a0:\n      iVar10 = *(int *)param_1;\n      uVar8 = 2;\n      *param_2 = 0;\n      if (iVar7 == 0) {\n        uVar8 = 6;\n      }\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n    }" { (labeled_statement "LAB_002e90a0:\n      iVar10 = *(int *)param_1;" statement_identifier : (expression_statement "iVar10 = *(int *)param_1;" (assignment_expression "iVar10 = *(int *)param_1" identifier = (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;)) (expression_statement "uVar8 = 2;" (assignment_expression "uVar8 = 2" identifier = number_literal) ;) (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" * identifier) = number_literal) ;) (if_statement "if (iVar7 == 0) {\n        uVar8 = 6;\n      }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar8 = 6;\n      }" { (expression_statement "uVar8 = 6;" (assignment_expression "uVar8 = 6" identifier = number_literal) ;) })) (expression_statement "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0" (pointer_expression "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8)" * (cast_expression "(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(int *)(iVar10 + -0xc) + 8)" ( (binary_expression "param_1 + *(int *)(iVar10 + -0xc) + 8" (binary_expression "param_1 + *(int *)(iVar10 + -0xc)" identifier + (pointer_expression "*(int *)(iVar10 + -0xc)" * (cast_expression "(int *)(iVar10 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + -0xc)" ( (binary_expression "iVar10 + -0xc" identifier + number_literal) ))))) + number_literal) )))) = number_literal) ;) }) (else_clause "else {\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      *piVar9 = 0;\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      uVar8 = 4;\n    }" else (compound_statement "{\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      *piVar9 = 0;\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      uVar8 = 4;\n    }" { (labeled_statement "LAB_002e8f54:\n      iVar10 = *(int *)param_1;" statement_identifier : (expression_statement "iVar10 = *(int *)param_1;" (assignment_expression "iVar10 = *(int *)param_1" identifier = (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;)) (expression_statement "*piVar9 = 0;" (assignment_expression "*piVar9 = 0" (pointer_expression "*piVar9" * identifier) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0" (pointer_expression "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8)" * (cast_expression "(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(int *)(iVar10 + -0xc) + 8)" ( (binary_expression "param_1 + *(int *)(iVar10 + -0xc) + 8" (binary_expression "param_1 + *(int *)(iVar10 + -0xc)" identifier + (pointer_expression "*(int *)(iVar10 + -0xc)" * (cast_expression "(int *)(iVar10 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + -0xc)" ( (binary_expression "iVar10 + -0xc" identifier + number_literal) ))))) + number_literal) )))) = number_literal) ;) (if_statement "if (iVar11 != 0) {\n        return param_1;\n      }" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (compound_statement "{\n        return param_1;\n      }" { (return_statement "return param_1;" return identifier ;) })) (expression_statement "uVar8 = 4;" (assignment_expression "uVar8 = 4" identifier = number_literal) ;) }))) }))) (labeled_statement "LAB_002e8fd4:\n  std::wios::clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n                   uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14));" statement_identifier : (labeled_statement "std::wios::clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n                   uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14));" statement_identifier : (ERROR ":" :) (labeled_statement "wios::clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n                   uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14));" statement_identifier : (ERROR ":" :) (expression_statement "clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n                   uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14));" (call_expression "clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n                   uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14))" identifier (argument_list "((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n                   uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14))" ( (cast_expression "(wios *)(param_1 + *(int *)(iVar10 + -0xc))" ( (type_descriptor "wios *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(int *)(iVar10 + -0xc))" ( (binary_expression "param_1 + *(int *)(iVar10 + -0xc)" identifier + (pointer_expression "*(int *)(iVar10 + -0xc)" * (cast_expression "(int *)(iVar10 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + -0xc)" ( (binary_expression "iVar10 + -0xc" identifier + number_literal) ))))) ))) , (binary_expression "uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14)" identifier | (pointer_expression "*(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14)" * (cast_expression "(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14)" ( (binary_expression "(wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14" (cast_expression "(wios *)(param_1 + *(int *)(iVar10 + -0xc))" ( (type_descriptor "wios *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(int *)(iVar10 + -0xc))" ( (binary_expression "param_1 + *(int *)(iVar10 + -0xc)" identifier + (pointer_expression "*(int *)(iVar10 + -0xc)" * (cast_expression "(int *)(iVar10 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + -0xc)" ( (binary_expression "iVar10 + -0xc" identifier + number_literal) ))))) ))) + number_literal) ))))) ))) ;)))) (return_statement "return param_1;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , BOOL ))) ;)))) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (cast_expression ( (type_descriptor TYPE) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (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 (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (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 *)) ) (call_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) < IDENT) < (binary_expression IDENT >> IDENT)) )) (argument_list ( IDENT ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])))) ;) }) (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 )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != IDENT)) )) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (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 , LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_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 = (binary_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 = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) }) (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 { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) )))) = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) <= (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (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 )))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) )))) = LIT) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) }))) }))) (labeled_statement statement_identifier : (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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 (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) + LIT) ))))) ))) ;)))) (return_statement return IDENT ;) })))
(function_definition "wistream * FUN_002e8df0(wistream *param_1,int *param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int *piVar3;\n  int *piVar4;\n  int *piVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  int *piVar9;\n  int iVar10;\n  int iVar11;\n  undefined1 auStack_38 [4];\n  sentry local_34 [16];\n  \n  std::wistream::sentry::sentry(local_34,param_1,false);\n  if (local_34[0] == (sentry)0x0) {\n    iVar10 = *(int *)param_1;\n    uVar8 = 4;\n  }\n  else {\n    iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);\n    if (iVar10 < 1) {\n      iVar10 = 0x7fffffff;\n    }\n    (*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c);\n                    \n    piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38);\n    (*(code *)PTR__locale_00433084)(auStack_38);\n    piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);\n    if ((int *)piVar5[2] < (int *)piVar5[3]) {\n      iVar6 = *(int *)piVar5[2];\n    }\n    else {\n                    \n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\n    iVar10 = iVar10 + -1;\n    iVar7 = 0;\n    while (piVar9 = param_2, iVar7 != iVar10) {\n      while( true ) {\n        param_2 = piVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    \n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = piVar9 + 1;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *piVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    \n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        piVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\nLAB_002e8f4c:\n    piVar9 = param_2;\n    iVar11 = iVar10;\n    if (iVar6 == -1) {\nLAB_002e90a0:\n      iVar10 = *(int *)param_1;\n      uVar8 = 2;\n      *param_2 = 0;\n      if (iVar7 == 0) {\n        uVar8 = 6;\n      }\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n    }\n    else {\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      *piVar9 = 0;\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      uVar8 = 4;\n    }\n  }\nLAB_002e8fd4:\n  std::wios::clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n                   uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14));\n  return param_1;\n}" (type_identifier "wistream") (pointer_declarator "* FUN_002e8df0(wistream *param_1,int *param_2)" (* "*") (function_declarator "FUN_002e8df0(wistream *param_1,int *param_2)" (identifier "FUN_002e8df0") (parameter_list "(wistream *param_1,int *param_2)" (( "(") (parameter_declaration "wistream *param_1" (type_identifier "wistream") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")")))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int *piVar3;\n  int *piVar4;\n  int *piVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  int *piVar9;\n  int iVar10;\n  int iVar11;\n  undefined1 auStack_38 [4];\n  sentry local_34 [16];\n  \n  std::wistream::sentry::sentry(local_34,param_1,false);\n  if (local_34[0] == (sentry)0x0) {\n    iVar10 = *(int *)param_1;\n    uVar8 = 4;\n  }\n  else {\n    iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);\n    if (iVar10 < 1) {\n      iVar10 = 0x7fffffff;\n    }\n    (*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c);\n                    \n    piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38);\n    (*(code *)PTR__locale_00433084)(auStack_38);\n    piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);\n    if ((int *)piVar5[2] < (int *)piVar5[3]) {\n      iVar6 = *(int *)piVar5[2];\n    }\n    else {\n                    \n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\n    iVar10 = iVar10 + -1;\n    iVar7 = 0;\n    while (piVar9 = param_2, iVar7 != iVar10) {\n      while( true ) {\n        param_2 = piVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    \n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = piVar9 + 1;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *piVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    \n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        piVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\nLAB_002e8f4c:\n    piVar9 = param_2;\n    iVar11 = iVar10;\n    if (iVar6 == -1) {\nLAB_002e90a0:\n      iVar10 = *(int *)param_1;\n      uVar8 = 2;\n      *param_2 = 0;\n      if (iVar7 == 0) {\n        uVar8 = 6;\n      }\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n    }\n    else {\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      *piVar9 = 0;\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      uVar8 = 4;\n    }\n  }\nLAB_002e8fd4:\n  std::wios::clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n                   uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14));\n  return param_1;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "undefined1 auStack_38 [4];" (type_identifier "undefined1") (array_declarator "auStack_38 [4]" (identifier "auStack_38") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "sentry local_34 [16];" (type_identifier "sentry") (array_declarator "local_34 [16]" (identifier "local_34") ([ "[") (number_literal "16") (] "]")) (; ";")) (labeled_statement "std::wistream::sentry::sentry(local_34,param_1,false);" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "wistream::sentry::sentry(local_34,param_1,false);" (statement_identifier "wistream") (: ":") (ERROR ":" (: ":")) (labeled_statement "sentry::sentry(local_34,param_1,false);" (statement_identifier "sentry") (: ":") (ERROR ":" (: ":")) (expression_statement "sentry(local_34,param_1,false);" (call_expression "sentry(local_34,param_1,false)" (identifier "sentry") (argument_list "(local_34,param_1,false)" (( "(") (identifier "local_34") (, ",") (identifier "param_1") (, ",") (false "false") () ")"))) (; ";"))))) (if_statement "if (local_34[0] == (sentry)0x0) {\n    iVar10 = *(int *)param_1;\n    uVar8 = 4;\n  }\n  else {\n    iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);\n    if (iVar10 < 1) {\n      iVar10 = 0x7fffffff;\n    }\n    (*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c);\n                    \n    piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38);\n    (*(code *)PTR__locale_00433084)(auStack_38);\n    piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);\n    if ((int *)piVar5[2] < (int *)piVar5[3]) {\n      iVar6 = *(int *)piVar5[2];\n    }\n    else {\n                    \n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\n    iVar10 = iVar10 + -1;\n    iVar7 = 0;\n    while (piVar9 = param_2, iVar7 != iVar10) {\n      while( true ) {\n        param_2 = piVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    \n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = piVar9 + 1;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *piVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    \n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        piVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\nLAB_002e8f4c:\n    piVar9 = param_2;\n    iVar11 = iVar10;\n    if (iVar6 == -1) {\nLAB_002e90a0:\n      iVar10 = *(int *)param_1;\n      uVar8 = 2;\n      *param_2 = 0;\n      if (iVar7 == 0) {\n        uVar8 = 6;\n      }\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n    }\n    else {\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      *piVar9 = 0;\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      uVar8 = 4;\n    }\n  }" (if "if") (parenthesized_expression "(local_34[0] == (sentry)0x0)" (( "(") (binary_expression "local_34[0] == (sentry)0x0" (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) (== "==") (cast_expression "(sentry)0x0" (( "(") (type_descriptor "sentry" (type_identifier "sentry")) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    iVar10 = *(int *)param_1;\n    uVar8 = 4;\n  }" ({ "{") (expression_statement "iVar10 = *(int *)param_1;" (assignment_expression "iVar10 = *(int *)param_1" (identifier "iVar10") (= "=") (pointer_expression "*(int *)param_1" (* "*") (cast_expression "(int *)param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1")))) (; ";")) (expression_statement "uVar8 = 4;" (assignment_expression "uVar8 = 4" (identifier "uVar8") (= "=") (number_literal "4")) (; ";")) (} "}")) (else_clause "else {\n    iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);\n    if (iVar10 < 1) {\n      iVar10 = 0x7fffffff;\n    }\n    (*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c);\n                    \n    piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38);\n    (*(code *)PTR__locale_00433084)(auStack_38);\n    piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);\n    if ((int *)piVar5[2] < (int *)piVar5[3]) {\n      iVar6 = *(int *)piVar5[2];\n    }\n    else {\n                    \n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\n    iVar10 = iVar10 + -1;\n    iVar7 = 0;\n    while (piVar9 = param_2, iVar7 != iVar10) {\n      while( true ) {\n        param_2 = piVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    \n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = piVar9 + 1;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *piVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    \n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        piVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\nLAB_002e8f4c:\n    piVar9 = param_2;\n    iVar11 = iVar10;\n    if (iVar6 == -1) {\nLAB_002e90a0:\n      iVar10 = *(int *)param_1;\n      uVar8 = 2;\n      *param_2 = 0;\n      if (iVar7 == 0) {\n        uVar8 = 6;\n      }\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n    }\n    else {\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      *piVar9 = 0;\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      uVar8 = 4;\n    }\n  }" (else "else") (compound_statement "{\n    iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);\n    if (iVar10 < 1) {\n      iVar10 = 0x7fffffff;\n    }\n    (*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c);\n                    \n    piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38);\n    (*(code *)PTR__locale_00433084)(auStack_38);\n    piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);\n    if ((int *)piVar5[2] < (int *)piVar5[3]) {\n      iVar6 = *(int *)piVar5[2];\n    }\n    else {\n                    \n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\n    iVar10 = iVar10 + -1;\n    iVar7 = 0;\n    while (piVar9 = param_2, iVar7 != iVar10) {\n      while( true ) {\n        param_2 = piVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    \n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = piVar9 + 1;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *piVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    \n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        piVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }\nLAB_002e8f4c:\n    piVar9 = param_2;\n    iVar11 = iVar10;\n    if (iVar6 == -1) {\nLAB_002e90a0:\n      iVar10 = *(int *)param_1;\n      uVar8 = 2;\n      *param_2 = 0;\n      if (iVar7 == 0) {\n        uVar8 = 6;\n      }\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n    }\n    else {\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      *piVar9 = 0;\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      uVar8 = 4;\n    }\n  }" ({ "{") (expression_statement "iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);" (assignment_expression "iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8)" (* "*") (cast_expression "(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8)" (( "(") (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc) + 8" (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 "8")) () ")"))))) (; ";")) (if_statement "if (iVar10 < 1) {\n      iVar10 = 0x7fffffff;\n    }" (if "if") (parenthesized_expression "(iVar10 < 1)" (( "(") (binary_expression "iVar10 < 1" (identifier "iVar10") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n      iVar10 = 0x7fffffff;\n    }" ({ "{") (expression_statement "iVar10 = 0x7fffffff;" (assignment_expression "iVar10 = 0x7fffffff" (identifier "iVar10") (= "=") (number_literal "0x7fffffff")) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c);" (call_expression "(*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c)" (parenthesized_expression "(*(code *)PTR_locale_004338b0)" (( "(") (pointer_expression "*(code *)PTR_locale_004338b0" (* "*") (cast_expression "(code *)PTR_locale_004338b0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_locale_004338b0"))) () ")")) (argument_list "(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c)" (( "(") (identifier "auStack_38") (, ",") (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c" (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 "0x6c")) () ")"))) (; ";")) (expression_statement "piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38);" (assignment_expression "piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38)" (identifier "piVar1") (= "=") (cast_expression "(int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38)" (parenthesized_expression "(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)" (( "(") (binary_expression "*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8" (binary_expression "*(code *)PTR_use_facet<std_ctype" (pointer_expression "*(code *)PTR_use_facet" (* "*") (cast_expression "(code *)PTR_use_facet" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_use_facet"))) (< "<") (identifier "std_ctype")) (< "<") (binary_expression "wchar_t>>_00433ac8" (identifier "wchar_t") (>> ">>") (identifier "_00433ac8"))) () ")")) (argument_list "(auStack_38)" (( "(") (identifier "auStack_38") () ")"))))) (; ";")) (expression_statement "(*(code *)PTR__locale_00433084)(auStack_38);" (call_expression "(*(code *)PTR__locale_00433084)(auStack_38)" (parenthesized_expression "(*(code *)PTR__locale_00433084)" (( "(") (pointer_expression "*(code *)PTR__locale_00433084" (* "*") (cast_expression "(code *)PTR__locale_00433084" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR__locale_00433084"))) () ")")) (argument_list "(auStack_38)" (( "(") (identifier "auStack_38") () ")"))) (; ";")) (expression_statement "piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);" (assignment_expression "piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c)" (identifier "piVar5") (= "=") (pointer_expression "*(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c)" (* "*") (cast_expression "(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c)" (( "(") (binary_expression "param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c" (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 "0x7c")) () ")"))))) (; ";")) (if_statement "if ((int *)piVar5[2] < (int *)piVar5[3]) {\n      iVar6 = *(int *)piVar5[2];\n    }\n    else {\n                    \n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }" (if "if") (parenthesized_expression "((int *)piVar5[2] < (int *)piVar5[3])" (( "(") (binary_expression "(int *)piVar5[2] < (int *)piVar5[3]" (cast_expression "(int *)piVar5[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar5[2]" (identifier "piVar5") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(int *)piVar5[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar5[3]" (identifier "piVar5") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n      iVar6 = *(int *)piVar5[2];\n    }" ({ "{") (expression_statement "iVar6 = *(int *)piVar5[2];" (assignment_expression "iVar6 = *(int *)piVar5[2]" (identifier "iVar6") (= "=") (pointer_expression "*(int *)piVar5[2]" (* "*") (cast_expression "(int *)piVar5[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar5[2]" (identifier "piVar5") ([ "[") (number_literal "2") (] "]"))))) (; ";")) (} "}")) (else_clause "else {\n                    \n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }" (else "else") (compound_statement "{\n                    \n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }" ({ "{") (expression_statement "iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);" (assignment_expression "iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5)" (identifier "iVar6") (= "=") (call_expression "(**(code **)(*piVar5 + 0x24))(piVar5)" (parenthesized_expression "(**(code **)(*piVar5 + 0x24))" (( "(") (pointer_expression "**(code **)(*piVar5 + 0x24)" (* "*") (pointer_expression "*(code **)(*piVar5 + 0x24)" (* "*") (cast_expression "(code **)(*piVar5 + 0x24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar5 + 0x24)" (( "(") (binary_expression "*piVar5 + 0x24" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (+ "+") (number_literal "0x24")) () ")"))))) () ")")) (argument_list "(piVar5)" (( "(") (identifier "piVar5") () ")")))) (; ";")) (} "}")))) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" (identifier "iVar10") (= "=") (binary_expression "iVar10 + -1" (identifier "iVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (while_statement "while (piVar9 = param_2, iVar7 != iVar10) {\n      while( true ) {\n        param_2 = piVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    \n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = piVar9 + 1;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *piVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    \n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        piVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }" (while "while") (parenthesized_expression "(piVar9 = param_2, iVar7 != iVar10)" (( "(") (comma_expression "piVar9 = param_2, iVar7 != iVar10" (assignment_expression "piVar9 = param_2" (identifier "piVar9") (= "=") (identifier "param_2")) (, ",") (binary_expression "iVar7 != iVar10" (identifier "iVar7") (!= "!=") (identifier "iVar10"))) () ")")) (compound_statement "{\n      while( true ) {\n        param_2 = piVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    \n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = piVar9 + 1;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *piVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    \n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        piVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }\n      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);\n    }" ({ "{") (while_statement "while( true ) {\n        param_2 = piVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    \n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = piVar9 + 1;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *piVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    \n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        piVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        param_2 = piVar9;\n        if (iVar6 == -1) goto LAB_002e90a0;\n                    \n        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);\n        iVar11 = iVar7;\n        if (iVar2 != 0) goto LAB_002e8f54;\n        piVar4 = (int *)piVar5[2];\n        param_2 = piVar9 + 1;\n        piVar3 = (int *)piVar5[3];\n        iVar7 = iVar7 + 1;\n        *piVar9 = iVar6;\n        if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    \n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }\n        if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }\n        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;\n        iVar6 = *(int *)piVar5[2];\n        piVar9 = param_2;\n        if (iVar7 == iVar10) goto LAB_002e8f4c;\n      }" ({ "{") (expression_statement "param_2 = piVar9;" (assignment_expression "param_2 = piVar9" (identifier "param_2") (= "=") (identifier "piVar9")) (; ";")) (if_statement "if (iVar6 == -1) goto LAB_002e90a0;" (if "if") (parenthesized_expression "(iVar6 == -1)" (( "(") (binary_expression "iVar6 == -1" (identifier "iVar6") (== "==") (number_literal "-1")) () ")")) (goto_statement "goto LAB_002e90a0;" (goto "goto") (statement_identifier "LAB_002e90a0") (; ";"))) (expression_statement "iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);" (assignment_expression "iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6)" (identifier "iVar2") (= "=") (call_expression "(**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6)" (parenthesized_expression "(**(code **)(*piVar1 + 8))" (( "(") (pointer_expression "**(code **)(*piVar1 + 8)" (* "*") (pointer_expression "*(code **)(*piVar1 + 8)" (* "*") (cast_expression "(code **)(*piVar1 + 8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar1 + 8)" (( "(") (binary_expression "*piVar1 + 8" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (+ "+") (number_literal "8")) () ")"))))) () ")")) (argument_list "(piVar1,0x20,iVar6)" (( "(") (identifier "piVar1") (, ",") (number_literal "0x20") (, ",") (identifier "iVar6") () ")")))) (; ";")) (expression_statement "iVar11 = iVar7;" (assignment_expression "iVar11 = iVar7" (identifier "iVar11") (= "=") (identifier "iVar7")) (; ";")) (if_statement "if (iVar2 != 0) goto LAB_002e8f54;" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_002e8f54;" (goto "goto") (statement_identifier "LAB_002e8f54") (; ";"))) (expression_statement "piVar4 = (int *)piVar5[2];" (assignment_expression "piVar4 = (int *)piVar5[2]" (identifier "piVar4") (= "=") (cast_expression "(int *)piVar5[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar5[2]" (identifier "piVar5") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "param_2 = piVar9 + 1;" (assignment_expression "param_2 = piVar9 + 1" (identifier "param_2") (= "=") (binary_expression "piVar9 + 1" (identifier "piVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar3 = (int *)piVar5[3];" (assignment_expression "piVar3 = (int *)piVar5[3]" (identifier "piVar3") (= "=") (cast_expression "(int *)piVar5[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar5[3]" (identifier "piVar5") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*piVar9 = iVar6;" (assignment_expression "*piVar9 = iVar6" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (= "=") (identifier "iVar6")) (; ";")) (if_statement "if (piVar4 < piVar3) {\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }\n        else {\n                    \n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }" (if "if") (parenthesized_expression "(piVar4 < piVar3)" (( "(") (binary_expression "piVar4 < piVar3" (identifier "piVar4") (< "<") (identifier "piVar3")) () ")")) (compound_statement "{\n          iVar6 = *piVar4;\n          piVar5[2] = (int)(piVar4 + 1);\n        }" ({ "{") (expression_statement "iVar6 = *piVar4;" (assignment_expression "iVar6 = *piVar4" (identifier "iVar6") (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";")) (expression_statement "piVar5[2] = (int)(piVar4 + 1);" (assignment_expression "piVar5[2] = (int)(piVar4 + 1)" (subscript_expression "piVar5[2]" (identifier "piVar5") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)(piVar4 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(piVar4 + 1)" (( "(") (binary_expression "piVar4 + 1" (identifier "piVar4") (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n                    \n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }" (else "else") (compound_statement "{\n                    \n          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);\n        }" ({ "{") (expression_statement "iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);" (assignment_expression "iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5)" (identifier "iVar6") (= "=") (call_expression "(**(code **)(*piVar5 + 0x28))(piVar5)" (parenthesized_expression "(**(code **)(*piVar5 + 0x28))" (( "(") (pointer_expression "**(code **)(*piVar5 + 0x28)" (* "*") (pointer_expression "*(code **)(*piVar5 + 0x28)" (* "*") (cast_expression "(code **)(*piVar5 + 0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar5 + 0x28)" (( "(") (binary_expression "*piVar5 + 0x28" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (argument_list "(piVar5)" (( "(") (identifier "piVar5") () ")")))) (; ";")) (} "}")))) (if_statement "if (iVar6 == -1) {\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }" (if "if") (parenthesized_expression "(iVar6 == -1)" (( "(") (binary_expression "iVar6 == -1" (identifier "iVar6") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n          iVar10 = *(int *)param_1;\n          uVar8 = 2;\n          *param_2 = 0;\n          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n          goto LAB_002e8fd4;\n        }" ({ "{") (expression_statement "iVar10 = *(int *)param_1;" (assignment_expression "iVar10 = *(int *)param_1" (identifier "iVar10") (= "=") (pointer_expression "*(int *)param_1" (* "*") (cast_expression "(int *)param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1")))) (; ";")) (expression_statement "uVar8 = 2;" (assignment_expression "uVar8 = 2" (identifier "uVar8") (= "=") (number_literal "2")) (; ";")) (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0" (pointer_expression "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8)" (* "*") (cast_expression "(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + *(int *)(iVar10 + -0xc) + 8)" (( "(") (binary_expression "param_1 + *(int *)(iVar10 + -0xc) + 8" (binary_expression "param_1 + *(int *)(iVar10 + -0xc)" (identifier "param_1") (+ "+") (pointer_expression "*(int *)(iVar10 + -0xc)" (* "*") (cast_expression "(int *)(iVar10 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + -0xc)" (( "(") (binary_expression "iVar10 + -0xc" (identifier "iVar10") (+ "+") (number_literal "-0xc")) () ")"))))) (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_002e8fd4;" (goto "goto") (statement_identifier "LAB_002e8fd4") (; ";")) (} "}"))) (if_statement "if ((int *)piVar5[3] <= (int *)piVar5[2]) break;" (if "if") (parenthesized_expression "((int *)piVar5[3] <= (int *)piVar5[2])" (( "(") (binary_expression "(int *)piVar5[3] <= (int *)piVar5[2]" (cast_expression "(int *)piVar5[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar5[3]" (identifier "piVar5") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (cast_expression "(int *)piVar5[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar5[2]" (identifier "piVar5") ([ "[") (number_literal "2") (] "]")))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar6 = *(int *)piVar5[2];" (assignment_expression "iVar6 = *(int *)piVar5[2]" (identifier "iVar6") (= "=") (pointer_expression "*(int *)piVar5[2]" (* "*") (cast_expression "(int *)piVar5[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar5[2]" (identifier "piVar5") ([ "[") (number_literal "2") (] "]"))))) (; ";")) (expression_statement "piVar9 = param_2;" (assignment_expression "piVar9 = param_2" (identifier "piVar9") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (iVar7 == iVar10) goto LAB_002e8f4c;" (if "if") (parenthesized_expression "(iVar7 == iVar10)" (( "(") (binary_expression "iVar7 == iVar10" (identifier "iVar7") (== "==") (identifier "iVar10")) () ")")) (goto_statement "goto LAB_002e8f4c;" (goto "goto") (statement_identifier "LAB_002e8f4c") (; ";"))) (} "}"))) (expression_statement "iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);" (assignment_expression "iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5)" (identifier "iVar6") (= "=") (call_expression "(**(code **)(*piVar5 + 0x24))(piVar5)" (parenthesized_expression "(**(code **)(*piVar5 + 0x24))" (( "(") (pointer_expression "**(code **)(*piVar5 + 0x24)" (* "*") (pointer_expression "*(code **)(*piVar5 + 0x24)" (* "*") (cast_expression "(code **)(*piVar5 + 0x24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar5 + 0x24)" (( "(") (binary_expression "*piVar5 + 0x24" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (+ "+") (number_literal "0x24")) () ")"))))) () ")")) (argument_list "(piVar5)" (( "(") (identifier "piVar5") () ")")))) (; ";")) (} "}"))) (labeled_statement "LAB_002e8f4c:\n    piVar9 = param_2;" (statement_identifier "LAB_002e8f4c") (: ":") (expression_statement "piVar9 = param_2;" (assignment_expression "piVar9 = param_2" (identifier "piVar9") (= "=") (identifier "param_2")) (; ";"))) (expression_statement "iVar11 = iVar10;" (assignment_expression "iVar11 = iVar10" (identifier "iVar11") (= "=") (identifier "iVar10")) (; ";")) (if_statement "if (iVar6 == -1) {\nLAB_002e90a0:\n      iVar10 = *(int *)param_1;\n      uVar8 = 2;\n      *param_2 = 0;\n      if (iVar7 == 0) {\n        uVar8 = 6;\n      }\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n    }\n    else {\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      *piVar9 = 0;\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      uVar8 = 4;\n    }" (if "if") (parenthesized_expression "(iVar6 == -1)" (( "(") (binary_expression "iVar6 == -1" (identifier "iVar6") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\nLAB_002e90a0:\n      iVar10 = *(int *)param_1;\n      uVar8 = 2;\n      *param_2 = 0;\n      if (iVar7 == 0) {\n        uVar8 = 6;\n      }\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n    }" ({ "{") (labeled_statement "LAB_002e90a0:\n      iVar10 = *(int *)param_1;" (statement_identifier "LAB_002e90a0") (: ":") (expression_statement "iVar10 = *(int *)param_1;" (assignment_expression "iVar10 = *(int *)param_1" (identifier "iVar10") (= "=") (pointer_expression "*(int *)param_1" (* "*") (cast_expression "(int *)param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1")))) (; ";"))) (expression_statement "uVar8 = 2;" (assignment_expression "uVar8 = 2" (identifier "uVar8") (= "=") (number_literal "2")) (; ";")) (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar7 == 0) {\n        uVar8 = 6;\n      }" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar8 = 6;\n      }" ({ "{") (expression_statement "uVar8 = 6;" (assignment_expression "uVar8 = 6" (identifier "uVar8") (= "=") (number_literal "6")) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0" (pointer_expression "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8)" (* "*") (cast_expression "(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + *(int *)(iVar10 + -0xc) + 8)" (( "(") (binary_expression "param_1 + *(int *)(iVar10 + -0xc) + 8" (binary_expression "param_1 + *(int *)(iVar10 + -0xc)" (identifier "param_1") (+ "+") (pointer_expression "*(int *)(iVar10 + -0xc)" (* "*") (cast_expression "(int *)(iVar10 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + -0xc)" (( "(") (binary_expression "iVar10 + -0xc" (identifier "iVar10") (+ "+") (number_literal "-0xc")) () ")"))))) (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      *piVar9 = 0;\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      uVar8 = 4;\n    }" (else "else") (compound_statement "{\nLAB_002e8f54:\n      iVar10 = *(int *)param_1;\n      *piVar9 = 0;\n      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;\n      if (iVar11 != 0) {\n        return param_1;\n      }\n      uVar8 = 4;\n    }" ({ "{") (labeled_statement "LAB_002e8f54:\n      iVar10 = *(int *)param_1;" (statement_identifier "LAB_002e8f54") (: ":") (expression_statement "iVar10 = *(int *)param_1;" (assignment_expression "iVar10 = *(int *)param_1" (identifier "iVar10") (= "=") (pointer_expression "*(int *)param_1" (* "*") (cast_expression "(int *)param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1")))) (; ";"))) (expression_statement "*piVar9 = 0;" (assignment_expression "*piVar9 = 0" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0" (pointer_expression "*(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8)" (* "*") (cast_expression "(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + *(int *)(iVar10 + -0xc) + 8)" (( "(") (binary_expression "param_1 + *(int *)(iVar10 + -0xc) + 8" (binary_expression "param_1 + *(int *)(iVar10 + -0xc)" (identifier "param_1") (+ "+") (pointer_expression "*(int *)(iVar10 + -0xc)" (* "*") (cast_expression "(int *)(iVar10 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + -0xc)" (( "(") (binary_expression "iVar10 + -0xc" (identifier "iVar10") (+ "+") (number_literal "-0xc")) () ")"))))) (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar11 != 0) {\n        return param_1;\n      }" (if "if") (parenthesized_expression "(iVar11 != 0)" (( "(") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        return param_1;\n      }" ({ "{") (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (expression_statement "uVar8 = 4;" (assignment_expression "uVar8 = 4" (identifier "uVar8") (= "=") (number_literal "4")) (; ";")) (} "}")))) (} "}")))) (labeled_statement "LAB_002e8fd4:\n  std::wios::clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n                   uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14));" (statement_identifier "LAB_002e8fd4") (: ":") (labeled_statement "std::wios::clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n                   uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14));" (statement_identifier "std") (: ":") (ERROR ":" (: ":")) (labeled_statement "wios::clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n                   uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14));" (statement_identifier "wios") (: ":") (ERROR ":" (: ":")) (expression_statement "clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n                   uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14));" (call_expression "clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n                   uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14))" (identifier "clear") (argument_list "((wios *)(param_1 + *(int *)(iVar10 + -0xc)),\n                   uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14))" (( "(") (cast_expression "(wios *)(param_1 + *(int *)(iVar10 + -0xc))" (( "(") (type_descriptor "wios *" (type_identifier "wios") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + *(int *)(iVar10 + -0xc))" (( "(") (binary_expression "param_1 + *(int *)(iVar10 + -0xc)" (identifier "param_1") (+ "+") (pointer_expression "*(int *)(iVar10 + -0xc)" (* "*") (cast_expression "(int *)(iVar10 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + -0xc)" (( "(") (binary_expression "iVar10 + -0xc" (identifier "iVar10") (+ "+") (number_literal "-0xc")) () ")"))))) () ")"))) (, ",") (binary_expression "uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14)" (identifier "uVar8") (| "|") (pointer_expression "*(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14)" (* "*") (cast_expression "(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14)" (( "(") (binary_expression "(wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14" (cast_expression "(wios *)(param_1 + *(int *)(iVar10 + -0xc))" (( "(") (type_descriptor "wios *" (type_identifier "wios") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + *(int *)(iVar10 + -0xc))" (( "(") (binary_expression "param_1 + *(int *)(iVar10 + -0xc)" (identifier "param_1") (+ "+") (pointer_expression "*(int *)(iVar10 + -0xc)" (* "*") (cast_expression "(int *)(iVar10 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + -0xc)" (( "(") (binary_expression "iVar10 + -0xc" (identifier "iVar10") (+ "+") (number_literal "-0xc")) () ")"))))) () ")"))) (+ "+") (number_literal "0x14")) () ")"))))) () ")"))) (; ";"))))) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}")))

/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* std::wistream& std::TEMPNAMEPLACEHOLDERVALUE(std::wistream&, wchar_t*) */

wistream * std::operator>>(wistream *var_1,type_2 *param_2)

{
  int *piVar1;
  int var_7;
  int *var_10;
  int *var_9;
  int *piVar5;
  int var_6;
  int var_5;
  type_1 var_15;
  type_2 *var_8;
  int var_2;
  int var_13;
  type_3 auStack_38 [4];
  type_4 local_34 [16];
  
  wistream::sentry::type_4(local_34,var_1,false);
  if (local_34[0] == (type_4)0x0) {
    var_2 = *(int *)var_1;
    var_15 = var_11;
  }
  else {
    var_2 = *(int *)(var_1 + *(int *)(*(int *)var_1 + -0xc) + 8);
    if (var_2 < 1) {
      var_2 = 0x7fffffff;
    }
    (*(type_5 *)PTR_locale_004338b0)(auStack_38,var_1 + *(int *)(*(int *)var_1 + -0xc) + 0x6c);
                    /* try { // try from 002e8e84 to 002e8e8b has its CatchHandler @ 002e90d0 */
    piVar1 = (int *)(*(type_5 *)PTR_use_facet<var_3<type_2>>var_4)(auStack_38);
    (*(type_5 *)PTR__locale_00433084)(auStack_38);
    piVar5 = *(int **)(var_1 + *(int *)(*(int *)var_1 + -0xc) + 0x7c);
    if ((int *)piVar5[2] < (int *)piVar5[3]) {
      var_6 = *(int *)piVar5[2];
    }
    else {
                    /* try { // try from 002e9084 to 002e908b has its CatchHandler @ 002e8f74 */
      var_6 = (**(type_5 **)(*piVar5 + 0x24))(piVar5);
    }
    var_2 = var_2 + -1;
    var_5 = 0;
    while (var_8 = param_2, var_5 != var_2) {
      while( true ) {
        param_2 = var_8;
        if (var_6 == -1) goto LAB_002e90a0;
                    /* try { // try from 002e8ef0 to 002e8ef7 has its CatchHandler @ 002e90c8 */
        var_7 = (**(type_5 **)(*piVar1 + 8))(piVar1,0x20,var_6);
        var_13 = var_5;
        if (var_7 != 0) goto LAB_002e8f54;
        var_9 = (int *)piVar5[2];
        param_2 = var_8 + 2;
        var_10 = (int *)piVar5[3];
        var_5 = var_5 + 1;
        *(int *)var_8 = var_6;
        if (var_9 < var_10) {
          var_6 = *var_9;
          piVar5[2] = (int)(var_9 + 1);
        }
        else {
                    /* try { // try from 002e9034 to 002e906f has its CatchHandler @ 002e90c8 */
          var_6 = (**(type_5 **)(*piVar5 + 0x28))(piVar5);
        }
        if (var_6 == -1) {
          var_2 = *(int *)var_1;
          var_15 = var_12;
          param_2[0] = L'\0';
          param_2[1] = L'\0';
          *(type_6 *)(var_1 + *(int *)(var_2 + -0xc) + 8) = 0;
          goto LAB_002e8fd4;
        }
        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;
        var_6 = *(int *)piVar5[2];
        var_8 = param_2;
        if (var_5 == var_2) goto LAB_002e8f4c;
      }
      var_6 = (**(type_5 **)(*piVar5 + 0x24))(piVar5);
    }
LAB_002e8f4c:
    var_8 = param_2;
    var_13 = var_2;
    if (var_6 == -1) {
LAB_002e90a0:
      var_2 = *(int *)var_1;
      var_15 = var_12;
      param_2[0] = L'\0';
      param_2[1] = L'\0';
      if (var_5 == 0) {
        var_15 = var_11|var_12;
      }
      *(type_6 *)(var_1 + *(int *)(var_2 + -0xc) + 8) = 0;
    }
    else {
LAB_002e8f54:
      var_2 = *(int *)var_1;
      var_8[0] = L'\0';
      var_8[1] = L'\0';
      *(type_6 *)(var_1 + *(int *)(var_2 + -0xc) + 8) = 0;
      if (var_13 != 0) {
        return var_1;
      }
      var_15 = var_11;
    }
  }
LAB_002e8fd4:
  wios::var_14((type_7 *)(var_1 + *(int *)(var_2 + -0xc)),
              var_15 | *(type_1 *)((type_7 *)(var_1 + *(int *)(var_2 + -0xc)) + 0x14));
  return var_1;
}


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

wistream * MASKED(wistream *param_1,int *param_2)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  int *piVar4;
  int *piVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  int *piVar9;
  int iVar10;
  int iVar11;
  undefined1 auStack_38 [4];
  sentry local_34 [16];
  
  std::wistream::sentry::sentry(local_34,param_1,false);
  if (local_34[0] == (sentry)0x0) {
    iVar10 = *(int *)param_1;
    uVar8 = 4;
  }
  else {
    iVar10 = *(int *)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 8);
    if (iVar10 < 1) {
      iVar10 = 0x7fffffff;
    }
    (*(code *)PTR_locale_004338b0)(auStack_38,param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x6c);
                    /* try { // try from 002e8e84 to 002e8e8b has its CatchHandler @ 002e90d0 */
    piVar1 = (int *)(*(code *)PTR_use_facet<std_ctype<wchar_t>>_00433ac8)(auStack_38);
    (*(code *)PTR__locale_00433084)(auStack_38);
    piVar5 = *(int **)(param_1 + *(int *)(*(int *)param_1 + -0xc) + 0x7c);
    if ((int *)piVar5[2] < (int *)piVar5[3]) {
      iVar6 = *(int *)piVar5[2];
    }
    else {
                    /* try { // try from 002e9084 to 002e908b has its CatchHandler @ 002e8f74 */
      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);
    }
    iVar10 = iVar10 + -1;
    iVar7 = 0;
    while (piVar9 = param_2, iVar7 != iVar10) {
      while( true ) {
        param_2 = piVar9;
        if (iVar6 == -1) goto LAB_002e90a0;
                    /* try { // try from 002e8ef0 to 002e8ef7 has its CatchHandler @ 002e90c8 */
        iVar2 = (**(code **)(*piVar1 + 8))(piVar1,0x20,iVar6);
        iVar11 = iVar7;
        if (iVar2 != 0) goto LAB_002e8f54;
        piVar4 = (int *)piVar5[2];
        param_2 = piVar9 + 1;
        piVar3 = (int *)piVar5[3];
        iVar7 = iVar7 + 1;
        *piVar9 = iVar6;
        if (piVar4 < piVar3) {
          iVar6 = *piVar4;
          piVar5[2] = (int)(piVar4 + 1);
        }
        else {
                    /* try { // try from 002e9034 to 002e906f has its CatchHandler @ 002e90c8 */
          iVar6 = (**(code **)(*piVar5 + 0x28))(piVar5);
        }
        if (iVar6 == -1) {
          iVar10 = *(int *)param_1;
          uVar8 = 2;
          *param_2 = 0;
          *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;
          goto LAB_002e8fd4;
        }
        if ((int *)piVar5[3] <= (int *)piVar5[2]) break;
        iVar6 = *(int *)piVar5[2];
        piVar9 = param_2;
        if (iVar7 == iVar10) goto LAB_002e8f4c;
      }
      iVar6 = (**(code **)(*piVar5 + 0x24))(piVar5);
    }
LAB_002e8f4c:
    piVar9 = param_2;
    iVar11 = iVar10;
    if (iVar6 == -1) {
LAB_002e90a0:
      iVar10 = *(int *)param_1;
      uVar8 = 2;
      *param_2 = 0;
      if (iVar7 == 0) {
        uVar8 = 6;
      }
      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;
    }
    else {
LAB_002e8f54:
      iVar10 = *(int *)param_1;
      *piVar9 = 0;
      *(undefined4 *)(param_1 + *(int *)(iVar10 + -0xc) + 8) = 0;
      if (iVar11 != 0) {
        return param_1;
      }
      uVar8 = 4;
    }
  }
LAB_002e8fd4:
  std::wios::clear((wios *)(param_1 + *(int *)(iVar10 + -0xc)),
                   uVar8 | *(uint *)((wios *)(param_1 + *(int *)(iVar10 + -0xc)) + 0x14));
  return param_1;
}

