
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* std::filebuf::underflow() */

uint __thiscall std::filebuf::underflow(filebuf *this)

{
  int *piVar1;
  undefined4 uVar2;
  bool bVar3;
  bool bVar4;
  char cVar5;
  uint uVar6;
  byte *pbVar7;
  int iVar8;
  uint uVar9;
  char *pcVar10;
  uint uVar11;
  char *__dest;
  void *__src;
  int iVar12;
  void *__dest_00;
  size_t __n;
  uint local_3c;
  void *local_20 [4];
  
  if (((byte)this[0x40] & 8) == 0) {
LAB_0021286d:
    uVar6 = 0xffffffff;
  }
  else {
    if (this[0x66] == (filebuf)0x0) {
      pbVar7 = *(byte **)(this + 8);
      if (this[0x70] == (filebuf)0x0) goto LAB_002124b2;
LAB_00212506:
      this[0x70] = (filebuf)0x0;
      pbVar7 = (byte *)((uint)(*(byte **)(this + 4) != pbVar7) + *(int *)(this + 0x68));
      *(byte **)(this + 0xc) = *(byte **)(this + 0x6c);
      *(byte **)(this + 0x68) = pbVar7;
      *(undefined4 *)(this + 4) = *(undefined4 *)(this + 0x5c);
      *(byte **)(this + 8) = pbVar7;
      if (*(byte **)(this + 0x6c) <= pbVar7) goto LAB_0021252c;
    }
    else {
      iVar12 = (**(code **)(*(int *)this + 0x34))(this,0xffffffff);
      if (iVar12 == -1) {
        return 0xffffffff;
      }
      pbVar7 = *(byte **)(this + 0x5c);
      *(undefined4 *)(this + 0x14) = 0;
      *(undefined4 *)(this + 0x10) = 0;
      *(byte **)(this + 4) = pbVar7;
      *(byte **)(this + 8) = pbVar7;
      *(byte **)(this + 0xc) = pbVar7;
      *(undefined4 *)(this + 0x18) = 0;
      this[0x66] = (filebuf)0x0;
      if (this[0x70] != (filebuf)0x0) goto LAB_00212506;
LAB_002124b2:
      if (*(byte **)(this + 0xc) <= pbVar7) {
LAB_0021252c:
        iVar12 = 2;
        if (1 < *(uint *)(this + 0x60)) {
          iVar12 = *(int *)(this + 0x60);
        }
        uVar6 = iVar12 - 1;
        piVar1 = *(int **)(this + 0x74);
        if (piVar1 == (int *)0x0) {
                    /* WARNING: Subroutine does not return */
          __throw_bad_cast();
        }
        cVar5 = (**(code **)(*piVar1 + 0x18))(piVar1);
        if (cVar5 != '\0') {
          uVar9 = __basic_file<char>::xsgetn
                            ((__basic_file<char> *)(this + 0x38),*(char **)(this + 4),uVar6);
          if (uVar9 != 0) {
            if (0 < (int)uVar9) {
LAB_002127e8:
              pbVar7 = *(byte **)(this + 0x5c);
              *(byte **)(this + 4) = pbVar7;
              *(byte **)(this + 8) = pbVar7;
              if (((byte)this[0x40] & 8) == 0) {
                *(byte **)(this + 0xc) = pbVar7;
              }
              else {
                *(byte **)(this + 0xc) = pbVar7 + uVar9;
              }
              *(undefined4 *)(this + 0x14) = 0;
              *(undefined4 *)(this + 0x10) = 0;
              *(undefined4 *)(this + 0x18) = 0;
              this[0x65] = (filebuf)0x1;
              return (uint)*pbVar7;
            }
LAB_002127c6:
                    /* WARNING: Subroutine does not return */
            __throw_ios_failure("basic_filebuf::underflow error reading the file");
          }
LAB_00212848:
          uVar2 = *(undefined4 *)(this + 0x5c);
          *(undefined4 *)(this + 0x14) = 0;
          *(undefined4 *)(this + 0x10) = 0;
          *(undefined4 *)(this + 4) = uVar2;
          *(undefined4 *)(this + 8) = uVar2;
          *(undefined4 *)(this + 0xc) = uVar2;
          *(undefined4 *)(this + 0x18) = 0;
          this[0x65] = (filebuf)0x0;
          goto LAB_0021286d;
        }
        iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x14))(*(int **)(this + 0x74));
        if (iVar8 < 1) {
          iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x20))(*(int **)(this + 0x74));
          local_3c = iVar12 + -2 + iVar8;
          uVar9 = uVar6;
        }
        else {
          local_3c = iVar8 * uVar6;
          uVar9 = local_3c;
        }
        __n = *(int *)(this + 0x84) - (int)*(void **)(this + 0x80);
        iVar12 = uVar9 - __n;
        if ((int)uVar9 <= (int)__n) {
          iVar12 = 0;
        }
        iVar8 = *(int *)(this + 0x7c);
        if ((this[0x65] == (filebuf)0x0) || (*(int *)(this + 0xc) != *(int *)(this + 4))) {
          if (iVar8 < (int)local_3c) {
            __dest = (char *)operator_new__(local_3c);
            if (__n != 0) goto LAB_00212947;
            goto LAB_002128b5;
          }
          __dest = *(char **)(this + 0x78);
          if (__n != 0) goto LAB_002128fd;
        }
        else if (__n == 0) {
          if (iVar8 < (int)local_3c) {
            __dest = (char *)operator_new__(local_3c);
            goto LAB_002128b5;
          }
          __dest = *(char **)(this + 0x78);
        }
        else if (iVar8 < (int)local_3c) {
          __dest = (char *)operator_new__(local_3c);
          iVar12 = 0;
LAB_00212947:
          memcpy(__dest,*(void **)(this + 0x80),__n);
LAB_002128b5:
          if (*(void **)(this + 0x78) != (void *)0x0) {
            operator_delete__(*(void **)(this + 0x78));
          }
          *(char **)(this + 0x78) = __dest;
          *(uint *)(this + 0x7c) = local_3c;
        }
        else {
          __dest = *(char **)(this + 0x78);
          iVar12 = 0;
LAB_002128fd:
          memmove(__dest,*(void **)(this + 0x80),__n);
          __dest = *(char **)(this + 0x78);
        }
        pcVar10 = __dest + __n;
        *(char **)(this + 0x80) = __dest;
        *(char **)(this + 0x84) = pcVar10;
        *(undefined4 *)(this + 0x54) = *(undefined4 *)(this + 0x4c);
        *(undefined4 *)(this + 0x58) = *(undefined4 *)(this + 0x50);
        if (iVar12 != 0) {
          iVar8 = 0;
          goto LAB_00212664;
        }
        __dest_00 = *(void **)(this + 4);
        iVar8 = 0;
        local_20[0] = __dest_00;
        if (pcVar10 <= __dest) goto LAB_00212654;
        bVar4 = false;
LAB_00212600:
        local_20[0] = __dest_00;
        iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x10))
                          (*(undefined4 *)(this + 0x74),this + 0x4c,__dest,pcVar10,this + 0x80,
                           __dest_00,uVar6 + (int)__dest_00,local_20);
        if (iVar8 == 3) {
          pcVar10 = *(char **)(this + 0x84);
          __dest_00 = *(void **)(this + 4);
          goto LAB_00212739;
        }
        uVar9 = (int)local_20[0] - *(int *)(this + 4);
        if (iVar8 == 2) {
          if (0 < (int)uVar9) goto LAB_002127e8;
          if (!bVar4) {
                    /* WARNING: Subroutine does not return */
            __throw_ios_failure("basic_filebuf::underflow invalid byte sequence in file");
          }
          goto LAB_00212848;
        }
        bVar3 = (bool)(uVar9 != 0 | bVar4);
        while (!bVar3) {
LAB_00212654:
          while( true ) {
            pcVar10 = *(char **)(this + 0x84);
            iVar12 = 1;
            __n = (int)pcVar10 - *(int *)(this + 0x78);
LAB_00212664:
            if (*(int *)(this + 0x7c) < (int)(__n + iVar12)) {
                    /* WARNING: Subroutine does not return */
              __throw_ios_failure("basic_filebuf::underflow codecvt::max_length() is not valid");
            }
            iVar12 = __basic_file<char>::xsgetn((__basic_file<char> *)(this + 0x38),pcVar10,iVar12);
            if (iVar12 == 0) {
              bVar4 = true;
            }
            else {
              if (iVar12 == -1) goto LAB_002127c6;
              bVar4 = false;
            }
            __dest_00 = *(void **)(this + 4);
            __dest = *(char **)(this + 0x80);
            pcVar10 = (char *)(iVar12 + *(int *)(this + 0x84));
            *(char **)(this + 0x84) = pcVar10;
            if (__dest < pcVar10) goto LAB_00212600;
            local_20[0] = __dest_00;
            if (iVar8 == 3) break;
            if (bVar4) goto LAB_002126c9;
          }
LAB_00212739:
          __src = *(void **)(this + 0x78);
          uVar11 = (int)pcVar10 - (int)__src;
          uVar9 = uVar6;
          if ((uVar6 < uVar11) || (uVar9 = uVar11, uVar11 != 0)) {
            memcpy(__dest_00,__src,uVar9);
            __src = (void *)(uVar9 + *(int *)(this + 0x78));
          }
          *(void **)(this + 0x80) = __src;
          iVar8 = 3;
          bVar3 = (bool)(uVar9 != 0 | bVar4);
        }
        if (0 < (int)uVar9) goto LAB_002127e8;
        if (!bVar4) goto LAB_002127c6;
LAB_002126c9:
        uVar2 = *(undefined4 *)(this + 0x5c);
        *(undefined4 *)(this + 0x14) = 0;
        *(undefined4 *)(this + 0x10) = 0;
        *(undefined4 *)(this + 4) = uVar2;
        *(undefined4 *)(this + 8) = uVar2;
        *(undefined4 *)(this + 0xc) = uVar2;
        *(undefined4 *)(this + 0x18) = 0;
        this[0x65] = (filebuf)0x0;
        if (iVar8 == 1) {
                    /* WARNING: Subroutine does not return */
          __throw_ios_failure("basic_filebuf::underflow incomplete character in file");
        }
        goto LAB_0021286d;
      }
    }
    uVar6 = (uint)*pbVar7;
  }
  return uVar6;
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

uint FUN_00212480(int *param_1)

{
  int *piVar1;
  bool bVar2;
  bool bVar3;
  char cVar4;
  uint uVar5;
  byte *pbVar6;
  int iVar7;
  uint uVar8;
  void *pvVar9;
  uint uVar10;
  void *pvVar11;
  int iVar12;
  void *__dest;
  size_t __n;
  uint local_3c;
  void *local_20 [4];
  
  if ((*(byte *)(param_1 + 0x10) & 8) == 0) {
LAB_0021286d:
    uVar5 = 0xffffffff;
  }
  else {
    if (*(char *)((int)param_1 + 0x66) == '\0') {
      pbVar6 = (byte *)param_1[2];
      if ((char)param_1[0x1c] == '\0') goto LAB_002124b2;
LAB_00212506:
      *(undefined1 *)(param_1 + 0x1c) = 0;
      pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]);
      param_1[3] = param_1[0x1b];
      param_1[0x1a] = (int)pbVar6;
      param_1[1] = param_1[0x17];
      param_1[2] = (int)pbVar6;
      if ((byte *)param_1[0x1b] <= pbVar6) goto LAB_0021252c;
    }
    else {
      iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);
      if (iVar12 == -1) {
        return 0xffffffff;
      }
      pbVar6 = (byte *)param_1[0x17];
      param_1[5] = 0;
      param_1[4] = 0;
      param_1[1] = (int)pbVar6;
      param_1[2] = (int)pbVar6;
      param_1[3] = (int)pbVar6;
      param_1[6] = 0;
      *(undefined1 *)((int)param_1 + 0x66) = 0;
      if ((char)param_1[0x1c] != '\0') goto LAB_00212506;
LAB_002124b2:
      if ((byte *)param_1[3] <= pbVar6) {
LAB_0021252c:
        iVar12 = 2;
        if (1 < (uint)param_1[0x18]) {
          iVar12 = param_1[0x18];
        }
        uVar5 = iVar12 - 1;
        piVar1 = (int *)param_1[0x1d];
        if (piVar1 == (int *)0x0) {
                    /* WARNING: Subroutine does not return */
          FUN_0022c630();
        }
        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);
        if (cVar4 != '\0') {
          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);
          if (uVar8 != 0) {
            if (0 < (int)uVar8) {
LAB_002127e8:
              pbVar6 = (byte *)param_1[0x17];
              param_1[1] = (int)pbVar6;
              param_1[2] = (int)pbVar6;
              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {
                param_1[3] = (int)pbVar6;
              }
              else {
                param_1[3] = (int)(pbVar6 + uVar8);
              }
              param_1[5] = 0;
              param_1[4] = 0;
              param_1[6] = 0;
              *(undefined1 *)((int)param_1 + 0x65) = 1;
              return (uint)*pbVar6;
            }
LAB_002127c6:
                    /* WARNING: Subroutine does not return */
            FUN_00226af0("basic_filebuf::underflow error reading the file");
          }
LAB_00212848:
          iVar12 = param_1[0x17];
          param_1[5] = 0;
          param_1[4] = 0;
          param_1[1] = iVar12;
          param_1[2] = iVar12;
          param_1[3] = iVar12;
          param_1[6] = 0;
          *(undefined1 *)((int)param_1 + 0x65) = 0;
          goto LAB_0021286d;
        }
        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);
        if (iVar7 < 1) {
          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);
          local_3c = iVar12 + -2 + iVar7;
          uVar8 = uVar5;
        }
        else {
          local_3c = iVar7 * uVar5;
          uVar8 = local_3c;
        }
        __n = param_1[0x21] - param_1[0x20];
        iVar12 = uVar8 - __n;
        if ((int)uVar8 <= (int)__n) {
          iVar12 = 0;
        }
        iVar7 = param_1[0x1f];
        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {
          if (iVar7 < (int)local_3c) {
            pvVar11 = (void *)FUN_001e5180(local_3c);
            if (__n != 0) goto LAB_00212947;
            goto LAB_002128b5;
          }
          pvVar11 = (void *)param_1[0x1e];
          if (__n != 0) goto LAB_002128fd;
        }
        else if (__n == 0) {
          if (iVar7 < (int)local_3c) {
            pvVar11 = (void *)FUN_001e5180(local_3c);
            goto LAB_002128b5;
          }
          pvVar11 = (void *)param_1[0x1e];
        }
        else if (iVar7 < (int)local_3c) {
          pvVar11 = (void *)FUN_001e5180(local_3c);
          iVar12 = 0;
LAB_00212947:
          memcpy(pvVar11,(void *)param_1[0x20],__n);
LAB_002128b5:
          if (param_1[0x1e] != 0) {
            FUN_001e6d50(param_1[0x1e]);
          }
          param_1[0x1e] = (int)pvVar11;
          param_1[0x1f] = local_3c;
        }
        else {
          pvVar11 = (void *)param_1[0x1e];
          iVar12 = 0;
LAB_002128fd:
          memmove(pvVar11,(void *)param_1[0x20],__n);
          pvVar11 = (void *)param_1[0x1e];
        }
        pvVar9 = (void *)((int)pvVar11 + __n);
        param_1[0x20] = (int)pvVar11;
        param_1[0x21] = (int)pvVar9;
        param_1[0x15] = param_1[0x13];
        param_1[0x16] = param_1[0x14];
        if (iVar12 != 0) {
          iVar7 = 0;
          goto LAB_00212664;
        }
        __dest = (void *)param_1[1];
        iVar7 = 0;
        local_20[0] = __dest;
        if (pvVar9 <= pvVar11) goto LAB_00212654;
        bVar3 = false;
LAB_00212600:
        local_20[0] = __dest;
        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))
                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,
                           uVar5 + (int)__dest,local_20);
        if (iVar7 == 3) {
          pvVar9 = (void *)param_1[0x21];
          __dest = (void *)param_1[1];
          goto LAB_00212739;
        }
        uVar8 = (int)local_20[0] - param_1[1];
        if (iVar7 == 2) {
          if (0 < (int)uVar8) goto LAB_002127e8;
          if (!bVar3) {
                    /* WARNING: Subroutine does not return */
            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");
          }
          goto LAB_00212848;
        }
        bVar2 = (bool)(uVar8 != 0 | bVar3);
        while (!bVar2) {
LAB_00212654:
          while( true ) {
            pvVar9 = (void *)param_1[0x21];
            iVar12 = 1;
            __n = (int)pvVar9 - param_1[0x1e];
LAB_00212664:
            if (param_1[0x1f] < (int)(__n + iVar12)) {
                    /* WARNING: Subroutine does not return */
              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");
            }
            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);
            if (iVar12 == 0) {
              bVar3 = true;
            }
            else {
              if (iVar12 == -1) goto LAB_002127c6;
              bVar3 = false;
            }
            __dest = (void *)param_1[1];
            pvVar11 = (void *)param_1[0x20];
            pvVar9 = (void *)(iVar12 + param_1[0x21]);
            param_1[0x21] = (int)pvVar9;
            if (pvVar11 < pvVar9) goto LAB_00212600;
            local_20[0] = __dest;
            if (iVar7 == 3) break;
            if (bVar3) goto LAB_002126c9;
          }
LAB_00212739:
          pvVar11 = (void *)param_1[0x1e];
          uVar10 = (int)pvVar9 - (int)pvVar11;
          uVar8 = uVar5;
          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {
            memcpy(__dest,pvVar11,uVar8);
            pvVar11 = (void *)(uVar8 + param_1[0x1e]);
          }
          param_1[0x20] = (int)pvVar11;
          iVar7 = 3;
          bVar2 = (bool)(uVar8 != 0 | bVar3);
        }
        if (0 < (int)uVar8) goto LAB_002127e8;
        if (!bVar3) goto LAB_002127c6;
LAB_002126c9:
        iVar12 = param_1[0x17];
        param_1[5] = 0;
        param_1[4] = 0;
        param_1[1] = iVar12;
        param_1[2] = iVar12;
        param_1[3] = iVar12;
        param_1[6] = 0;
        *(undefined1 *)((int)param_1 + 0x65) = 0;
        if (iVar7 == 1) {
                    /* WARNING: Subroutine does not return */
          FUN_00226af0("basic_filebuf::underflow incomplete character in file");
        }
        goto LAB_0021286d;
      }
    }
    uVar5 = (uint)*pbVar6;
  }
  return uVar5;
}


CALL 0x000559e6
ADD EAX,0x17cb7b
PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x2c
MOV ESI,dword ptr [ESP + 0x40]
MOV dword ptr [ESP + 0x8],EAX
TEST byte ptr [ESI + 0x40],0x8
JZ 0x0021286d
CMP byte ptr [ESI + 0x66],0x0
JNZ 0x002124c8
CMP byte ptr [ESI + 0x70],0x0
MOV EAX,dword ptr [ESI + 0x8]
JNZ 0x00212506
MOV EDX,dword ptr [ESI + 0xc]
CMP EAX,EDX
JNC 0x0021252c
MOVZX EAX,byte ptr [EAX]
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x8
MOV EAX,dword ptr [ESI]
PUSH -0x1
PUSH ESI
CALL dword ptr [EAX + 0x34]
ADD ESP,0x10
CMP EAX,-0x1
JZ 0x002124bc
MOV EAX,dword ptr [ESI + 0x5c]
CMP byte ptr [ESI + 0x70],0x0
MOV dword ptr [ESI + 0x14],0x0
MOV dword ptr [ESI + 0x10],0x0
MOV dword ptr [ESI + 0x4],EAX
MOV dword ptr [ESI + 0x8],EAX
MOV dword ptr [ESI + 0xc],EAX
MOV dword ptr [ESI + 0x18],0x0
MOV byte ptr [ESI + 0x66],0x0
JZ 0x002124b2
CMP dword ptr [ESI + 0x4],EAX
MOV EDX,dword ptr [ESI + 0x6c]
MOV byte ptr [ESI + 0x70],0x0
SETNZ AL
MOV ECX,dword ptr [ESI + 0x5c]
MOVZX EAX,AL
ADD EAX,dword ptr [ESI + 0x68]
MOV dword ptr [ESI + 0xc],EDX
MOV dword ptr [ESI + 0x68],EAX
MOV dword ptr [ESI + 0x4],ECX
MOV dword ptr [ESI + 0x8],EAX
CMP EAX,EDX
JC 0x002124b9
CMP dword ptr [ESI + 0x60],0x2
MOV EBX,0x2
CMOVNC EBX,dword ptr [ESI + 0x60]
LEA EAX,[EBX + -0x1]
MOV dword ptr [ESP + 0x4],EAX
MOV EAX,dword ptr [ESI + 0x74]
TEST EAX,EAX
JZ 0x002129ad
SUB ESP,0xc
MOV EDX,dword ptr [EAX]
PUSH EAX
CALL dword ptr [EDX + 0x18]
ADD ESP,0x10
TEST AL,AL
JNZ 0x002127a0
MOV EAX,dword ptr [ESI + 0x74]
SUB ESP,0xc
MOV EDX,dword ptr [EAX]
PUSH EAX
CALL dword ptr [EDX + 0x14]
ADD ESP,0x10
TEST EAX,EAX
JLE 0x00212710
IMUL EAX,dword ptr [ESP + 0x4]
MOV dword ptr [ESP],EAX
MOV ECX,EAX
MOV EAX,dword ptr [ESI + 0x80]
MOV EDI,dword ptr [ESI + 0x84]
MOV EDX,ECX
SUB EDI,EAX
SUB EDX,EDI
CMP ECX,EDI
MOV ECX,0x0
CMOVLE EDX,ECX
CMP byte ptr [ESI + 0x65],0x0
MOV ECX,dword ptr [ESI + 0x7c]
JZ 0x002125b1
MOV EBX,dword ptr [ESI + 0x4]
CMP dword ptr [ESI + 0xc],EBX
JZ 0x002128ef
CMP dword ptr [ESP],ECX
JG 0x00212890
MOV EBP,dword ptr [ESI + 0x78]
TEST EDI,EDI
JNZ 0x002128fd
MOV ECX,dword ptr [ESI + 0x4c]
MOV EBX,dword ptr [ESI + 0x50]
LEA EAX,[EBP + EDI*0x1]
MOV dword ptr [ESI + 0x80],EBP
MOV dword ptr [ESI + 0x84],EAX
MOV dword ptr [ESI + 0x54],ECX
MOV dword ptr [ESI + 0x58],EBX
TEST EDX,EDX
JNZ 0x002128e8
MOV EDX,dword ptr [ESI + 0x4]
XOR ECX,ECX
MOV dword ptr [ESP + 0x1c],EDX
CMP EAX,EBP
JBE 0x00212654
XOR EDI,EDI
LEA ESI,[ESI]
NOP
MOV EBX,dword ptr [ESI + 0x74]
MOV ECX,dword ptr [EBX]
LEA EBX,[ESP + 0x1c]
PUSH EBX
MOV EBX,dword ptr [ESP + 0x8]
ADD EBX,EDX
PUSH EBX
PUSH EDX
LEA EDX,[ESI + 0x80]
PUSH EDX
PUSH EAX
LEA EAX,[ESI + 0x4c]
PUSH EBP
PUSH EAX
PUSH dword ptr [ESI + 0x74]
CALL dword ptr [ECX + 0x10]
MOV ECX,EAX
ADD ESP,0x20
CMP EAX,0x3
JZ 0x00212730
MOV EAX,dword ptr [ESP + 0x1c]
SUB EAX,dword ptr [ESI + 0x4]
MOV EBP,EAX
CMP ECX,0x2
JZ 0x00212828
TEST EAX,EAX
SETNZ AL
OR EAX,EDI
TEST AL,AL
JNZ 0x002127e0
MOV EAX,dword ptr [ESI + 0x84]
MOV EDX,0x1
MOV EDI,EAX
SUB EDI,dword ptr [ESI + 0x78]
ADD EDI,EDX
CMP EDI,dword ptr [ESI + 0x7c]
JG 0x0021299a
MOV dword ptr [ESP],ECX
SUB ESP,0x4
PUSH EDX
PUSH EAX
LEA EAX,[ESI + 0x38]
PUSH EAX
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x001e7610
ADD ESP,0x10
MOV ECX,dword ptr [ESP]
TEST EAX,EAX
JZ 0x00212768
CMP EAX,-0x1
JZ 0x002127c6
XOR EDI,EDI
MOV EDX,dword ptr [ESI + 0x4]
MOV EBP,dword ptr [ESI + 0x80]
ADD EAX,dword ptr [ESI + 0x84]
MOV dword ptr [ESI + 0x84],EAX
MOV dword ptr [ESP + 0x1c],EDX
CMP EAX,EBP
JA 0x00212600
CMP ECX,0x3
JZ 0x00212739
MOV EAX,EDI
TEST AL,AL
JZ 0x00212654
MOV EAX,dword ptr [ESI + 0x5c]
SUB ECX,0x1
MOV dword ptr [ESI + 0x14],0x0
MOV dword ptr [ESI + 0x10],0x0
MOV dword ptr [ESI + 0x4],EAX
MOV dword ptr [ESI + 0x8],EAX
MOV dword ptr [ESI + 0xc],EAX
MOV dword ptr [ESI + 0x18],0x0
MOV byte ptr [ESI + 0x65],0x0
JNZ 0x0021286d
SUB ESP,0xc
MOV EBX,dword ptr [ESP + 0x14]
LEA EAX,[EBX + 0xfff155d8]
PUSH EAX
CALL 0x00226af0
MOV EAX,dword ptr [ESI + 0x74]
SUB ESP,0xc
MOV EDX,dword ptr [EAX]
PUSH EAX
CALL dword ptr [EDX + 0x20]
MOV ECX,dword ptr [ESP + 0x14]
LEA EAX,[EBX + EAX*0x1 + -0x2]
MOV dword ptr [ESP + 0x10],EAX
ADD ESP,0x10
JMP 0x00212580
MOV EAX,dword ptr [ESI + 0x84]
MOV EDX,dword ptr [ESI + 0x4]
MOV EBX,dword ptr [ESI + 0x78]
SUB EAX,EBX
MOV EBP,EAX
MOV ECX,EAX
CMP dword ptr [ESP + 0x4],EAX
JC 0x00212778
TEST EAX,EAX
JNZ 0x0021277e
TEST EBP,EBP
MOV dword ptr [ESI + 0x80],EBX
MOV ECX,0x3
SETNZ AL
OR EAX,EDI
JMP 0x0021264c
MOV EDI,0x1
JMP 0x0021269d
MOV ECX,dword ptr [ESP + 0x4]
MOV EBP,ECX
SUB ESP,0x4
PUSH ECX
MOV dword ptr [ESP + 0x8],ECX
PUSH EBX
PUSH EDX
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x000295c0
MOV ECX,dword ptr [ESP + 0x10]
ADD ECX,dword ptr [ESI + 0x78]
ADD ESP,0x10
MOV EBX,ECX
JMP 0x0021274c
SUB ESP,0x4
LEA EAX,[ESI + 0x38]
PUSH dword ptr [ESP + 0x8]
PUSH dword ptr [ESI + 0x4]
PUSH EAX
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x001e7610
ADD ESP,0x10
MOV EBP,EAX
TEST EAX,EAX
JZ 0x00212848
JG 0x002127e8
SUB ESP,0xc
MOV EBX,dword ptr [ESP + 0x14]
LEA EAX,[EBX + 0xfff15610]
PUSH EAX
CALL 0x00226af0
TEST EBP,EBP
JLE 0x0021291d
MOV EDX,dword ptr [ESI + 0x5c]
TEST byte ptr [ESI + 0x40],0x8
MOV dword ptr [ESI + 0x4],EDX
MOV dword ptr [ESI + 0x8],EDX
JZ 0x00212880
LEA EAX,[EDX + EBP*0x1]
MOV dword ptr [ESI + 0xc],EAX
MOV dword ptr [ESI + 0x14],0x0
MOV dword ptr [ESI + 0x10],0x0
MOV dword ptr [ESI + 0x18],0x0
MOV byte ptr [ESI + 0x65],0x1
MOVZX EAX,byte ptr [EDX]
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
TEST EAX,EAX
JG 0x002127e8
MOV EAX,EDI
TEST AL,AL
JNZ 0x00212848
SUB ESP,0xc
MOV EBX,dword ptr [ESP + 0x14]
LEA EAX,[EBX + 0xfff155a0]
PUSH EAX
CALL 0x00226af0
MOV EAX,dword ptr [ESI + 0x5c]
MOV dword ptr [ESI + 0x14],0x0
MOV dword ptr [ESI + 0x10],0x0
MOV dword ptr [ESI + 0x4],EAX
MOV dword ptr [ESI + 0x8],EAX
MOV dword ptr [ESI + 0xc],EAX
MOV dword ptr [ESI + 0x18],0x0
MOV byte ptr [ESI + 0x65],0x0
MOV EAX,0xffffffff
JMP 0x002124bc
MOV dword ptr [ESI + 0xc],EDX
JMP 0x00212801
MOV dword ptr [ESP + 0xc],EDX
SUB ESP,0xc
PUSH dword ptr [ESP + 0xc]
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x001e5180
ADD ESP,0x10
TEST EDI,EDI
MOV EDX,dword ptr [ESP + 0xc]
MOV EBP,EAX
JNZ 0x00212947
MOV EAX,dword ptr [ESI + 0x78]
TEST EAX,EAX
JZ 0x002128d4
MOV dword ptr [ESP + 0xc],EDX
SUB ESP,0xc
PUSH EAX
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x001e6d50
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [ESP]
MOV dword ptr [ESI + 0x78],EBP
MOV dword ptr [ESI + 0x7c],EAX
JMP 0x002125c5
XOR ECX,ECX
JMP 0x00212664
TEST EDI,EDI
JZ 0x0021296b
CMP dword ptr [ESP],ECX
JG 0x00212930
MOV EBP,dword ptr [ESI + 0x78]
XOR EDX,EDX
MOV dword ptr [ESP],EDX
SUB ESP,0x4
PUSH EDI
PUSH EAX
PUSH EBP
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x000298a0
ADD ESP,0x10
MOV EBP,dword ptr [ESI + 0x78]
MOV EDX,dword ptr [ESP]
JMP 0x002125c5
MOV EAX,EDI
TEST AL,AL
JZ 0x002127c6
JMP 0x002126c9
SUB ESP,0xc
PUSH dword ptr [ESP + 0xc]
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x001e5180
ADD ESP,0x10
XOR EDX,EDX
MOV EBP,EAX
MOV dword ptr [ESP + 0xc],EDX
SUB ESP,0x4
PUSH EDI
PUSH dword ptr [ESI + 0x80]
PUSH EBP
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x000295c0
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0xc]
JMP 0x002128b5
CMP dword ptr [ESP],ECX
JG 0x00212978
MOV EBP,dword ptr [ESI + 0x78]
JMP 0x002125c5
MOV dword ptr [ESP + 0xc],EDX
SUB ESP,0xc
PUSH dword ptr [ESP + 0xc]
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x001e5180
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0xc]
MOV EBP,EAX
JMP 0x002128b5
SUB ESP,0xc
MOV EBX,dword ptr [ESP + 0x14]
LEA EAX,[EBX + 0xfff15564]
PUSH EAX
CALL 0x00226af0
MOV EBX,dword ptr [ESP + 0x8]
CALL 0x0022c630
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nuint FUN_00212480(int *param_1)\n\n{\n  int *piVar1;\n  bool bVar2;\n  bool bVar3;\n  char cVar4;\n  uint uVar5;\n  byte *pbVar6;\n  int iVar7;\n  uint uVar8;\n  void *pvVar9;\n  uint uVar10;\n  void *pvVar11;\n  int iVar12;\n  void *__dest;\n  size_t __n;\n  uint local_3c;\n  void *local_20 [4];\n  \n  if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\nLAB_0021286d:\n    uVar5 = 0xffffffff;\n  }\n  else {\n    if (*(char *)((int)param_1 + 0x66) == '\0') {\n      pbVar6 = (byte *)param_1[2];\n      if ((char)param_1[0x1c] == '\0') goto LAB_002124b2;\nLAB_00212506:\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]);\n      param_1[3] = param_1[0x1b];\n      param_1[0x1a] = (int)pbVar6;\n      param_1[1] = param_1[0x17];\n      param_1[2] = (int)pbVar6;\n      if ((byte *)param_1[0x1b] <= pbVar6) goto LAB_0021252c;\n    }\n    else {\n      iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar6 = (byte *)param_1[0x17];\n      param_1[5] = 0;\n      param_1[4] = 0;\n      param_1[1] = (int)pbVar6;\n      param_1[2] = (int)pbVar6;\n      param_1[3] = (int)pbVar6;\n      param_1[6] = 0;\n      *(undefined1 *)((int)param_1 + 0x66) = 0;\n      if ((char)param_1[0x1c] != '\0') goto LAB_00212506;\nLAB_002124b2:\n      if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }\n    uVar5 = (uint)*pbVar6;\n  }\n  return uVar5;\n}\n\n" comment (function_definition "uint FUN_00212480(int *param_1)\n\n{\n  int *piVar1;\n  bool bVar2;\n  bool bVar3;\n  char cVar4;\n  uint uVar5;\n  byte *pbVar6;\n  int iVar7;\n  uint uVar8;\n  void *pvVar9;\n  uint uVar10;\n  void *pvVar11;\n  int iVar12;\n  void *__dest;\n  size_t __n;\n  uint local_3c;\n  void *local_20 [4];\n  \n  if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\nLAB_0021286d:\n    uVar5 = 0xffffffff;\n  }\n  else {\n    if (*(char *)((int)param_1 + 0x66) == '\0') {\n      pbVar6 = (byte *)param_1[2];\n      if ((char)param_1[0x1c] == '\0') goto LAB_002124b2;\nLAB_00212506:\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]);\n      param_1[3] = param_1[0x1b];\n      param_1[0x1a] = (int)pbVar6;\n      param_1[1] = param_1[0x17];\n      param_1[2] = (int)pbVar6;\n      if ((byte *)param_1[0x1b] <= pbVar6) goto LAB_0021252c;\n    }\n    else {\n      iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar6 = (byte *)param_1[0x17];\n      param_1[5] = 0;\n      param_1[4] = 0;\n      param_1[1] = (int)pbVar6;\n      param_1[2] = (int)pbVar6;\n      param_1[3] = (int)pbVar6;\n      param_1[6] = 0;\n      *(undefined1 *)((int)param_1 + 0x66) = 0;\n      if ((char)param_1[0x1c] != '\0') goto LAB_00212506;\nLAB_002124b2:\n      if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }\n    uVar5 = (uint)*pbVar6;\n  }\n  return uVar5;\n}" type_identifier (function_declarator "FUN_00212480(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  bool bVar2;\n  bool bVar3;\n  char cVar4;\n  uint uVar5;\n  byte *pbVar6;\n  int iVar7;\n  uint uVar8;\n  void *pvVar9;\n  uint uVar10;\n  void *pvVar11;\n  int iVar12;\n  void *__dest;\n  size_t __n;\n  uint local_3c;\n  void *local_20 [4];\n  \n  if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\nLAB_0021286d:\n    uVar5 = 0xffffffff;\n  }\n  else {\n    if (*(char *)((int)param_1 + 0x66) == '\0') {\n      pbVar6 = (byte *)param_1[2];\n      if ((char)param_1[0x1c] == '\0') goto LAB_002124b2;\nLAB_00212506:\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]);\n      param_1[3] = param_1[0x1b];\n      param_1[0x1a] = (int)pbVar6;\n      param_1[1] = param_1[0x17];\n      param_1[2] = (int)pbVar6;\n      if ((byte *)param_1[0x1b] <= pbVar6) goto LAB_0021252c;\n    }\n    else {\n      iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar6 = (byte *)param_1[0x17];\n      param_1[5] = 0;\n      param_1[4] = 0;\n      param_1[1] = (int)pbVar6;\n      param_1[2] = (int)pbVar6;\n      param_1[3] = (int)pbVar6;\n      param_1[6] = 0;\n      *(undefined1 *)((int)param_1 + 0x66) = 0;\n      if ((char)param_1[0x1c] != '\0') goto LAB_00212506;\nLAB_002124b2:\n      if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }\n    uVar5 = (uint)*pbVar6;\n  }\n  return uVar5;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "void *pvVar9;" primitive_type (pointer_declarator "*pvVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "void *pvVar11;" primitive_type (pointer_declarator "*pvVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (declaration "void *local_20 [4];" primitive_type (pointer_declarator "*local_20 [4]" * (array_declarator "local_20 [4]" identifier [ number_literal ])) ;) (if_statement "if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\nLAB_0021286d:\n    uVar5 = 0xffffffff;\n  }\n  else {\n    if (*(char *)((int)param_1 + 0x66) == '\0') {\n      pbVar6 = (byte *)param_1[2];\n      if ((char)param_1[0x1c] == '\0') goto LAB_002124b2;\nLAB_00212506:\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]);\n      param_1[3] = param_1[0x1b];\n      param_1[0x1a] = (int)pbVar6;\n      param_1[1] = param_1[0x17];\n      param_1[2] = (int)pbVar6;\n      if ((byte *)param_1[0x1b] <= pbVar6) goto LAB_0021252c;\n    }\n    else {\n      iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar6 = (byte *)param_1[0x17];\n      param_1[5] = 0;\n      param_1[4] = 0;\n      param_1[1] = (int)pbVar6;\n      param_1[2] = (int)pbVar6;\n      param_1[3] = (int)pbVar6;\n      param_1[6] = 0;\n      *(undefined1 *)((int)param_1 + 0x66) = 0;\n      if ((char)param_1[0x1c] != '\0') goto LAB_00212506;\nLAB_002124b2:\n      if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }\n    uVar5 = (uint)*pbVar6;\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x10) & 8) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x10) & 8) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x10) & 8)" ( (binary_expression "*(byte *)(param_1 + 0x10) & 8" (pointer_expression "*(byte *)(param_1 + 0x10)" * (cast_expression "(byte *)(param_1 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0021286d:\n    uVar5 = 0xffffffff;\n  }" { (labeled_statement "LAB_0021286d:\n    uVar5 = 0xffffffff;" statement_identifier : (expression_statement "uVar5 = 0xffffffff;" (assignment_expression "uVar5 = 0xffffffff" identifier = number_literal) ;)) }) (else_clause "else {\n    if (*(char *)((int)param_1 + 0x66) == '\0') {\n      pbVar6 = (byte *)param_1[2];\n      if ((char)param_1[0x1c] == '\0') goto LAB_002124b2;\nLAB_00212506:\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]);\n      param_1[3] = param_1[0x1b];\n      param_1[0x1a] = (int)pbVar6;\n      param_1[1] = param_1[0x17];\n      param_1[2] = (int)pbVar6;\n      if ((byte *)param_1[0x1b] <= pbVar6) goto LAB_0021252c;\n    }\n    else {\n      iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar6 = (byte *)param_1[0x17];\n      param_1[5] = 0;\n      param_1[4] = 0;\n      param_1[1] = (int)pbVar6;\n      param_1[2] = (int)pbVar6;\n      param_1[3] = (int)pbVar6;\n      param_1[6] = 0;\n      *(undefined1 *)((int)param_1 + 0x66) = 0;\n      if ((char)param_1[0x1c] != '\0') goto LAB_00212506;\nLAB_002124b2:\n      if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }\n    uVar5 = (uint)*pbVar6;\n  }" else (compound_statement "{\n    if (*(char *)((int)param_1 + 0x66) == '\0') {\n      pbVar6 = (byte *)param_1[2];\n      if ((char)param_1[0x1c] == '\0') goto LAB_002124b2;\nLAB_00212506:\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]);\n      param_1[3] = param_1[0x1b];\n      param_1[0x1a] = (int)pbVar6;\n      param_1[1] = param_1[0x17];\n      param_1[2] = (int)pbVar6;\n      if ((byte *)param_1[0x1b] <= pbVar6) goto LAB_0021252c;\n    }\n    else {\n      iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar6 = (byte *)param_1[0x17];\n      param_1[5] = 0;\n      param_1[4] = 0;\n      param_1[1] = (int)pbVar6;\n      param_1[2] = (int)pbVar6;\n      param_1[3] = (int)pbVar6;\n      param_1[6] = 0;\n      *(undefined1 *)((int)param_1 + 0x66) = 0;\n      if ((char)param_1[0x1c] != '\0') goto LAB_00212506;\nLAB_002124b2:\n      if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }\n    uVar5 = (uint)*pbVar6;\n  }" { (if_statement "if (*(char *)((int)param_1 + 0x66) == '\0') {\n      pbVar6 = (byte *)param_1[2];\n      if ((char)param_1[0x1c] == '\0') goto LAB_002124b2;\nLAB_00212506:\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]);\n      param_1[3] = param_1[0x1b];\n      param_1[0x1a] = (int)pbVar6;\n      param_1[1] = param_1[0x17];\n      param_1[2] = (int)pbVar6;\n      if ((byte *)param_1[0x1b] <= pbVar6) goto LAB_0021252c;\n    }\n    else {\n      iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar6 = (byte *)param_1[0x17];\n      param_1[5] = 0;\n      param_1[4] = 0;\n      param_1[1] = (int)pbVar6;\n      param_1[2] = (int)pbVar6;\n      param_1[3] = (int)pbVar6;\n      param_1[6] = 0;\n      *(undefined1 *)((int)param_1 + 0x66) = 0;\n      if ((char)param_1[0x1c] != '\0') goto LAB_00212506;\nLAB_002124b2:\n      if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }" if (parenthesized_expression "(*(char *)((int)param_1 + 0x66) == '\0')" ( (binary_expression "*(char *)((int)param_1 + 0x66) == '\0'" (pointer_expression "*(char *)((int)param_1 + 0x66)" * (cast_expression "(char *)((int)param_1 + 0x66)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x66)" ( (binary_expression "(int)param_1 + 0x66" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pbVar6 = (byte *)param_1[2];\n      if ((char)param_1[0x1c] == '\0') goto LAB_002124b2;\nLAB_00212506:\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]);\n      param_1[3] = param_1[0x1b];\n      param_1[0x1a] = (int)pbVar6;\n      param_1[1] = param_1[0x17];\n      param_1[2] = (int)pbVar6;\n      if ((byte *)param_1[0x1b] <= pbVar6) goto LAB_0021252c;\n    }" { (expression_statement "pbVar6 = (byte *)param_1[2];" (assignment_expression "pbVar6 = (byte *)param_1[2]" identifier = (cast_expression "(byte *)param_1[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (if_statement "if ((char)param_1[0x1c] == '\0') goto LAB_002124b2;" if (parenthesized_expression "((char)param_1[0x1c] == '\0')" ( (binary_expression "(char)param_1[0x1c] == '\0'" (cast_expression "(char)param_1[0x1c]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[0x1c]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_002124b2;" goto statement_identifier ;)) (labeled_statement "LAB_00212506:\n      *(undefined1 *)(param_1 + 0x1c) = 0;" statement_identifier : (expression_statement "*(undefined1 *)(param_1 + 0x1c) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x1c) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x1c)" * (cast_expression "(undefined1 *)(param_1 + 0x1c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]);" (assignment_expression "pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a])" identifier = (cast_expression "(byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a])" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a])" ( (binary_expression "(uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]" (call_expression "(uint)((byte *)param_1[1] != pbVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((byte *)param_1[1] != pbVar6)" ( (binary_expression "(byte *)param_1[1] != pbVar6" (cast_expression "(byte *)param_1[1]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) != identifier) ))) + (subscript_expression "param_1[0x1a]" identifier [ number_literal ])) )))) ;) (expression_statement "param_1[3] = param_1[0x1b];" (assignment_expression "param_1[3] = param_1[0x1b]" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (subscript_expression "param_1[0x1b]" identifier [ number_literal ])) ;) (expression_statement "param_1[0x1a] = (int)pbVar6;" (assignment_expression "param_1[0x1a] = (int)pbVar6" (subscript_expression "param_1[0x1a]" identifier [ number_literal ]) = (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[1] = param_1[0x17];" (assignment_expression "param_1[1] = param_1[0x17]" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (subscript_expression "param_1[0x17]" identifier [ number_literal ])) ;) (expression_statement "param_1[2] = (int)pbVar6;" (assignment_expression "param_1[2] = (int)pbVar6" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if ((byte *)param_1[0x1b] <= pbVar6) goto LAB_0021252c;" if (parenthesized_expression "((byte *)param_1[0x1b] <= pbVar6)" ( (binary_expression "(byte *)param_1[0x1b] <= pbVar6" (cast_expression "(byte *)param_1[0x1b]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1b]" identifier [ number_literal ])) <= identifier) )) (goto_statement "goto LAB_0021252c;" goto statement_identifier ;)) }) (else_clause "else {\n      iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar6 = (byte *)param_1[0x17];\n      param_1[5] = 0;\n      param_1[4] = 0;\n      param_1[1] = (int)pbVar6;\n      param_1[2] = (int)pbVar6;\n      param_1[3] = (int)pbVar6;\n      param_1[6] = 0;\n      *(undefined1 *)((int)param_1 + 0x66) = 0;\n      if ((char)param_1[0x1c] != '\0') goto LAB_00212506;\nLAB_002124b2:\n      if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }" else (compound_statement "{\n      iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar6 = (byte *)param_1[0x17];\n      param_1[5] = 0;\n      param_1[4] = 0;\n      param_1[1] = (int)pbVar6;\n      param_1[2] = (int)pbVar6;\n      param_1[3] = (int)pbVar6;\n      param_1[6] = 0;\n      *(undefined1 *)((int)param_1 + 0x66) = 0;\n      if ((char)param_1[0x1c] != '\0') goto LAB_00212506;\nLAB_002124b2:\n      if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }" { (expression_statement "iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);" (assignment_expression "iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff)" identifier = (call_expression "(**(code **)(*param_1 + 0x34))(param_1,0xffffffff)" (parenthesized_expression "(**(code **)(*param_1 + 0x34))" ( (pointer_expression "**(code **)(*param_1 + 0x34)" * (pointer_expression "*(code **)(*param_1 + 0x34)" * (cast_expression "(code **)(*param_1 + 0x34)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x34)" ( (binary_expression "*param_1 + 0x34" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1,0xffffffff)" ( identifier , number_literal )))) ;) (if_statement "if (iVar12 == -1) {\n        return 0xffffffff;\n      }" if (parenthesized_expression "(iVar12 == -1)" ( (binary_expression "iVar12 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0xffffffff;\n      }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (expression_statement "pbVar6 = (byte *)param_1[0x17];" (assignment_expression "pbVar6 = (byte *)param_1[0x17]" identifier = (cast_expression "(byte *)param_1[0x17]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x17]" identifier [ number_literal ]))) ;) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[4] = 0;" (assignment_expression "param_1[4] = 0" (subscript_expression "param_1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[1] = (int)pbVar6;" (assignment_expression "param_1[1] = (int)pbVar6" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[2] = (int)pbVar6;" (assignment_expression "param_1[2] = (int)pbVar6" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[3] = (int)pbVar6;" (assignment_expression "param_1[3] = (int)pbVar6" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[6] = 0;" (assignment_expression "param_1[6] = 0" (subscript_expression "param_1[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((int)param_1 + 0x66) = 0;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x66) = 0" (pointer_expression "*(undefined1 *)((int)param_1 + 0x66)" * (cast_expression "(undefined1 *)((int)param_1 + 0x66)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x66)" ( (binary_expression "(int)param_1 + 0x66" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if ((char)param_1[0x1c] != '\0') goto LAB_00212506;" if (parenthesized_expression "((char)param_1[0x1c] != '\0')" ( (binary_expression "(char)param_1[0x1c] != '\0'" (cast_expression "(char)param_1[0x1c]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[0x1c]" identifier [ number_literal ])) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00212506;" goto statement_identifier ;)) (labeled_statement "LAB_002124b2:\n      if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }" statement_identifier : (if_statement "if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }" if (parenthesized_expression "((byte *)param_1[3] <= pbVar6)" ( (binary_expression "(byte *)param_1[3] <= pbVar6" (cast_expression "(byte *)param_1[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[3]" identifier [ number_literal ])) <= identifier) )) (compound_statement "{\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }" { (labeled_statement "LAB_0021252c:\n        iVar12 = 2;" statement_identifier : (expression_statement "iVar12 = 2;" (assignment_expression "iVar12 = 2" identifier = number_literal) ;)) (if_statement "if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }" if (parenthesized_expression "(1 < (uint)param_1[0x18])" ( (binary_expression "1 < (uint)param_1[0x18]" number_literal < (cast_expression "(uint)param_1[0x18]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0x18]" identifier [ number_literal ]))) )) (compound_statement "{\n          iVar12 = param_1[0x18];\n        }" { (expression_statement "iVar12 = param_1[0x18];" (assignment_expression "iVar12 = param_1[0x18]" identifier = (subscript_expression "param_1[0x18]" identifier [ number_literal ])) ;) })) (expression_statement "uVar5 = iVar12 - 1;" (assignment_expression "uVar5 = iVar12 - 1" identifier = (binary_expression "iVar12 - 1" identifier - number_literal)) ;) (expression_statement "piVar1 = (int *)param_1[0x1d];" (assignment_expression "piVar1 = (int *)param_1[0x1d]" identifier = (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ]))) ;) (if_statement "if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0022c630();\n        }" if (parenthesized_expression "(piVar1 == (int *)0x0)" ( (binary_expression "piVar1 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          FUN_0022c630();\n        }" { comment (expression_statement "FUN_0022c630();" (call_expression "FUN_0022c630()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);" (assignment_expression "cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1)" identifier = (call_expression "(**(code **)(*piVar1 + 0x18))(piVar1)" (parenthesized_expression "(**(code **)(*piVar1 + 0x18))" ( (pointer_expression "**(code **)(*piVar1 + 0x18)" * (pointer_expression "*(code **)(*piVar1 + 0x18)" * (cast_expression "(code **)(*piVar1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar1 + 0x18)" ( (binary_expression "*piVar1 + 0x18" (pointer_expression "*piVar1" * identifier) + number_literal) ))))) )) (argument_list "(piVar1)" ( identifier )))) ;) (if_statement "if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }" if (parenthesized_expression "(cVar4 != '\0')" ( (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }" { (expression_statement "uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);" (assignment_expression "uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5)" identifier = (call_expression "FUN_001e7610(param_1 + 0xe,param_1[1],uVar5)" identifier (argument_list "(param_1 + 0xe,param_1[1],uVar5)" ( (binary_expression "param_1 + 0xe" identifier + number_literal) , (subscript_expression "param_1[1]" identifier [ number_literal ]) , identifier )))) ;) (if_statement "if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }" if (parenthesized_expression "(uVar8 != 0)" ( (binary_expression "uVar8 != 0" identifier != number_literal) )) (compound_statement "{\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }" { (if_statement "if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }" if (parenthesized_expression "(0 < (int)uVar8)" ( (binary_expression "0 < (int)uVar8" number_literal < (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }" { (labeled_statement "LAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];" statement_identifier : (expression_statement "pbVar6 = (byte *)param_1[0x17];" (assignment_expression "pbVar6 = (byte *)param_1[0x17]" identifier = (cast_expression "(byte *)param_1[0x17]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x17]" identifier [ number_literal ]))) ;)) (expression_statement "param_1[1] = (int)pbVar6;" (assignment_expression "param_1[1] = (int)pbVar6" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[2] = (int)pbVar6;" (assignment_expression "param_1[2] = (int)pbVar6" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }" if (parenthesized_expression "((*(byte *)(param_1 + 0x10) & 8) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x10) & 8) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x10) & 8)" ( (binary_expression "*(byte *)(param_1 + 0x10) & 8" (pointer_expression "*(byte *)(param_1 + 0x10)" * (cast_expression "(byte *)(param_1 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                param_1[3] = (int)pbVar6;\n              }" { (expression_statement "param_1[3] = (int)pbVar6;" (assignment_expression "param_1[3] = (int)pbVar6" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }) (else_clause "else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }" else (compound_statement "{\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }" { (expression_statement "param_1[3] = (int)(pbVar6 + uVar8);" (assignment_expression "param_1[3] = (int)(pbVar6 + uVar8)" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (cast_expression "(int)(pbVar6 + uVar8)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar6 + uVar8)" ( (binary_expression "pbVar6 + uVar8" identifier + identifier) )))) ;) }))) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[4] = 0;" (assignment_expression "param_1[4] = 0" (subscript_expression "param_1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[6] = 0;" (assignment_expression "param_1[6] = 0" (subscript_expression "param_1[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((int)param_1 + 0x65) = 1;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x65) = 1" (pointer_expression "*(undefined1 *)((int)param_1 + 0x65)" * (cast_expression "(undefined1 *)((int)param_1 + 0x65)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x65)" ( (binary_expression "(int)param_1 + 0x65" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (return_statement "return (uint)*pbVar6;" return (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" ( identifier )) * identifier) ;) })) (labeled_statement "LAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow error reading the file");" statement_identifier : comment (expression_statement "FUN_00226af0("basic_filebuf::underflow error reading the file");" (call_expression "FUN_00226af0("basic_filebuf::underflow error reading the file")" identifier (argument_list "("basic_filebuf::underflow error reading the file")" ( (string_literal ""basic_filebuf::underflow error reading the file"" " string_content ") ))) ;)) })) (labeled_statement "LAB_00212848:\n          iVar12 = param_1[0x17];" statement_identifier : (expression_statement "iVar12 = param_1[0x17];" (assignment_expression "iVar12 = param_1[0x17]" identifier = (subscript_expression "param_1[0x17]" identifier [ number_literal ])) ;)) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[4] = 0;" (assignment_expression "param_1[4] = 0" (subscript_expression "param_1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[1] = iVar12;" (assignment_expression "param_1[1] = iVar12" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[2] = iVar12;" (assignment_expression "param_1[2] = iVar12" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[3] = iVar12;" (assignment_expression "param_1[3] = iVar12" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[6] = 0;" (assignment_expression "param_1[6] = 0" (subscript_expression "param_1[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((int)param_1 + 0x65) = 0;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x65) = 0" (pointer_expression "*(undefined1 *)((int)param_1 + 0x65)" * (cast_expression "(undefined1 *)((int)param_1 + 0x65)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x65)" ( (binary_expression "(int)param_1 + 0x65" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_0021286d;" goto statement_identifier ;) })) (expression_statement "iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);" (assignment_expression "iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d])" identifier = (call_expression "(**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d])" (parenthesized_expression "(**(code **)(*(int *)param_1[0x1d] + 0x14))" ( (pointer_expression "**(code **)(*(int *)param_1[0x1d] + 0x14)" * (pointer_expression "*(code **)(*(int *)param_1[0x1d] + 0x14)" * (cast_expression "(code **)(*(int *)param_1[0x1d] + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_1[0x1d] + 0x14)" ( (binary_expression "*(int *)param_1[0x1d] + 0x14" (pointer_expression "*(int *)param_1[0x1d]" * (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ]))) + number_literal) ))))) )) (argument_list "((int *)param_1[0x1d])" ( (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ])) )))) ;) (if_statement "if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }" if (parenthesized_expression "(iVar7 < 1)" ( (binary_expression "iVar7 < 1" identifier < number_literal) )) (compound_statement "{\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }" { (expression_statement "iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);" (assignment_expression "iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d])" identifier = (call_expression "(**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d])" (parenthesized_expression "(**(code **)(*(int *)param_1[0x1d] + 0x20))" ( (pointer_expression "**(code **)(*(int *)param_1[0x1d] + 0x20)" * (pointer_expression "*(code **)(*(int *)param_1[0x1d] + 0x20)" * (cast_expression "(code **)(*(int *)param_1[0x1d] + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_1[0x1d] + 0x20)" ( (binary_expression "*(int *)param_1[0x1d] + 0x20" (pointer_expression "*(int *)param_1[0x1d]" * (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ]))) + number_literal) ))))) )) (argument_list "((int *)param_1[0x1d])" ( (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ])) )))) ;) (expression_statement "local_3c = iVar12 + -2 + iVar7;" (assignment_expression "local_3c = iVar12 + -2 + iVar7" identifier = (binary_expression "iVar12 + -2 + iVar7" (binary_expression "iVar12 + -2" identifier + number_literal) + identifier)) ;) (expression_statement "uVar8 = uVar5;" (assignment_expression "uVar8 = uVar5" identifier = identifier) ;) }) (else_clause "else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }" else (compound_statement "{\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }" { (expression_statement "local_3c = iVar7 * uVar5;" (assignment_expression "local_3c = iVar7 * uVar5" identifier = (binary_expression "iVar7 * uVar5" identifier * identifier)) ;) (expression_statement "uVar8 = local_3c;" (assignment_expression "uVar8 = local_3c" identifier = identifier) ;) }))) (expression_statement "__n = param_1[0x21] - param_1[0x20];" (assignment_expression "__n = param_1[0x21] - param_1[0x20]" identifier = (binary_expression "param_1[0x21] - param_1[0x20]" (subscript_expression "param_1[0x21]" identifier [ number_literal ]) - (subscript_expression "param_1[0x20]" identifier [ number_literal ]))) ;) (expression_statement "iVar12 = uVar8 - __n;" (assignment_expression "iVar12 = uVar8 - __n" identifier = (binary_expression "uVar8 - __n" identifier - identifier)) ;) (if_statement "if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }" if (parenthesized_expression "((int)uVar8 <= (int)__n)" ( (binary_expression "(int)uVar8 <= (int)__n" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)__n" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          iVar12 = 0;\n        }" { (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) })) (expression_statement "iVar7 = param_1[0x1f];" (assignment_expression "iVar7 = param_1[0x1f]" identifier = (subscript_expression "param_1[0x1f]" identifier [ number_literal ])) ;) (if_statement "if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }" if (parenthesized_expression "((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1]))" ( (binary_expression "(*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])" (parenthesized_expression "(*(char *)((int)param_1 + 0x65) == '\0')" ( (binary_expression "*(char *)((int)param_1 + 0x65) == '\0'" (pointer_expression "*(char *)((int)param_1 + 0x65)" * (cast_expression "(char *)((int)param_1 + 0x65)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x65)" ( (binary_expression "(int)param_1 + 0x65" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(param_1[3] != param_1[1])" ( (binary_expression "param_1[3] != param_1[1]" (subscript_expression "param_1[3]" identifier [ number_literal ]) != (subscript_expression "param_1[1]" identifier [ number_literal ])) ))) )) (compound_statement "{\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }" { (if_statement "if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }" if (parenthesized_expression "(iVar7 < (int)local_3c)" ( (binary_expression "iVar7 < (int)local_3c" identifier < (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }" { (expression_statement "pvVar11 = (void *)FUN_001e5180(local_3c);" (assignment_expression "pvVar11 = (void *)FUN_001e5180(local_3c)" identifier = (cast_expression "(void *)FUN_001e5180(local_3c)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5180(local_3c)" identifier (argument_list "(local_3c)" ( identifier ))))) ;) (if_statement "if (__n != 0) goto LAB_00212947;" if (parenthesized_expression "(__n != 0)" ( (binary_expression "__n != 0" identifier != number_literal) )) (goto_statement "goto LAB_00212947;" goto statement_identifier ;)) (goto_statement "goto LAB_002128b5;" goto statement_identifier ;) })) (expression_statement "pvVar11 = (void *)param_1[0x1e];" (assignment_expression "pvVar11 = (void *)param_1[0x1e]" identifier = (cast_expression "(void *)param_1[0x1e]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1e]" identifier [ number_literal ]))) ;) (if_statement "if (__n != 0) goto LAB_002128fd;" if (parenthesized_expression "(__n != 0)" ( (binary_expression "__n != 0" identifier != number_literal) )) (goto_statement "goto LAB_002128fd;" goto statement_identifier ;)) }) (else_clause "else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }" else (if_statement "if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }" if (parenthesized_expression "(__n == 0)" ( (binary_expression "__n == 0" identifier == number_literal) )) (compound_statement "{\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }" { (if_statement "if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }" if (parenthesized_expression "(iVar7 < (int)local_3c)" ( (binary_expression "iVar7 < (int)local_3c" identifier < (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }" { (expression_statement "pvVar11 = (void *)FUN_001e5180(local_3c);" (assignment_expression "pvVar11 = (void *)FUN_001e5180(local_3c)" identifier = (cast_expression "(void *)FUN_001e5180(local_3c)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5180(local_3c)" identifier (argument_list "(local_3c)" ( identifier ))))) ;) (goto_statement "goto LAB_002128b5;" goto statement_identifier ;) })) (expression_statement "pvVar11 = (void *)param_1[0x1e];" (assignment_expression "pvVar11 = (void *)param_1[0x1e]" identifier = (cast_expression "(void *)param_1[0x1e]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1e]" identifier [ number_literal ]))) ;) }) (else_clause "else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }" else (if_statement "if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }" if (parenthesized_expression "(iVar7 < (int)local_3c)" ( (binary_expression "iVar7 < (int)local_3c" identifier < (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }" { (expression_statement "pvVar11 = (void *)FUN_001e5180(local_3c);" (assignment_expression "pvVar11 = (void *)FUN_001e5180(local_3c)" identifier = (cast_expression "(void *)FUN_001e5180(local_3c)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5180(local_3c)" identifier (argument_list "(local_3c)" ( identifier ))))) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);" statement_identifier : (expression_statement "memcpy(pvVar11,(void *)param_1[0x20],__n);" (call_expression "memcpy(pvVar11,(void *)param_1[0x20],__n)" identifier (argument_list "(pvVar11,(void *)param_1[0x20],__n)" ( identifier , (cast_expression "(void *)param_1[0x20]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x20]" identifier [ number_literal ])) , identifier ))) ;)) (labeled_statement "LAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }" statement_identifier : (if_statement "if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }" if (parenthesized_expression "(param_1[0x1e] != 0)" ( (binary_expression "param_1[0x1e] != 0" (subscript_expression "param_1[0x1e]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n            FUN_001e6d50(param_1[0x1e]);\n          }" { (expression_statement "FUN_001e6d50(param_1[0x1e]);" (call_expression "FUN_001e6d50(param_1[0x1e])" identifier (argument_list "(param_1[0x1e])" ( (subscript_expression "param_1[0x1e]" identifier [ number_literal ]) ))) ;) }))) (expression_statement "param_1[0x1e] = (int)pvVar11;" (assignment_expression "param_1[0x1e] = (int)pvVar11" (subscript_expression "param_1[0x1e]" identifier [ number_literal ]) = (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[0x1f] = local_3c;" (assignment_expression "param_1[0x1f] = local_3c" (subscript_expression "param_1[0x1f]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }" else (compound_statement "{\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }" { (expression_statement "pvVar11 = (void *)param_1[0x1e];" (assignment_expression "pvVar11 = (void *)param_1[0x1e]" identifier = (cast_expression "(void *)param_1[0x1e]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1e]" identifier [ number_literal ]))) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (labeled_statement "LAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);" statement_identifier : (expression_statement "memmove(pvVar11,(void *)param_1[0x20],__n);" (call_expression "memmove(pvVar11,(void *)param_1[0x20],__n)" identifier (argument_list "(pvVar11,(void *)param_1[0x20],__n)" ( identifier , (cast_expression "(void *)param_1[0x20]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x20]" identifier [ number_literal ])) , identifier ))) ;)) (expression_statement "pvVar11 = (void *)param_1[0x1e];" (assignment_expression "pvVar11 = (void *)param_1[0x1e]" identifier = (cast_expression "(void *)param_1[0x1e]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1e]" identifier [ number_literal ]))) ;) }))))))) (expression_statement "pvVar9 = (void *)((int)pvVar11 + __n);" (assignment_expression "pvVar9 = (void *)((int)pvVar11 + __n)" identifier = (cast_expression "(void *)((int)pvVar11 + __n)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + __n)" ( (binary_expression "(int)pvVar11 + __n" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "param_1[0x20] = (int)pvVar11;" (assignment_expression "param_1[0x20] = (int)pvVar11" (subscript_expression "param_1[0x20]" identifier [ number_literal ]) = (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[0x21] = (int)pvVar9;" (assignment_expression "param_1[0x21] = (int)pvVar9" (subscript_expression "param_1[0x21]" identifier [ number_literal ]) = (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[0x15] = param_1[0x13];" (assignment_expression "param_1[0x15] = param_1[0x13]" (subscript_expression "param_1[0x15]" identifier [ number_literal ]) = (subscript_expression "param_1[0x13]" identifier [ number_literal ])) ;) (expression_statement "param_1[0x16] = param_1[0x14];" (assignment_expression "param_1[0x16] = param_1[0x14]" (subscript_expression "param_1[0x16]" identifier [ number_literal ]) = (subscript_expression "param_1[0x14]" identifier [ number_literal ])) ;) (if_statement "if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n          iVar7 = 0;\n          goto LAB_00212664;\n        }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00212664;" goto statement_identifier ;) })) (expression_statement "__dest = (void *)param_1[1];" (assignment_expression "__dest = (void *)param_1[1]" identifier = (cast_expression "(void *)param_1[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (expression_statement "local_20[0] = __dest;" (assignment_expression "local_20[0] = __dest" (subscript_expression "local_20[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (pvVar9 <= pvVar11) goto LAB_00212654;" if (parenthesized_expression "(pvVar9 <= pvVar11)" ( (binary_expression "pvVar9 <= pvVar11" identifier <= identifier) )) (goto_statement "goto LAB_00212654;" goto statement_identifier ;)) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (labeled_statement "LAB_00212600:\n        local_20[0] = __dest;" statement_identifier : (expression_statement "local_20[0] = __dest;" (assignment_expression "local_20[0] = __dest" (subscript_expression "local_20[0]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);" (assignment_expression "iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20)" identifier = (call_expression "(**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20)" (parenthesized_expression "(**(code **)(*(int *)param_1[0x1d] + 0x10))" ( (pointer_expression "**(code **)(*(int *)param_1[0x1d] + 0x10)" * (pointer_expression "*(code **)(*(int *)param_1[0x1d] + 0x10)" * (cast_expression "(code **)(*(int *)param_1[0x1d] + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_1[0x1d] + 0x10)" ( (binary_expression "*(int *)param_1[0x1d] + 0x10" (pointer_expression "*(int *)param_1[0x1d]" * (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ]))) + number_literal) ))))) )) (argument_list "(param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20)" ( (subscript_expression "param_1[0x1d]" identifier [ number_literal ]) , (binary_expression "param_1 + 0x13" identifier + number_literal) , identifier , identifier , (binary_expression "param_1 + 0x20" identifier + number_literal) , identifier , (binary_expression "uVar5 + (int)__dest" identifier + (cast_expression "(int)__dest" ( (type_descriptor "int" primitive_type) ) identifier)) , identifier )))) ;) (if_statement "if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }" if (parenthesized_expression "(iVar7 == 3)" ( (binary_expression "iVar7 == 3" identifier == number_literal) )) (compound_statement "{\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }" { (expression_statement "pvVar9 = (void *)param_1[0x21];" (assignment_expression "pvVar9 = (void *)param_1[0x21]" identifier = (cast_expression "(void *)param_1[0x21]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x21]" identifier [ number_literal ]))) ;) (expression_statement "__dest = (void *)param_1[1];" (assignment_expression "__dest = (void *)param_1[1]" identifier = (cast_expression "(void *)param_1[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_00212739;" goto statement_identifier ;) })) (expression_statement "uVar8 = (int)local_20[0] - param_1[1];" (assignment_expression "uVar8 = (int)local_20[0] - param_1[1]" identifier = (binary_expression "(int)local_20[0] - param_1[1]" (cast_expression "(int)local_20[0]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_20[0]" identifier [ number_literal ])) - (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (if_statement "if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }" if (parenthesized_expression "(iVar7 == 2)" ( (binary_expression "iVar7 == 2" identifier == number_literal) )) (compound_statement "{\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }" { (if_statement "if (0 < (int)uVar8) goto LAB_002127e8;" if (parenthesized_expression "(0 < (int)uVar8)" ( (binary_expression "0 < (int)uVar8" number_literal < (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_002127e8;" goto statement_identifier ;)) (if_statement "if (!bVar3) {\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }" if (parenthesized_expression "(!bVar3)" ( (unary_expression "!bVar3" ! identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }" { comment (expression_statement "FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");" (call_expression "FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file")" identifier (argument_list "("basic_filebuf::underflow invalid byte sequence in file")" ( (string_literal ""basic_filebuf::underflow invalid byte sequence in file"" " string_content ") ))) ;) })) (goto_statement "goto LAB_00212848;" goto statement_identifier ;) })) (expression_statement "bVar2 = (bool)(uVar8 != 0 | bVar3);" (assignment_expression "bVar2 = (bool)(uVar8 != 0 | bVar3)" identifier = (cast_expression "(bool)(uVar8 != 0 | bVar3)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(uVar8 != 0 | bVar3)" ( (binary_expression "uVar8 != 0 | bVar3" (binary_expression "uVar8 != 0" identifier != number_literal) | identifier) )))) ;) (while_statement "while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }" while (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (compound_statement "{\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }" { (labeled_statement "LAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }" statement_identifier : (while_statement "while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }" { (expression_statement "pvVar9 = (void *)param_1[0x21];" (assignment_expression "pvVar9 = (void *)param_1[0x21]" identifier = (cast_expression "(void *)param_1[0x21]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x21]" identifier [ number_literal ]))) ;) (expression_statement "iVar12 = 1;" (assignment_expression "iVar12 = 1" identifier = number_literal) ;) (expression_statement "__n = (int)pvVar9 - param_1[0x1e];" (assignment_expression "__n = (int)pvVar9 - param_1[0x1e]" identifier = (binary_expression "(int)pvVar9 - param_1[0x1e]" (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (subscript_expression "param_1[0x1e]" identifier [ number_literal ]))) ;) (labeled_statement "LAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }" statement_identifier : (if_statement "if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }" if (parenthesized_expression "(param_1[0x1f] < (int)(__n + iVar12))" ( (binary_expression "param_1[0x1f] < (int)(__n + iVar12)" (subscript_expression "param_1[0x1f]" identifier [ number_literal ]) < (cast_expression "(int)(__n + iVar12)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(__n + iVar12)" ( (binary_expression "__n + iVar12" identifier + identifier) )))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }" { comment (expression_statement "FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");" (call_expression "FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid")" identifier (argument_list "("basic_filebuf::underflow codecvt::max_length() is not valid")" ( (string_literal ""basic_filebuf::underflow codecvt::max_length() is not valid"" " string_content ") ))) ;) }))) (expression_statement "iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);" (assignment_expression "iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12)" identifier = (call_expression "FUN_001e7610(param_1 + 0xe,pvVar9,iVar12)" identifier (argument_list "(param_1 + 0xe,pvVar9,iVar12)" ( (binary_expression "param_1 + 0xe" identifier + number_literal) , identifier , identifier )))) ;) (if_statement "if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n              bVar3 = true;\n            }" { (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) }) (else_clause "else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }" else (compound_statement "{\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }" { (if_statement "if (iVar12 == -1) goto LAB_002127c6;" if (parenthesized_expression "(iVar12 == -1)" ( (binary_expression "iVar12 == -1" identifier == number_literal) )) (goto_statement "goto LAB_002127c6;" goto statement_identifier ;)) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) }))) (expression_statement "__dest = (void *)param_1[1];" (assignment_expression "__dest = (void *)param_1[1]" identifier = (cast_expression "(void *)param_1[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "pvVar11 = (void *)param_1[0x20];" (assignment_expression "pvVar11 = (void *)param_1[0x20]" identifier = (cast_expression "(void *)param_1[0x20]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x20]" identifier [ number_literal ]))) ;) (expression_statement "pvVar9 = (void *)(iVar12 + param_1[0x21]);" (assignment_expression "pvVar9 = (void *)(iVar12 + param_1[0x21])" identifier = (cast_expression "(void *)(iVar12 + param_1[0x21])" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + param_1[0x21])" ( (binary_expression "iVar12 + param_1[0x21]" identifier + (subscript_expression "param_1[0x21]" identifier [ number_literal ])) )))) ;) (expression_statement "param_1[0x21] = (int)pvVar9;" (assignment_expression "param_1[0x21] = (int)pvVar9" (subscript_expression "param_1[0x21]" identifier [ number_literal ]) = (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (pvVar11 < pvVar9) goto LAB_00212600;" if (parenthesized_expression "(pvVar11 < pvVar9)" ( (binary_expression "pvVar11 < pvVar9" identifier < identifier) )) (goto_statement "goto LAB_00212600;" goto statement_identifier ;)) (expression_statement "local_20[0] = __dest;" (assignment_expression "local_20[0] = __dest" (subscript_expression "local_20[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar7 == 3) break;" if (parenthesized_expression "(iVar7 == 3)" ( (binary_expression "iVar7 == 3" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (bVar3) goto LAB_002126c9;" if (parenthesized_expression "(bVar3)" ( identifier )) (goto_statement "goto LAB_002126c9;" goto statement_identifier ;)) }))) (labeled_statement "LAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];" statement_identifier : (expression_statement "pvVar11 = (void *)param_1[0x1e];" (assignment_expression "pvVar11 = (void *)param_1[0x1e]" identifier = (cast_expression "(void *)param_1[0x1e]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1e]" identifier [ number_literal ]))) ;)) (expression_statement "uVar10 = (int)pvVar9 - (int)pvVar11;" (assignment_expression "uVar10 = (int)pvVar9 - (int)pvVar11" identifier = (binary_expression "(int)pvVar9 - (int)pvVar11" (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar8 = uVar5;" (assignment_expression "uVar8 = uVar5" identifier = identifier) ;) (if_statement "if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }" if (parenthesized_expression "((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0))" ( (binary_expression "(uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)" (parenthesized_expression "(uVar5 < uVar10)" ( (binary_expression "uVar5 < uVar10" identifier < identifier) )) || (parenthesized_expression "(uVar8 = uVar10, uVar10 != 0)" ( (comma_expression "uVar8 = uVar10, uVar10 != 0" (assignment_expression "uVar8 = uVar10" identifier = identifier) , (binary_expression "uVar10 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }" { (expression_statement "memcpy(__dest,pvVar11,uVar8);" (call_expression "memcpy(__dest,pvVar11,uVar8)" identifier (argument_list "(__dest,pvVar11,uVar8)" ( identifier , identifier , identifier ))) ;) (expression_statement "pvVar11 = (void *)(uVar8 + param_1[0x1e]);" (assignment_expression "pvVar11 = (void *)(uVar8 + param_1[0x1e])" identifier = (cast_expression "(void *)(uVar8 + param_1[0x1e])" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar8 + param_1[0x1e])" ( (binary_expression "uVar8 + param_1[0x1e]" identifier + (subscript_expression "param_1[0x1e]" identifier [ number_literal ])) )))) ;) })) (expression_statement "param_1[0x20] = (int)pvVar11;" (assignment_expression "param_1[0x20] = (int)pvVar11" (subscript_expression "param_1[0x20]" identifier [ number_literal ]) = (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iVar7 = 3;" (assignment_expression "iVar7 = 3" identifier = number_literal) ;) (expression_statement "bVar2 = (bool)(uVar8 != 0 | bVar3);" (assignment_expression "bVar2 = (bool)(uVar8 != 0 | bVar3)" identifier = (cast_expression "(bool)(uVar8 != 0 | bVar3)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(uVar8 != 0 | bVar3)" ( (binary_expression "uVar8 != 0 | bVar3" (binary_expression "uVar8 != 0" identifier != number_literal) | identifier) )))) ;) })) (if_statement "if (0 < (int)uVar8) goto LAB_002127e8;" if (parenthesized_expression "(0 < (int)uVar8)" ( (binary_expression "0 < (int)uVar8" number_literal < (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_002127e8;" goto statement_identifier ;)) (if_statement "if (!bVar3) goto LAB_002127c6;" if (parenthesized_expression "(!bVar3)" ( (unary_expression "!bVar3" ! identifier) )) (goto_statement "goto LAB_002127c6;" goto statement_identifier ;)) (labeled_statement "LAB_002126c9:\n        iVar12 = param_1[0x17];" statement_identifier : (expression_statement "iVar12 = param_1[0x17];" (assignment_expression "iVar12 = param_1[0x17]" identifier = (subscript_expression "param_1[0x17]" identifier [ number_literal ])) ;)) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[4] = 0;" (assignment_expression "param_1[4] = 0" (subscript_expression "param_1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[1] = iVar12;" (assignment_expression "param_1[1] = iVar12" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[2] = iVar12;" (assignment_expression "param_1[2] = iVar12" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[3] = iVar12;" (assignment_expression "param_1[3] = iVar12" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[6] = 0;" (assignment_expression "param_1[6] = 0" (subscript_expression "param_1[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((int)param_1 + 0x65) = 0;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x65) = 0" (pointer_expression "*(undefined1 *)((int)param_1 + 0x65)" * (cast_expression "(undefined1 *)((int)param_1 + 0x65)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x65)" ( (binary_expression "(int)param_1 + 0x65" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if (iVar7 == 1) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }" if (parenthesized_expression "(iVar7 == 1)" ( (binary_expression "iVar7 == 1" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }" { comment (expression_statement "FUN_00226af0("basic_filebuf::underflow incomplete character in file");" (call_expression "FUN_00226af0("basic_filebuf::underflow incomplete character in file")" identifier (argument_list "("basic_filebuf::underflow incomplete character in file")" ( (string_literal ""basic_filebuf::underflow incomplete character in file"" " string_content ") ))) ;) })) (goto_statement "goto LAB_0021286d;" goto statement_identifier ;) }))) }))) (expression_statement "uVar5 = (uint)*pbVar6;" (assignment_expression "uVar5 = (uint)*pbVar6" identifier = (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) }))) (return_statement "return uVar5;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* std::filebuf::underflow() */\n\nuint __thiscall std::filebuf::underflow(filebuf *this)\n\n{\n  int *piVar1;\n  undefined4 uVar2;\n  bool bVar3;\n  bool bVar4;\n  char cVar5;\n  uint uVar6;\n  byte *pbVar7;\n  int iVar8;\n  uint uVar9;\n  char *pcVar10;\n  uint uVar11;\n  char *__dest;\n  void *__src;\n  int iVar12;\n  void *__dest_00;\n  size_t __n;\n  uint local_3c;\n  void *local_20 [4];\n  \n  if (((byte)this[0x40] & 8) == 0) {\nLAB_0021286d:\n    uVar6 = 0xffffffff;\n  }\n  else {\n    if (this[0x66] == (filebuf)0x0) {\n      pbVar7 = *(byte **)(this + 8);\n      if (this[0x70] == (filebuf)0x0) goto LAB_002124b2;\nLAB_00212506:\n      this[0x70] = (filebuf)0x0;\n      pbVar7 = (byte *)((uint)(*(byte **)(this + 4) != pbVar7) + *(int *)(this + 0x68));\n      *(byte **)(this + 0xc) = *(byte **)(this + 0x6c);\n      *(byte **)(this + 0x68) = pbVar7;\n      *(undefined4 *)(this + 4) = *(undefined4 *)(this + 0x5c);\n      *(byte **)(this + 8) = pbVar7;\n      if (*(byte **)(this + 0x6c) <= pbVar7) goto LAB_0021252c;\n    }\n    else {\n      iVar12 = (**(code **)(*(int *)this + 0x34))(this,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar7 = *(byte **)(this + 0x5c);\n      *(undefined4 *)(this + 0x14) = 0;\n      *(undefined4 *)(this + 0x10) = 0;\n      *(byte **)(this + 4) = pbVar7;\n      *(byte **)(this + 8) = pbVar7;\n      *(byte **)(this + 0xc) = pbVar7;\n      *(undefined4 *)(this + 0x18) = 0;\n      this[0x66] = (filebuf)0x0;\n      if (this[0x70] != (filebuf)0x0) goto LAB_00212506;\nLAB_002124b2:\n      if (*(byte **)(this + 0xc) <= pbVar7) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < *(uint *)(this + 0x60)) {\n          iVar12 = *(int *)(this + 0x60);\n        }\n        uVar6 = iVar12 - 1;\n        piVar1 = *(int **)(this + 0x74);\n        if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          __throw_bad_cast();\n        }\n        cVar5 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar5 != '\0') {\n          uVar9 = __basic_file<char>::xsgetn\n                            ((__basic_file<char> *)(this + 0x38),*(char **)(this + 4),uVar6);\n          if (uVar9 != 0) {\n            if (0 < (int)uVar9) {\nLAB_002127e8:\n              pbVar7 = *(byte **)(this + 0x5c);\n              *(byte **)(this + 4) = pbVar7;\n              *(byte **)(this + 8) = pbVar7;\n              if (((byte)this[0x40] & 8) == 0) {\n                *(byte **)(this + 0xc) = pbVar7;\n              }\n              else {\n                *(byte **)(this + 0xc) = pbVar7 + uVar9;\n              }\n              *(undefined4 *)(this + 0x14) = 0;\n              *(undefined4 *)(this + 0x10) = 0;\n              *(undefined4 *)(this + 0x18) = 0;\n              this[0x65] = (filebuf)0x1;\n              return (uint)*pbVar7;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          uVar2 = *(undefined4 *)(this + 0x5c);\n          *(undefined4 *)(this + 0x14) = 0;\n          *(undefined4 *)(this + 0x10) = 0;\n          *(undefined4 *)(this + 4) = uVar2;\n          *(undefined4 *)(this + 8) = uVar2;\n          *(undefined4 *)(this + 0xc) = uVar2;\n          *(undefined4 *)(this + 0x18) = 0;\n          this[0x65] = (filebuf)0x0;\n          goto LAB_0021286d;\n        }\n        iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x14))(*(int **)(this + 0x74));\n        if (iVar8 < 1) {\n          iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x20))(*(int **)(this + 0x74));\n          local_3c = iVar12 + -2 + iVar8;\n          uVar9 = uVar6;\n        }\n        else {\n          local_3c = iVar8 * uVar6;\n          uVar9 = local_3c;\n        }\n        __n = *(int *)(this + 0x84) - (int)*(void **)(this + 0x80);\n        iVar12 = uVar9 - __n;\n        if ((int)uVar9 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar8 = *(int *)(this + 0x7c);\n        if ((this[0x65] == (filebuf)0x0) || (*(int *)(this + 0xc) != *(int *)(this + 4))) {\n          if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          __dest = *(char **)(this + 0x78);\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            goto LAB_002128b5;\n          }\n          __dest = *(char **)(this + 0x78);\n        }\n        else if (iVar8 < (int)local_3c) {\n          __dest = (char *)operator_new__(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(__dest,*(void **)(this + 0x80),__n);\nLAB_002128b5:\n          if (*(void **)(this + 0x78) != (void *)0x0) {\n            operator_delete__(*(void **)(this + 0x78));\n          }\n          *(char **)(this + 0x78) = __dest;\n          *(uint *)(this + 0x7c) = local_3c;\n        }\n        else {\n          __dest = *(char **)(this + 0x78);\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(__dest,*(void **)(this + 0x80),__n);\n          __dest = *(char **)(this + 0x78);\n        }\n        pcVar10 = __dest + __n;\n        *(char **)(this + 0x80) = __dest;\n        *(char **)(this + 0x84) = pcVar10;\n        *(undefined4 *)(this + 0x54) = *(undefined4 *)(this + 0x4c);\n        *(undefined4 *)(this + 0x58) = *(undefined4 *)(this + 0x50);\n        if (iVar12 != 0) {\n          iVar8 = 0;\n          goto LAB_00212664;\n        }\n        __dest_00 = *(void **)(this + 4);\n        iVar8 = 0;\n        local_20[0] = __dest_00;\n        if (pcVar10 <= __dest) goto LAB_00212654;\n        bVar4 = false;\nLAB_00212600:\n        local_20[0] = __dest_00;\n        iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x10))\n                          (*(undefined4 *)(this + 0x74),this + 0x4c,__dest,pcVar10,this + 0x80,\n                           __dest_00,uVar6 + (int)__dest_00,local_20);\n        if (iVar8 == 3) {\n          pcVar10 = *(char **)(this + 0x84);\n          __dest_00 = *(void **)(this + 4);\n          goto LAB_00212739;\n        }\n        uVar9 = (int)local_20[0] - *(int *)(this + 4);\n        if (iVar8 == 2) {\n          if (0 < (int)uVar9) goto LAB_002127e8;\n          if (!bVar4) {\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar3 = (bool)(uVar9 != 0 | bVar4);\n        while (!bVar3) {\nLAB_00212654:\n          while( true ) {\n            pcVar10 = *(char **)(this + 0x84);\n            iVar12 = 1;\n            __n = (int)pcVar10 - *(int *)(this + 0x78);\nLAB_00212664:\n            if (*(int *)(this + 0x7c) < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              __throw_ios_failure("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = __basic_file<char>::xsgetn((__basic_file<char> *)(this + 0x38),pcVar10,iVar12);\n            if (iVar12 == 0) {\n              bVar4 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar4 = false;\n            }\n            __dest_00 = *(void **)(this + 4);\n            __dest = *(char **)(this + 0x80);\n            pcVar10 = (char *)(iVar12 + *(int *)(this + 0x84));\n            *(char **)(this + 0x84) = pcVar10;\n            if (__dest < pcVar10) goto LAB_00212600;\n            local_20[0] = __dest_00;\n            if (iVar8 == 3) break;\n            if (bVar4) goto LAB_002126c9;\n          }\nLAB_00212739:\n          __src = *(void **)(this + 0x78);\n          uVar11 = (int)pcVar10 - (int)__src;\n          uVar9 = uVar6;\n          if ((uVar6 < uVar11) || (uVar9 = uVar11, uVar11 != 0)) {\n            memcpy(__dest_00,__src,uVar9);\n            __src = (void *)(uVar9 + *(int *)(this + 0x78));\n          }\n          *(void **)(this + 0x80) = __src;\n          iVar8 = 3;\n          bVar3 = (bool)(uVar9 != 0 | bVar4);\n        }\n        if (0 < (int)uVar9) goto LAB_002127e8;\n        if (!bVar4) goto LAB_002127c6;\nLAB_002126c9:\n        uVar2 = *(undefined4 *)(this + 0x5c);\n        *(undefined4 *)(this + 0x14) = 0;\n        *(undefined4 *)(this + 0x10) = 0;\n        *(undefined4 *)(this + 4) = uVar2;\n        *(undefined4 *)(this + 8) = uVar2;\n        *(undefined4 *)(this + 0xc) = uVar2;\n        *(undefined4 *)(this + 0x18) = 0;\n        this[0x65] = (filebuf)0x0;\n        if (iVar8 == 1) {\n                    /* WARNING: Subroutine does not return */\n          __throw_ios_failure("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }\n    uVar6 = (uint)*pbVar7;\n  }\n  return uVar6;\n}\n\n" comment comment (function_definition "uint __thiscall std::filebuf::underflow(filebuf *this)\n\n{\n  int *piVar1;\n  undefined4 uVar2;\n  bool bVar3;\n  bool bVar4;\n  char cVar5;\n  uint uVar6;\n  byte *pbVar7;\n  int iVar8;\n  uint uVar9;\n  char *pcVar10;\n  uint uVar11;\n  char *__dest;\n  void *__src;\n  int iVar12;\n  void *__dest_00;\n  size_t __n;\n  uint local_3c;\n  void *local_20 [4];\n  \n  if (((byte)this[0x40] & 8) == 0) {\nLAB_0021286d:\n    uVar6 = 0xffffffff;\n  }\n  else {\n    if (this[0x66] == (filebuf)0x0) {\n      pbVar7 = *(byte **)(this + 8);\n      if (this[0x70] == (filebuf)0x0) goto LAB_002124b2;\nLAB_00212506:\n      this[0x70] = (filebuf)0x0;\n      pbVar7 = (byte *)((uint)(*(byte **)(this + 4) != pbVar7) + *(int *)(this + 0x68));\n      *(byte **)(this + 0xc) = *(byte **)(this + 0x6c);\n      *(byte **)(this + 0x68) = pbVar7;\n      *(undefined4 *)(this + 4) = *(undefined4 *)(this + 0x5c);\n      *(byte **)(this + 8) = pbVar7;\n      if (*(byte **)(this + 0x6c) <= pbVar7) goto LAB_0021252c;\n    }\n    else {\n      iVar12 = (**(code **)(*(int *)this + 0x34))(this,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar7 = *(byte **)(this + 0x5c);\n      *(undefined4 *)(this + 0x14) = 0;\n      *(undefined4 *)(this + 0x10) = 0;\n      *(byte **)(this + 4) = pbVar7;\n      *(byte **)(this + 8) = pbVar7;\n      *(byte **)(this + 0xc) = pbVar7;\n      *(undefined4 *)(this + 0x18) = 0;\n      this[0x66] = (filebuf)0x0;\n      if (this[0x70] != (filebuf)0x0) goto LAB_00212506;\nLAB_002124b2:\n      if (*(byte **)(this + 0xc) <= pbVar7) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < *(uint *)(this + 0x60)) {\n          iVar12 = *(int *)(this + 0x60);\n        }\n        uVar6 = iVar12 - 1;\n        piVar1 = *(int **)(this + 0x74);\n        if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          __throw_bad_cast();\n        }\n        cVar5 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar5 != '\0') {\n          uVar9 = __basic_file<char>::xsgetn\n                            ((__basic_file<char> *)(this + 0x38),*(char **)(this + 4),uVar6);\n          if (uVar9 != 0) {\n            if (0 < (int)uVar9) {\nLAB_002127e8:\n              pbVar7 = *(byte **)(this + 0x5c);\n              *(byte **)(this + 4) = pbVar7;\n              *(byte **)(this + 8) = pbVar7;\n              if (((byte)this[0x40] & 8) == 0) {\n                *(byte **)(this + 0xc) = pbVar7;\n              }\n              else {\n                *(byte **)(this + 0xc) = pbVar7 + uVar9;\n              }\n              *(undefined4 *)(this + 0x14) = 0;\n              *(undefined4 *)(this + 0x10) = 0;\n              *(undefined4 *)(this + 0x18) = 0;\n              this[0x65] = (filebuf)0x1;\n              return (uint)*pbVar7;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          uVar2 = *(undefined4 *)(this + 0x5c);\n          *(undefined4 *)(this + 0x14) = 0;\n          *(undefined4 *)(this + 0x10) = 0;\n          *(undefined4 *)(this + 4) = uVar2;\n          *(undefined4 *)(this + 8) = uVar2;\n          *(undefined4 *)(this + 0xc) = uVar2;\n          *(undefined4 *)(this + 0x18) = 0;\n          this[0x65] = (filebuf)0x0;\n          goto LAB_0021286d;\n        }\n        iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x14))(*(int **)(this + 0x74));\n        if (iVar8 < 1) {\n          iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x20))(*(int **)(this + 0x74));\n          local_3c = iVar12 + -2 + iVar8;\n          uVar9 = uVar6;\n        }\n        else {\n          local_3c = iVar8 * uVar6;\n          uVar9 = local_3c;\n        }\n        __n = *(int *)(this + 0x84) - (int)*(void **)(this + 0x80);\n        iVar12 = uVar9 - __n;\n        if ((int)uVar9 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar8 = *(int *)(this + 0x7c);\n        if ((this[0x65] == (filebuf)0x0) || (*(int *)(this + 0xc) != *(int *)(this + 4))) {\n          if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          __dest = *(char **)(this + 0x78);\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            goto LAB_002128b5;\n          }\n          __dest = *(char **)(this + 0x78);\n        }\n        else if (iVar8 < (int)local_3c) {\n          __dest = (char *)operator_new__(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(__dest,*(void **)(this + 0x80),__n);\nLAB_002128b5:\n          if (*(void **)(this + 0x78) != (void *)0x0) {\n            operator_delete__(*(void **)(this + 0x78));\n          }\n          *(char **)(this + 0x78) = __dest;\n          *(uint *)(this + 0x7c) = local_3c;\n        }\n        else {\n          __dest = *(char **)(this + 0x78);\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(__dest,*(void **)(this + 0x80),__n);\n          __dest = *(char **)(this + 0x78);\n        }\n        pcVar10 = __dest + __n;\n        *(char **)(this + 0x80) = __dest;\n        *(char **)(this + 0x84) = pcVar10;\n        *(undefined4 *)(this + 0x54) = *(undefined4 *)(this + 0x4c);\n        *(undefined4 *)(this + 0x58) = *(undefined4 *)(this + 0x50);\n        if (iVar12 != 0) {\n          iVar8 = 0;\n          goto LAB_00212664;\n        }\n        __dest_00 = *(void **)(this + 4);\n        iVar8 = 0;\n        local_20[0] = __dest_00;\n        if (pcVar10 <= __dest) goto LAB_00212654;\n        bVar4 = false;\nLAB_00212600:\n        local_20[0] = __dest_00;\n        iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x10))\n                          (*(undefined4 *)(this + 0x74),this + 0x4c,__dest,pcVar10,this + 0x80,\n                           __dest_00,uVar6 + (int)__dest_00,local_20);\n        if (iVar8 == 3) {\n          pcVar10 = *(char **)(this + 0x84);\n          __dest_00 = *(void **)(this + 4);\n          goto LAB_00212739;\n        }\n        uVar9 = (int)local_20[0] - *(int *)(this + 4);\n        if (iVar8 == 2) {\n          if (0 < (int)uVar9) goto LAB_002127e8;\n          if (!bVar4) {\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar3 = (bool)(uVar9 != 0 | bVar4);\n        while (!bVar3) {\nLAB_00212654:\n          while( true ) {\n            pcVar10 = *(char **)(this + 0x84);\n            iVar12 = 1;\n            __n = (int)pcVar10 - *(int *)(this + 0x78);\nLAB_00212664:\n            if (*(int *)(this + 0x7c) < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              __throw_ios_failure("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = __basic_file<char>::xsgetn((__basic_file<char> *)(this + 0x38),pcVar10,iVar12);\n            if (iVar12 == 0) {\n              bVar4 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar4 = false;\n            }\n            __dest_00 = *(void **)(this + 4);\n            __dest = *(char **)(this + 0x80);\n            pcVar10 = (char *)(iVar12 + *(int *)(this + 0x84));\n            *(char **)(this + 0x84) = pcVar10;\n            if (__dest < pcVar10) goto LAB_00212600;\n            local_20[0] = __dest_00;\n            if (iVar8 == 3) break;\n            if (bVar4) goto LAB_002126c9;\n          }\nLAB_00212739:\n          __src = *(void **)(this + 0x78);\n          uVar11 = (int)pcVar10 - (int)__src;\n          uVar9 = uVar6;\n          if ((uVar6 < uVar11) || (uVar9 = uVar11, uVar11 != 0)) {\n            memcpy(__dest_00,__src,uVar9);\n            __src = (void *)(uVar9 + *(int *)(this + 0x78));\n          }\n          *(void **)(this + 0x80) = __src;\n          iVar8 = 3;\n          bVar3 = (bool)(uVar9 != 0 | bVar4);\n        }\n        if (0 < (int)uVar9) goto LAB_002127e8;\n        if (!bVar4) goto LAB_002127c6;\nLAB_002126c9:\n        uVar2 = *(undefined4 *)(this + 0x5c);\n        *(undefined4 *)(this + 0x14) = 0;\n        *(undefined4 *)(this + 0x10) = 0;\n        *(undefined4 *)(this + 4) = uVar2;\n        *(undefined4 *)(this + 8) = uVar2;\n        *(undefined4 *)(this + 0xc) = uVar2;\n        *(undefined4 *)(this + 0x18) = 0;\n        this[0x65] = (filebuf)0x0;\n        if (iVar8 == 1) {\n                    /* WARNING: Subroutine does not return */\n          __throw_ios_failure("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }\n    uVar6 = (uint)*pbVar7;\n  }\n  return uVar6;\n}" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::filebuf::" identifier : : identifier : :) (function_declarator "underflow(filebuf *this)" identifier (parameter_list "(filebuf *this)" ( (parameter_declaration "filebuf *this" type_identifier (pointer_declarator "*this" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  undefined4 uVar2;\n  bool bVar3;\n  bool bVar4;\n  char cVar5;\n  uint uVar6;\n  byte *pbVar7;\n  int iVar8;\n  uint uVar9;\n  char *pcVar10;\n  uint uVar11;\n  char *__dest;\n  void *__src;\n  int iVar12;\n  void *__dest_00;\n  size_t __n;\n  uint local_3c;\n  void *local_20 [4];\n  \n  if (((byte)this[0x40] & 8) == 0) {\nLAB_0021286d:\n    uVar6 = 0xffffffff;\n  }\n  else {\n    if (this[0x66] == (filebuf)0x0) {\n      pbVar7 = *(byte **)(this + 8);\n      if (this[0x70] == (filebuf)0x0) goto LAB_002124b2;\nLAB_00212506:\n      this[0x70] = (filebuf)0x0;\n      pbVar7 = (byte *)((uint)(*(byte **)(this + 4) != pbVar7) + *(int *)(this + 0x68));\n      *(byte **)(this + 0xc) = *(byte **)(this + 0x6c);\n      *(byte **)(this + 0x68) = pbVar7;\n      *(undefined4 *)(this + 4) = *(undefined4 *)(this + 0x5c);\n      *(byte **)(this + 8) = pbVar7;\n      if (*(byte **)(this + 0x6c) <= pbVar7) goto LAB_0021252c;\n    }\n    else {\n      iVar12 = (**(code **)(*(int *)this + 0x34))(this,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar7 = *(byte **)(this + 0x5c);\n      *(undefined4 *)(this + 0x14) = 0;\n      *(undefined4 *)(this + 0x10) = 0;\n      *(byte **)(this + 4) = pbVar7;\n      *(byte **)(this + 8) = pbVar7;\n      *(byte **)(this + 0xc) = pbVar7;\n      *(undefined4 *)(this + 0x18) = 0;\n      this[0x66] = (filebuf)0x0;\n      if (this[0x70] != (filebuf)0x0) goto LAB_00212506;\nLAB_002124b2:\n      if (*(byte **)(this + 0xc) <= pbVar7) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < *(uint *)(this + 0x60)) {\n          iVar12 = *(int *)(this + 0x60);\n        }\n        uVar6 = iVar12 - 1;\n        piVar1 = *(int **)(this + 0x74);\n        if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          __throw_bad_cast();\n        }\n        cVar5 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar5 != '\0') {\n          uVar9 = __basic_file<char>::xsgetn\n                            ((__basic_file<char> *)(this + 0x38),*(char **)(this + 4),uVar6);\n          if (uVar9 != 0) {\n            if (0 < (int)uVar9) {\nLAB_002127e8:\n              pbVar7 = *(byte **)(this + 0x5c);\n              *(byte **)(this + 4) = pbVar7;\n              *(byte **)(this + 8) = pbVar7;\n              if (((byte)this[0x40] & 8) == 0) {\n                *(byte **)(this + 0xc) = pbVar7;\n              }\n              else {\n                *(byte **)(this + 0xc) = pbVar7 + uVar9;\n              }\n              *(undefined4 *)(this + 0x14) = 0;\n              *(undefined4 *)(this + 0x10) = 0;\n              *(undefined4 *)(this + 0x18) = 0;\n              this[0x65] = (filebuf)0x1;\n              return (uint)*pbVar7;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          uVar2 = *(undefined4 *)(this + 0x5c);\n          *(undefined4 *)(this + 0x14) = 0;\n          *(undefined4 *)(this + 0x10) = 0;\n          *(undefined4 *)(this + 4) = uVar2;\n          *(undefined4 *)(this + 8) = uVar2;\n          *(undefined4 *)(this + 0xc) = uVar2;\n          *(undefined4 *)(this + 0x18) = 0;\n          this[0x65] = (filebuf)0x0;\n          goto LAB_0021286d;\n        }\n        iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x14))(*(int **)(this + 0x74));\n        if (iVar8 < 1) {\n          iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x20))(*(int **)(this + 0x74));\n          local_3c = iVar12 + -2 + iVar8;\n          uVar9 = uVar6;\n        }\n        else {\n          local_3c = iVar8 * uVar6;\n          uVar9 = local_3c;\n        }\n        __n = *(int *)(this + 0x84) - (int)*(void **)(this + 0x80);\n        iVar12 = uVar9 - __n;\n        if ((int)uVar9 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar8 = *(int *)(this + 0x7c);\n        if ((this[0x65] == (filebuf)0x0) || (*(int *)(this + 0xc) != *(int *)(this + 4))) {\n          if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          __dest = *(char **)(this + 0x78);\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            goto LAB_002128b5;\n          }\n          __dest = *(char **)(this + 0x78);\n        }\n        else if (iVar8 < (int)local_3c) {\n          __dest = (char *)operator_new__(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(__dest,*(void **)(this + 0x80),__n);\nLAB_002128b5:\n          if (*(void **)(this + 0x78) != (void *)0x0) {\n            operator_delete__(*(void **)(this + 0x78));\n          }\n          *(char **)(this + 0x78) = __dest;\n          *(uint *)(this + 0x7c) = local_3c;\n        }\n        else {\n          __dest = *(char **)(this + 0x78);\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(__dest,*(void **)(this + 0x80),__n);\n          __dest = *(char **)(this + 0x78);\n        }\n        pcVar10 = __dest + __n;\n        *(char **)(this + 0x80) = __dest;\n        *(char **)(this + 0x84) = pcVar10;\n        *(undefined4 *)(this + 0x54) = *(undefined4 *)(this + 0x4c);\n        *(undefined4 *)(this + 0x58) = *(undefined4 *)(this + 0x50);\n        if (iVar12 != 0) {\n          iVar8 = 0;\n          goto LAB_00212664;\n        }\n        __dest_00 = *(void **)(this + 4);\n        iVar8 = 0;\n        local_20[0] = __dest_00;\n        if (pcVar10 <= __dest) goto LAB_00212654;\n        bVar4 = false;\nLAB_00212600:\n        local_20[0] = __dest_00;\n        iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x10))\n                          (*(undefined4 *)(this + 0x74),this + 0x4c,__dest,pcVar10,this + 0x80,\n                           __dest_00,uVar6 + (int)__dest_00,local_20);\n        if (iVar8 == 3) {\n          pcVar10 = *(char **)(this + 0x84);\n          __dest_00 = *(void **)(this + 4);\n          goto LAB_00212739;\n        }\n        uVar9 = (int)local_20[0] - *(int *)(this + 4);\n        if (iVar8 == 2) {\n          if (0 < (int)uVar9) goto LAB_002127e8;\n          if (!bVar4) {\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar3 = (bool)(uVar9 != 0 | bVar4);\n        while (!bVar3) {\nLAB_00212654:\n          while( true ) {\n            pcVar10 = *(char **)(this + 0x84);\n            iVar12 = 1;\n            __n = (int)pcVar10 - *(int *)(this + 0x78);\nLAB_00212664:\n            if (*(int *)(this + 0x7c) < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              __throw_ios_failure("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = __basic_file<char>::xsgetn((__basic_file<char> *)(this + 0x38),pcVar10,iVar12);\n            if (iVar12 == 0) {\n              bVar4 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar4 = false;\n            }\n            __dest_00 = *(void **)(this + 4);\n            __dest = *(char **)(this + 0x80);\n            pcVar10 = (char *)(iVar12 + *(int *)(this + 0x84));\n            *(char **)(this + 0x84) = pcVar10;\n            if (__dest < pcVar10) goto LAB_00212600;\n            local_20[0] = __dest_00;\n            if (iVar8 == 3) break;\n            if (bVar4) goto LAB_002126c9;\n          }\nLAB_00212739:\n          __src = *(void **)(this + 0x78);\n          uVar11 = (int)pcVar10 - (int)__src;\n          uVar9 = uVar6;\n          if ((uVar6 < uVar11) || (uVar9 = uVar11, uVar11 != 0)) {\n            memcpy(__dest_00,__src,uVar9);\n            __src = (void *)(uVar9 + *(int *)(this + 0x78));\n          }\n          *(void **)(this + 0x80) = __src;\n          iVar8 = 3;\n          bVar3 = (bool)(uVar9 != 0 | bVar4);\n        }\n        if (0 < (int)uVar9) goto LAB_002127e8;\n        if (!bVar4) goto LAB_002127c6;\nLAB_002126c9:\n        uVar2 = *(undefined4 *)(this + 0x5c);\n        *(undefined4 *)(this + 0x14) = 0;\n        *(undefined4 *)(this + 0x10) = 0;\n        *(undefined4 *)(this + 4) = uVar2;\n        *(undefined4 *)(this + 8) = uVar2;\n        *(undefined4 *)(this + 0xc) = uVar2;\n        *(undefined4 *)(this + 0x18) = 0;\n        this[0x65] = (filebuf)0x0;\n        if (iVar8 == 1) {\n                    /* WARNING: Subroutine does not return */\n          __throw_ios_failure("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }\n    uVar6 = (uint)*pbVar7;\n  }\n  return uVar6;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "char *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "void *__src;" primitive_type (pointer_declarator "*__src" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "void *__dest_00;" primitive_type (pointer_declarator "*__dest_00" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (declaration "void *local_20 [4];" primitive_type (pointer_declarator "*local_20 [4]" * (array_declarator "local_20 [4]" identifier [ number_literal ])) ;) (if_statement "if (((byte)this[0x40] & 8) == 0) {\nLAB_0021286d:\n    uVar6 = 0xffffffff;\n  }\n  else {\n    if (this[0x66] == (filebuf)0x0) {\n      pbVar7 = *(byte **)(this + 8);\n      if (this[0x70] == (filebuf)0x0) goto LAB_002124b2;\nLAB_00212506:\n      this[0x70] = (filebuf)0x0;\n      pbVar7 = (byte *)((uint)(*(byte **)(this + 4) != pbVar7) + *(int *)(this + 0x68));\n      *(byte **)(this + 0xc) = *(byte **)(this + 0x6c);\n      *(byte **)(this + 0x68) = pbVar7;\n      *(undefined4 *)(this + 4) = *(undefined4 *)(this + 0x5c);\n      *(byte **)(this + 8) = pbVar7;\n      if (*(byte **)(this + 0x6c) <= pbVar7) goto LAB_0021252c;\n    }\n    else {\n      iVar12 = (**(code **)(*(int *)this + 0x34))(this,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar7 = *(byte **)(this + 0x5c);\n      *(undefined4 *)(this + 0x14) = 0;\n      *(undefined4 *)(this + 0x10) = 0;\n      *(byte **)(this + 4) = pbVar7;\n      *(byte **)(this + 8) = pbVar7;\n      *(byte **)(this + 0xc) = pbVar7;\n      *(undefined4 *)(this + 0x18) = 0;\n      this[0x66] = (filebuf)0x0;\n      if (this[0x70] != (filebuf)0x0) goto LAB_00212506;\nLAB_002124b2:\n      if (*(byte **)(this + 0xc) <= pbVar7) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < *(uint *)(this + 0x60)) {\n          iVar12 = *(int *)(this + 0x60);\n        }\n        uVar6 = iVar12 - 1;\n        piVar1 = *(int **)(this + 0x74);\n        if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          __throw_bad_cast();\n        }\n        cVar5 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar5 != '\0') {\n          uVar9 = __basic_file<char>::xsgetn\n                            ((__basic_file<char> *)(this + 0x38),*(char **)(this + 4),uVar6);\n          if (uVar9 != 0) {\n            if (0 < (int)uVar9) {\nLAB_002127e8:\n              pbVar7 = *(byte **)(this + 0x5c);\n              *(byte **)(this + 4) = pbVar7;\n              *(byte **)(this + 8) = pbVar7;\n              if (((byte)this[0x40] & 8) == 0) {\n                *(byte **)(this + 0xc) = pbVar7;\n              }\n              else {\n                *(byte **)(this + 0xc) = pbVar7 + uVar9;\n              }\n              *(undefined4 *)(this + 0x14) = 0;\n              *(undefined4 *)(this + 0x10) = 0;\n              *(undefined4 *)(this + 0x18) = 0;\n              this[0x65] = (filebuf)0x1;\n              return (uint)*pbVar7;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          uVar2 = *(undefined4 *)(this + 0x5c);\n          *(undefined4 *)(this + 0x14) = 0;\n          *(undefined4 *)(this + 0x10) = 0;\n          *(undefined4 *)(this + 4) = uVar2;\n          *(undefined4 *)(this + 8) = uVar2;\n          *(undefined4 *)(this + 0xc) = uVar2;\n          *(undefined4 *)(this + 0x18) = 0;\n          this[0x65] = (filebuf)0x0;\n          goto LAB_0021286d;\n        }\n        iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x14))(*(int **)(this + 0x74));\n        if (iVar8 < 1) {\n          iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x20))(*(int **)(this + 0x74));\n          local_3c = iVar12 + -2 + iVar8;\n          uVar9 = uVar6;\n        }\n        else {\n          local_3c = iVar8 * uVar6;\n          uVar9 = local_3c;\n        }\n        __n = *(int *)(this + 0x84) - (int)*(void **)(this + 0x80);\n        iVar12 = uVar9 - __n;\n        if ((int)uVar9 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar8 = *(int *)(this + 0x7c);\n        if ((this[0x65] == (filebuf)0x0) || (*(int *)(this + 0xc) != *(int *)(this + 4))) {\n          if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          __dest = *(char **)(this + 0x78);\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            goto LAB_002128b5;\n          }\n          __dest = *(char **)(this + 0x78);\n        }\n        else if (iVar8 < (int)local_3c) {\n          __dest = (char *)operator_new__(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(__dest,*(void **)(this + 0x80),__n);\nLAB_002128b5:\n          if (*(void **)(this + 0x78) != (void *)0x0) {\n            operator_delete__(*(void **)(this + 0x78));\n          }\n          *(char **)(this + 0x78) = __dest;\n          *(uint *)(this + 0x7c) = local_3c;\n        }\n        else {\n          __dest = *(char **)(this + 0x78);\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(__dest,*(void **)(this + 0x80),__n);\n          __dest = *(char **)(this + 0x78);\n        }\n        pcVar10 = __dest + __n;\n        *(char **)(this + 0x80) = __dest;\n        *(char **)(this + 0x84) = pcVar10;\n        *(undefined4 *)(this + 0x54) = *(undefined4 *)(this + 0x4c);\n        *(undefined4 *)(this + 0x58) = *(undefined4 *)(this + 0x50);\n        if (iVar12 != 0) {\n          iVar8 = 0;\n          goto LAB_00212664;\n        }\n        __dest_00 = *(void **)(this + 4);\n        iVar8 = 0;\n        local_20[0] = __dest_00;\n        if (pcVar10 <= __dest) goto LAB_00212654;\n        bVar4 = false;\nLAB_00212600:\n        local_20[0] = __dest_00;\n        iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x10))\n                          (*(undefined4 *)(this + 0x74),this + 0x4c,__dest,pcVar10,this + 0x80,\n                           __dest_00,uVar6 + (int)__dest_00,local_20);\n        if (iVar8 == 3) {\n          pcVar10 = *(char **)(this + 0x84);\n          __dest_00 = *(void **)(this + 4);\n          goto LAB_00212739;\n        }\n        uVar9 = (int)local_20[0] - *(int *)(this + 4);\n        if (iVar8 == 2) {\n          if (0 < (int)uVar9) goto LAB_002127e8;\n          if (!bVar4) {\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar3 = (bool)(uVar9 != 0 | bVar4);\n        while (!bVar3) {\nLAB_00212654:\n          while( true ) {\n            pcVar10 = *(char **)(this + 0x84);\n            iVar12 = 1;\n            __n = (int)pcVar10 - *(int *)(this + 0x78);\nLAB_00212664:\n            if (*(int *)(this + 0x7c) < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              __throw_ios_failure("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = __basic_file<char>::xsgetn((__basic_file<char> *)(this + 0x38),pcVar10,iVar12);\n            if (iVar12 == 0) {\n              bVar4 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar4 = false;\n            }\n            __dest_00 = *(void **)(this + 4);\n            __dest = *(char **)(this + 0x80);\n            pcVar10 = (char *)(iVar12 + *(int *)(this + 0x84));\n            *(char **)(this + 0x84) = pcVar10;\n            if (__dest < pcVar10) goto LAB_00212600;\n            local_20[0] = __dest_00;\n            if (iVar8 == 3) break;\n            if (bVar4) goto LAB_002126c9;\n          }\nLAB_00212739:\n          __src = *(void **)(this + 0x78);\n          uVar11 = (int)pcVar10 - (int)__src;\n          uVar9 = uVar6;\n          if ((uVar6 < uVar11) || (uVar9 = uVar11, uVar11 != 0)) {\n            memcpy(__dest_00,__src,uVar9);\n            __src = (void *)(uVar9 + *(int *)(this + 0x78));\n          }\n          *(void **)(this + 0x80) = __src;\n          iVar8 = 3;\n          bVar3 = (bool)(uVar9 != 0 | bVar4);\n        }\n        if (0 < (int)uVar9) goto LAB_002127e8;\n        if (!bVar4) goto LAB_002127c6;\nLAB_002126c9:\n        uVar2 = *(undefined4 *)(this + 0x5c);\n        *(undefined4 *)(this + 0x14) = 0;\n        *(undefined4 *)(this + 0x10) = 0;\n        *(undefined4 *)(this + 4) = uVar2;\n        *(undefined4 *)(this + 8) = uVar2;\n        *(undefined4 *)(this + 0xc) = uVar2;\n        *(undefined4 *)(this + 0x18) = 0;\n        this[0x65] = (filebuf)0x0;\n        if (iVar8 == 1) {\n                    /* WARNING: Subroutine does not return */\n          __throw_ios_failure("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }\n    uVar6 = (uint)*pbVar7;\n  }" if (parenthesized_expression "(((byte)this[0x40] & 8) == 0)" ( (binary_expression "((byte)this[0x40] & 8) == 0" (parenthesized_expression "((byte)this[0x40] & 8)" ( (binary_expression "(byte)this[0x40] & 8" (cast_expression "(byte)this[0x40]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "this[0x40]" identifier [ number_literal ])) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0021286d:\n    uVar6 = 0xffffffff;\n  }" { (labeled_statement "LAB_0021286d:\n    uVar6 = 0xffffffff;" statement_identifier : (expression_statement "uVar6 = 0xffffffff;" (assignment_expression "uVar6 = 0xffffffff" identifier = number_literal) ;)) }) (else_clause "else {\n    if (this[0x66] == (filebuf)0x0) {\n      pbVar7 = *(byte **)(this + 8);\n      if (this[0x70] == (filebuf)0x0) goto LAB_002124b2;\nLAB_00212506:\n      this[0x70] = (filebuf)0x0;\n      pbVar7 = (byte *)((uint)(*(byte **)(this + 4) != pbVar7) + *(int *)(this + 0x68));\n      *(byte **)(this + 0xc) = *(byte **)(this + 0x6c);\n      *(byte **)(this + 0x68) = pbVar7;\n      *(undefined4 *)(this + 4) = *(undefined4 *)(this + 0x5c);\n      *(byte **)(this + 8) = pbVar7;\n      if (*(byte **)(this + 0x6c) <= pbVar7) goto LAB_0021252c;\n    }\n    else {\n      iVar12 = (**(code **)(*(int *)this + 0x34))(this,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar7 = *(byte **)(this + 0x5c);\n      *(undefined4 *)(this + 0x14) = 0;\n      *(undefined4 *)(this + 0x10) = 0;\n      *(byte **)(this + 4) = pbVar7;\n      *(byte **)(this + 8) = pbVar7;\n      *(byte **)(this + 0xc) = pbVar7;\n      *(undefined4 *)(this + 0x18) = 0;\n      this[0x66] = (filebuf)0x0;\n      if (this[0x70] != (filebuf)0x0) goto LAB_00212506;\nLAB_002124b2:\n      if (*(byte **)(this + 0xc) <= pbVar7) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < *(uint *)(this + 0x60)) {\n          iVar12 = *(int *)(this + 0x60);\n        }\n        uVar6 = iVar12 - 1;\n        piVar1 = *(int **)(this + 0x74);\n        if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          __throw_bad_cast();\n        }\n        cVar5 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar5 != '\0') {\n          uVar9 = __basic_file<char>::xsgetn\n                            ((__basic_file<char> *)(this + 0x38),*(char **)(this + 4),uVar6);\n          if (uVar9 != 0) {\n            if (0 < (int)uVar9) {\nLAB_002127e8:\n              pbVar7 = *(byte **)(this + 0x5c);\n              *(byte **)(this + 4) = pbVar7;\n              *(byte **)(this + 8) = pbVar7;\n              if (((byte)this[0x40] & 8) == 0) {\n                *(byte **)(this + 0xc) = pbVar7;\n              }\n              else {\n                *(byte **)(this + 0xc) = pbVar7 + uVar9;\n              }\n              *(undefined4 *)(this + 0x14) = 0;\n              *(undefined4 *)(this + 0x10) = 0;\n              *(undefined4 *)(this + 0x18) = 0;\n              this[0x65] = (filebuf)0x1;\n              return (uint)*pbVar7;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          uVar2 = *(undefined4 *)(this + 0x5c);\n          *(undefined4 *)(this + 0x14) = 0;\n          *(undefined4 *)(this + 0x10) = 0;\n          *(undefined4 *)(this + 4) = uVar2;\n          *(undefined4 *)(this + 8) = uVar2;\n          *(undefined4 *)(this + 0xc) = uVar2;\n          *(undefined4 *)(this + 0x18) = 0;\n          this[0x65] = (filebuf)0x0;\n          goto LAB_0021286d;\n        }\n        iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x14))(*(int **)(this + 0x74));\n        if (iVar8 < 1) {\n          iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x20))(*(int **)(this + 0x74));\n          local_3c = iVar12 + -2 + iVar8;\n          uVar9 = uVar6;\n        }\n        else {\n          local_3c = iVar8 * uVar6;\n          uVar9 = local_3c;\n        }\n        __n = *(int *)(this + 0x84) - (int)*(void **)(this + 0x80);\n        iVar12 = uVar9 - __n;\n        if ((int)uVar9 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar8 = *(int *)(this + 0x7c);\n        if ((this[0x65] == (filebuf)0x0) || (*(int *)(this + 0xc) != *(int *)(this + 4))) {\n          if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          __dest = *(char **)(this + 0x78);\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            goto LAB_002128b5;\n          }\n          __dest = *(char **)(this + 0x78);\n        }\n        else if (iVar8 < (int)local_3c) {\n          __dest = (char *)operator_new__(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(__dest,*(void **)(this + 0x80),__n);\nLAB_002128b5:\n          if (*(void **)(this + 0x78) != (void *)0x0) {\n            operator_delete__(*(void **)(this + 0x78));\n          }\n          *(char **)(this + 0x78) = __dest;\n          *(uint *)(this + 0x7c) = local_3c;\n        }\n        else {\n          __dest = *(char **)(this + 0x78);\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(__dest,*(void **)(this + 0x80),__n);\n          __dest = *(char **)(this + 0x78);\n        }\n        pcVar10 = __dest + __n;\n        *(char **)(this + 0x80) = __dest;\n        *(char **)(this + 0x84) = pcVar10;\n        *(undefined4 *)(this + 0x54) = *(undefined4 *)(this + 0x4c);\n        *(undefined4 *)(this + 0x58) = *(undefined4 *)(this + 0x50);\n        if (iVar12 != 0) {\n          iVar8 = 0;\n          goto LAB_00212664;\n        }\n        __dest_00 = *(void **)(this + 4);\n        iVar8 = 0;\n        local_20[0] = __dest_00;\n        if (pcVar10 <= __dest) goto LAB_00212654;\n        bVar4 = false;\nLAB_00212600:\n        local_20[0] = __dest_00;\n        iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x10))\n                          (*(undefined4 *)(this + 0x74),this + 0x4c,__dest,pcVar10,this + 0x80,\n                           __dest_00,uVar6 + (int)__dest_00,local_20);\n        if (iVar8 == 3) {\n          pcVar10 = *(char **)(this + 0x84);\n          __dest_00 = *(void **)(this + 4);\n          goto LAB_00212739;\n        }\n        uVar9 = (int)local_20[0] - *(int *)(this + 4);\n        if (iVar8 == 2) {\n          if (0 < (int)uVar9) goto LAB_002127e8;\n          if (!bVar4) {\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar3 = (bool)(uVar9 != 0 | bVar4);\n        while (!bVar3) {\nLAB_00212654:\n          while( true ) {\n            pcVar10 = *(char **)(this + 0x84);\n            iVar12 = 1;\n            __n = (int)pcVar10 - *(int *)(this + 0x78);\nLAB_00212664:\n            if (*(int *)(this + 0x7c) < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              __throw_ios_failure("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = __basic_file<char>::xsgetn((__basic_file<char> *)(this + 0x38),pcVar10,iVar12);\n            if (iVar12 == 0) {\n              bVar4 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar4 = false;\n            }\n            __dest_00 = *(void **)(this + 4);\n            __dest = *(char **)(this + 0x80);\n            pcVar10 = (char *)(iVar12 + *(int *)(this + 0x84));\n            *(char **)(this + 0x84) = pcVar10;\n            if (__dest < pcVar10) goto LAB_00212600;\n            local_20[0] = __dest_00;\n            if (iVar8 == 3) break;\n            if (bVar4) goto LAB_002126c9;\n          }\nLAB_00212739:\n          __src = *(void **)(this + 0x78);\n          uVar11 = (int)pcVar10 - (int)__src;\n          uVar9 = uVar6;\n          if ((uVar6 < uVar11) || (uVar9 = uVar11, uVar11 != 0)) {\n            memcpy(__dest_00,__src,uVar9);\n            __src = (void *)(uVar9 + *(int *)(this + 0x78));\n          }\n          *(void **)(this + 0x80) = __src;\n          iVar8 = 3;\n          bVar3 = (bool)(uVar9 != 0 | bVar4);\n        }\n        if (0 < (int)uVar9) goto LAB_002127e8;\n        if (!bVar4) goto LAB_002127c6;\nLAB_002126c9:\n        uVar2 = *(undefined4 *)(this + 0x5c);\n        *(undefined4 *)(this + 0x14) = 0;\n        *(undefined4 *)(this + 0x10) = 0;\n        *(undefined4 *)(this + 4) = uVar2;\n        *(undefined4 *)(this + 8) = uVar2;\n        *(undefined4 *)(this + 0xc) = uVar2;\n        *(undefined4 *)(this + 0x18) = 0;\n        this[0x65] = (filebuf)0x0;\n        if (iVar8 == 1) {\n                    /* WARNING: Subroutine does not return */\n          __throw_ios_failure("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }\n    uVar6 = (uint)*pbVar7;\n  }" else (compound_statement "{\n    if (this[0x66] == (filebuf)0x0) {\n      pbVar7 = *(byte **)(this + 8);\n      if (this[0x70] == (filebuf)0x0) goto LAB_002124b2;\nLAB_00212506:\n      this[0x70] = (filebuf)0x0;\n      pbVar7 = (byte *)((uint)(*(byte **)(this + 4) != pbVar7) + *(int *)(this + 0x68));\n      *(byte **)(this + 0xc) = *(byte **)(this + 0x6c);\n      *(byte **)(this + 0x68) = pbVar7;\n      *(undefined4 *)(this + 4) = *(undefined4 *)(this + 0x5c);\n      *(byte **)(this + 8) = pbVar7;\n      if (*(byte **)(this + 0x6c) <= pbVar7) goto LAB_0021252c;\n    }\n    else {\n      iVar12 = (**(code **)(*(int *)this + 0x34))(this,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar7 = *(byte **)(this + 0x5c);\n      *(undefined4 *)(this + 0x14) = 0;\n      *(undefined4 *)(this + 0x10) = 0;\n      *(byte **)(this + 4) = pbVar7;\n      *(byte **)(this + 8) = pbVar7;\n      *(byte **)(this + 0xc) = pbVar7;\n      *(undefined4 *)(this + 0x18) = 0;\n      this[0x66] = (filebuf)0x0;\n      if (this[0x70] != (filebuf)0x0) goto LAB_00212506;\nLAB_002124b2:\n      if (*(byte **)(this + 0xc) <= pbVar7) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < *(uint *)(this + 0x60)) {\n          iVar12 = *(int *)(this + 0x60);\n        }\n        uVar6 = iVar12 - 1;\n        piVar1 = *(int **)(this + 0x74);\n        if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          __throw_bad_cast();\n        }\n        cVar5 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar5 != '\0') {\n          uVar9 = __basic_file<char>::xsgetn\n                            ((__basic_file<char> *)(this + 0x38),*(char **)(this + 4),uVar6);\n          if (uVar9 != 0) {\n            if (0 < (int)uVar9) {\nLAB_002127e8:\n              pbVar7 = *(byte **)(this + 0x5c);\n              *(byte **)(this + 4) = pbVar7;\n              *(byte **)(this + 8) = pbVar7;\n              if (((byte)this[0x40] & 8) == 0) {\n                *(byte **)(this + 0xc) = pbVar7;\n              }\n              else {\n                *(byte **)(this + 0xc) = pbVar7 + uVar9;\n              }\n              *(undefined4 *)(this + 0x14) = 0;\n              *(undefined4 *)(this + 0x10) = 0;\n              *(undefined4 *)(this + 0x18) = 0;\n              this[0x65] = (filebuf)0x1;\n              return (uint)*pbVar7;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          uVar2 = *(undefined4 *)(this + 0x5c);\n          *(undefined4 *)(this + 0x14) = 0;\n          *(undefined4 *)(this + 0x10) = 0;\n          *(undefined4 *)(this + 4) = uVar2;\n          *(undefined4 *)(this + 8) = uVar2;\n          *(undefined4 *)(this + 0xc) = uVar2;\n          *(undefined4 *)(this + 0x18) = 0;\n          this[0x65] = (filebuf)0x0;\n          goto LAB_0021286d;\n        }\n        iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x14))(*(int **)(this + 0x74));\n        if (iVar8 < 1) {\n          iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x20))(*(int **)(this + 0x74));\n          local_3c = iVar12 + -2 + iVar8;\n          uVar9 = uVar6;\n        }\n        else {\n          local_3c = iVar8 * uVar6;\n          uVar9 = local_3c;\n        }\n        __n = *(int *)(this + 0x84) - (int)*(void **)(this + 0x80);\n        iVar12 = uVar9 - __n;\n        if ((int)uVar9 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar8 = *(int *)(this + 0x7c);\n        if ((this[0x65] == (filebuf)0x0) || (*(int *)(this + 0xc) != *(int *)(this + 4))) {\n          if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          __dest = *(char **)(this + 0x78);\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            goto LAB_002128b5;\n          }\n          __dest = *(char **)(this + 0x78);\n        }\n        else if (iVar8 < (int)local_3c) {\n          __dest = (char *)operator_new__(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(__dest,*(void **)(this + 0x80),__n);\nLAB_002128b5:\n          if (*(void **)(this + 0x78) != (void *)0x0) {\n            operator_delete__(*(void **)(this + 0x78));\n          }\n          *(char **)(this + 0x78) = __dest;\n          *(uint *)(this + 0x7c) = local_3c;\n        }\n        else {\n          __dest = *(char **)(this + 0x78);\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(__dest,*(void **)(this + 0x80),__n);\n          __dest = *(char **)(this + 0x78);\n        }\n        pcVar10 = __dest + __n;\n        *(char **)(this + 0x80) = __dest;\n        *(char **)(this + 0x84) = pcVar10;\n        *(undefined4 *)(this + 0x54) = *(undefined4 *)(this + 0x4c);\n        *(undefined4 *)(this + 0x58) = *(undefined4 *)(this + 0x50);\n        if (iVar12 != 0) {\n          iVar8 = 0;\n          goto LAB_00212664;\n        }\n        __dest_00 = *(void **)(this + 4);\n        iVar8 = 0;\n        local_20[0] = __dest_00;\n        if (pcVar10 <= __dest) goto LAB_00212654;\n        bVar4 = false;\nLAB_00212600:\n        local_20[0] = __dest_00;\n        iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x10))\n                          (*(undefined4 *)(this + 0x74),this + 0x4c,__dest,pcVar10,this + 0x80,\n                           __dest_00,uVar6 + (int)__dest_00,local_20);\n        if (iVar8 == 3) {\n          pcVar10 = *(char **)(this + 0x84);\n          __dest_00 = *(void **)(this + 4);\n          goto LAB_00212739;\n        }\n        uVar9 = (int)local_20[0] - *(int *)(this + 4);\n        if (iVar8 == 2) {\n          if (0 < (int)uVar9) goto LAB_002127e8;\n          if (!bVar4) {\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar3 = (bool)(uVar9 != 0 | bVar4);\n        while (!bVar3) {\nLAB_00212654:\n          while( true ) {\n            pcVar10 = *(char **)(this + 0x84);\n            iVar12 = 1;\n            __n = (int)pcVar10 - *(int *)(this + 0x78);\nLAB_00212664:\n            if (*(int *)(this + 0x7c) < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              __throw_ios_failure("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = __basic_file<char>::xsgetn((__basic_file<char> *)(this + 0x38),pcVar10,iVar12);\n            if (iVar12 == 0) {\n              bVar4 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar4 = false;\n            }\n            __dest_00 = *(void **)(this + 4);\n            __dest = *(char **)(this + 0x80);\n            pcVar10 = (char *)(iVar12 + *(int *)(this + 0x84));\n            *(char **)(this + 0x84) = pcVar10;\n            if (__dest < pcVar10) goto LAB_00212600;\n            local_20[0] = __dest_00;\n            if (iVar8 == 3) break;\n            if (bVar4) goto LAB_002126c9;\n          }\nLAB_00212739:\n          __src = *(void **)(this + 0x78);\n          uVar11 = (int)pcVar10 - (int)__src;\n          uVar9 = uVar6;\n          if ((uVar6 < uVar11) || (uVar9 = uVar11, uVar11 != 0)) {\n            memcpy(__dest_00,__src,uVar9);\n            __src = (void *)(uVar9 + *(int *)(this + 0x78));\n          }\n          *(void **)(this + 0x80) = __src;\n          iVar8 = 3;\n          bVar3 = (bool)(uVar9 != 0 | bVar4);\n        }\n        if (0 < (int)uVar9) goto LAB_002127e8;\n        if (!bVar4) goto LAB_002127c6;\nLAB_002126c9:\n        uVar2 = *(undefined4 *)(this + 0x5c);\n        *(undefined4 *)(this + 0x14) = 0;\n        *(undefined4 *)(this + 0x10) = 0;\n        *(undefined4 *)(this + 4) = uVar2;\n        *(undefined4 *)(this + 8) = uVar2;\n        *(undefined4 *)(this + 0xc) = uVar2;\n        *(undefined4 *)(this + 0x18) = 0;\n        this[0x65] = (filebuf)0x0;\n        if (iVar8 == 1) {\n                    /* WARNING: Subroutine does not return */\n          __throw_ios_failure("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }\n    uVar6 = (uint)*pbVar7;\n  }" { (if_statement "if (this[0x66] == (filebuf)0x0) {\n      pbVar7 = *(byte **)(this + 8);\n      if (this[0x70] == (filebuf)0x0) goto LAB_002124b2;\nLAB_00212506:\n      this[0x70] = (filebuf)0x0;\n      pbVar7 = (byte *)((uint)(*(byte **)(this + 4) != pbVar7) + *(int *)(this + 0x68));\n      *(byte **)(this + 0xc) = *(byte **)(this + 0x6c);\n      *(byte **)(this + 0x68) = pbVar7;\n      *(undefined4 *)(this + 4) = *(undefined4 *)(this + 0x5c);\n      *(byte **)(this + 8) = pbVar7;\n      if (*(byte **)(this + 0x6c) <= pbVar7) goto LAB_0021252c;\n    }\n    else {\n      iVar12 = (**(code **)(*(int *)this + 0x34))(this,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar7 = *(byte **)(this + 0x5c);\n      *(undefined4 *)(this + 0x14) = 0;\n      *(undefined4 *)(this + 0x10) = 0;\n      *(byte **)(this + 4) = pbVar7;\n      *(byte **)(this + 8) = pbVar7;\n      *(byte **)(this + 0xc) = pbVar7;\n      *(undefined4 *)(this + 0x18) = 0;\n      this[0x66] = (filebuf)0x0;\n      if (this[0x70] != (filebuf)0x0) goto LAB_00212506;\nLAB_002124b2:\n      if (*(byte **)(this + 0xc) <= pbVar7) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < *(uint *)(this + 0x60)) {\n          iVar12 = *(int *)(this + 0x60);\n        }\n        uVar6 = iVar12 - 1;\n        piVar1 = *(int **)(this + 0x74);\n        if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          __throw_bad_cast();\n        }\n        cVar5 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar5 != '\0') {\n          uVar9 = __basic_file<char>::xsgetn\n                            ((__basic_file<char> *)(this + 0x38),*(char **)(this + 4),uVar6);\n          if (uVar9 != 0) {\n            if (0 < (int)uVar9) {\nLAB_002127e8:\n              pbVar7 = *(byte **)(this + 0x5c);\n              *(byte **)(this + 4) = pbVar7;\n              *(byte **)(this + 8) = pbVar7;\n              if (((byte)this[0x40] & 8) == 0) {\n                *(byte **)(this + 0xc) = pbVar7;\n              }\n              else {\n                *(byte **)(this + 0xc) = pbVar7 + uVar9;\n              }\n              *(undefined4 *)(this + 0x14) = 0;\n              *(undefined4 *)(this + 0x10) = 0;\n              *(undefined4 *)(this + 0x18) = 0;\n              this[0x65] = (filebuf)0x1;\n              return (uint)*pbVar7;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          uVar2 = *(undefined4 *)(this + 0x5c);\n          *(undefined4 *)(this + 0x14) = 0;\n          *(undefined4 *)(this + 0x10) = 0;\n          *(undefined4 *)(this + 4) = uVar2;\n          *(undefined4 *)(this + 8) = uVar2;\n          *(undefined4 *)(this + 0xc) = uVar2;\n          *(undefined4 *)(this + 0x18) = 0;\n          this[0x65] = (filebuf)0x0;\n          goto LAB_0021286d;\n        }\n        iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x14))(*(int **)(this + 0x74));\n        if (iVar8 < 1) {\n          iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x20))(*(int **)(this + 0x74));\n          local_3c = iVar12 + -2 + iVar8;\n          uVar9 = uVar6;\n        }\n        else {\n          local_3c = iVar8 * uVar6;\n          uVar9 = local_3c;\n        }\n        __n = *(int *)(this + 0x84) - (int)*(void **)(this + 0x80);\n        iVar12 = uVar9 - __n;\n        if ((int)uVar9 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar8 = *(int *)(this + 0x7c);\n        if ((this[0x65] == (filebuf)0x0) || (*(int *)(this + 0xc) != *(int *)(this + 4))) {\n          if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          __dest = *(char **)(this + 0x78);\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            goto LAB_002128b5;\n          }\n          __dest = *(char **)(this + 0x78);\n        }\n        else if (iVar8 < (int)local_3c) {\n          __dest = (char *)operator_new__(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(__dest,*(void **)(this + 0x80),__n);\nLAB_002128b5:\n          if (*(void **)(this + 0x78) != (void *)0x0) {\n            operator_delete__(*(void **)(this + 0x78));\n          }\n          *(char **)(this + 0x78) = __dest;\n          *(uint *)(this + 0x7c) = local_3c;\n        }\n        else {\n          __dest = *(char **)(this + 0x78);\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(__dest,*(void **)(this + 0x80),__n);\n          __dest = *(char **)(this + 0x78);\n        }\n        pcVar10 = __dest + __n;\n        *(char **)(this + 0x80) = __dest;\n        *(char **)(this + 0x84) = pcVar10;\n        *(undefined4 *)(this + 0x54) = *(undefined4 *)(this + 0x4c);\n        *(undefined4 *)(this + 0x58) = *(undefined4 *)(this + 0x50);\n        if (iVar12 != 0) {\n          iVar8 = 0;\n          goto LAB_00212664;\n        }\n        __dest_00 = *(void **)(this + 4);\n        iVar8 = 0;\n        local_20[0] = __dest_00;\n        if (pcVar10 <= __dest) goto LAB_00212654;\n        bVar4 = false;\nLAB_00212600:\n        local_20[0] = __dest_00;\n        iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x10))\n                          (*(undefined4 *)(this + 0x74),this + 0x4c,__dest,pcVar10,this + 0x80,\n                           __dest_00,uVar6 + (int)__dest_00,local_20);\n        if (iVar8 == 3) {\n          pcVar10 = *(char **)(this + 0x84);\n          __dest_00 = *(void **)(this + 4);\n          goto LAB_00212739;\n        }\n        uVar9 = (int)local_20[0] - *(int *)(this + 4);\n        if (iVar8 == 2) {\n          if (0 < (int)uVar9) goto LAB_002127e8;\n          if (!bVar4) {\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar3 = (bool)(uVar9 != 0 | bVar4);\n        while (!bVar3) {\nLAB_00212654:\n          while( true ) {\n            pcVar10 = *(char **)(this + 0x84);\n            iVar12 = 1;\n            __n = (int)pcVar10 - *(int *)(this + 0x78);\nLAB_00212664:\n            if (*(int *)(this + 0x7c) < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              __throw_ios_failure("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = __basic_file<char>::xsgetn((__basic_file<char> *)(this + 0x38),pcVar10,iVar12);\n            if (iVar12 == 0) {\n              bVar4 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar4 = false;\n            }\n            __dest_00 = *(void **)(this + 4);\n            __dest = *(char **)(this + 0x80);\n            pcVar10 = (char *)(iVar12 + *(int *)(this + 0x84));\n            *(char **)(this + 0x84) = pcVar10;\n            if (__dest < pcVar10) goto LAB_00212600;\n            local_20[0] = __dest_00;\n            if (iVar8 == 3) break;\n            if (bVar4) goto LAB_002126c9;\n          }\nLAB_00212739:\n          __src = *(void **)(this + 0x78);\n          uVar11 = (int)pcVar10 - (int)__src;\n          uVar9 = uVar6;\n          if ((uVar6 < uVar11) || (uVar9 = uVar11, uVar11 != 0)) {\n            memcpy(__dest_00,__src,uVar9);\n            __src = (void *)(uVar9 + *(int *)(this + 0x78));\n          }\n          *(void **)(this + 0x80) = __src;\n          iVar8 = 3;\n          bVar3 = (bool)(uVar9 != 0 | bVar4);\n        }\n        if (0 < (int)uVar9) goto LAB_002127e8;\n        if (!bVar4) goto LAB_002127c6;\nLAB_002126c9:\n        uVar2 = *(undefined4 *)(this + 0x5c);\n        *(undefined4 *)(this + 0x14) = 0;\n        *(undefined4 *)(this + 0x10) = 0;\n        *(undefined4 *)(this + 4) = uVar2;\n        *(undefined4 *)(this + 8) = uVar2;\n        *(undefined4 *)(this + 0xc) = uVar2;\n        *(undefined4 *)(this + 0x18) = 0;\n        this[0x65] = (filebuf)0x0;\n        if (iVar8 == 1) {\n                    /* WARNING: Subroutine does not return */\n          __throw_ios_failure("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }" if (parenthesized_expression "(this[0x66] == (filebuf)0x0)" ( (binary_expression "this[0x66] == (filebuf)0x0" (subscript_expression "this[0x66]" identifier [ number_literal ]) == (cast_expression "(filebuf)0x0" ( (type_descriptor "filebuf" type_identifier) ) number_literal)) )) (compound_statement "{\n      pbVar7 = *(byte **)(this + 8);\n      if (this[0x70] == (filebuf)0x0) goto LAB_002124b2;\nLAB_00212506:\n      this[0x70] = (filebuf)0x0;\n      pbVar7 = (byte *)((uint)(*(byte **)(this + 4) != pbVar7) + *(int *)(this + 0x68));\n      *(byte **)(this + 0xc) = *(byte **)(this + 0x6c);\n      *(byte **)(this + 0x68) = pbVar7;\n      *(undefined4 *)(this + 4) = *(undefined4 *)(this + 0x5c);\n      *(byte **)(this + 8) = pbVar7;\n      if (*(byte **)(this + 0x6c) <= pbVar7) goto LAB_0021252c;\n    }" { (expression_statement "pbVar7 = *(byte **)(this + 8);" (assignment_expression "pbVar7 = *(byte **)(this + 8)" identifier = (pointer_expression "*(byte **)(this + 8)" * (cast_expression "(byte **)(this + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) ))))) ;) (if_statement "if (this[0x70] == (filebuf)0x0) goto LAB_002124b2;" if (parenthesized_expression "(this[0x70] == (filebuf)0x0)" ( (binary_expression "this[0x70] == (filebuf)0x0" (subscript_expression "this[0x70]" identifier [ number_literal ]) == (cast_expression "(filebuf)0x0" ( (type_descriptor "filebuf" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_002124b2;" goto statement_identifier ;)) (labeled_statement "LAB_00212506:\n      this[0x70] = (filebuf)0x0;" statement_identifier : (expression_statement "this[0x70] = (filebuf)0x0;" (assignment_expression "this[0x70] = (filebuf)0x0" (subscript_expression "this[0x70]" identifier [ number_literal ]) = (cast_expression "(filebuf)0x0" ( (type_descriptor "filebuf" type_identifier) ) number_literal)) ;)) (expression_statement "pbVar7 = (byte *)((uint)(*(byte **)(this + 4) != pbVar7) + *(int *)(this + 0x68));" (assignment_expression "pbVar7 = (byte *)((uint)(*(byte **)(this + 4) != pbVar7) + *(int *)(this + 0x68))" identifier = (cast_expression "(byte *)((uint)(*(byte **)(this + 4) != pbVar7) + *(int *)(this + 0x68))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(*(byte **)(this + 4) != pbVar7) + *(int *)(this + 0x68))" ( (binary_expression "(uint)(*(byte **)(this + 4) != pbVar7) + *(int *)(this + 0x68)" (call_expression "(uint)(*(byte **)(this + 4) != pbVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(byte **)(this + 4) != pbVar7)" ( (binary_expression "*(byte **)(this + 4) != pbVar7" (pointer_expression "*(byte **)(this + 4)" * (cast_expression "(byte **)(this + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) != identifier) ))) + (pointer_expression "*(int *)(this + 0x68)" * (cast_expression "(int *)(this + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x68)" ( (binary_expression "this + 0x68" identifier + number_literal) ))))) )))) ;) (expression_statement "*(byte **)(this + 0xc) = *(byte **)(this + 0x6c);" (assignment_expression "*(byte **)(this + 0xc) = *(byte **)(this + 0x6c)" (pointer_expression "*(byte **)(this + 0xc)" * (cast_expression "(byte **)(this + 0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) )))) = (pointer_expression "*(byte **)(this + 0x6c)" * (cast_expression "(byte **)(this + 0x6c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x6c)" ( (binary_expression "this + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "*(byte **)(this + 0x68) = pbVar7;" (assignment_expression "*(byte **)(this + 0x68) = pbVar7" (pointer_expression "*(byte **)(this + 0x68)" * (cast_expression "(byte **)(this + 0x68)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x68)" ( (binary_expression "this + 0x68" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(this + 4) = *(undefined4 *)(this + 0x5c);" (assignment_expression "*(undefined4 *)(this + 4) = *(undefined4 *)(this + 0x5c)" (pointer_expression "*(undefined4 *)(this + 4)" * (cast_expression "(undefined4 *)(this + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(this + 0x5c)" * (cast_expression "(undefined4 *)(this + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x5c)" ( (binary_expression "this + 0x5c" identifier + number_literal) ))))) ;) (expression_statement "*(byte **)(this + 8) = pbVar7;" (assignment_expression "*(byte **)(this + 8) = pbVar7" (pointer_expression "*(byte **)(this + 8)" * (cast_expression "(byte **)(this + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(byte **)(this + 0x6c) <= pbVar7) goto LAB_0021252c;" if (parenthesized_expression "(*(byte **)(this + 0x6c) <= pbVar7)" ( (binary_expression "*(byte **)(this + 0x6c) <= pbVar7" (pointer_expression "*(byte **)(this + 0x6c)" * (cast_expression "(byte **)(this + 0x6c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x6c)" ( (binary_expression "this + 0x6c" identifier + number_literal) )))) <= identifier) )) (goto_statement "goto LAB_0021252c;" goto statement_identifier ;)) }) (else_clause "else {\n      iVar12 = (**(code **)(*(int *)this + 0x34))(this,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar7 = *(byte **)(this + 0x5c);\n      *(undefined4 *)(this + 0x14) = 0;\n      *(undefined4 *)(this + 0x10) = 0;\n      *(byte **)(this + 4) = pbVar7;\n      *(byte **)(this + 8) = pbVar7;\n      *(byte **)(this + 0xc) = pbVar7;\n      *(undefined4 *)(this + 0x18) = 0;\n      this[0x66] = (filebuf)0x0;\n      if (this[0x70] != (filebuf)0x0) goto LAB_00212506;\nLAB_002124b2:\n      if (*(byte **)(this + 0xc) <= pbVar7) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < *(uint *)(this + 0x60)) {\n          iVar12 = *(int *)(this + 0x60);\n        }\n        uVar6 = iVar12 - 1;\n        piVar1 = *(int **)(this + 0x74);\n        if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          __throw_bad_cast();\n        }\n        cVar5 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar5 != '\0') {\n          uVar9 = __basic_file<char>::xsgetn\n                            ((__basic_file<char> *)(this + 0x38),*(char **)(this + 4),uVar6);\n          if (uVar9 != 0) {\n            if (0 < (int)uVar9) {\nLAB_002127e8:\n              pbVar7 = *(byte **)(this + 0x5c);\n              *(byte **)(this + 4) = pbVar7;\n              *(byte **)(this + 8) = pbVar7;\n              if (((byte)this[0x40] & 8) == 0) {\n                *(byte **)(this + 0xc) = pbVar7;\n              }\n              else {\n                *(byte **)(this + 0xc) = pbVar7 + uVar9;\n              }\n              *(undefined4 *)(this + 0x14) = 0;\n              *(undefined4 *)(this + 0x10) = 0;\n              *(undefined4 *)(this + 0x18) = 0;\n              this[0x65] = (filebuf)0x1;\n              return (uint)*pbVar7;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          uVar2 = *(undefined4 *)(this + 0x5c);\n          *(undefined4 *)(this + 0x14) = 0;\n          *(undefined4 *)(this + 0x10) = 0;\n          *(undefined4 *)(this + 4) = uVar2;\n          *(undefined4 *)(this + 8) = uVar2;\n          *(undefined4 *)(this + 0xc) = uVar2;\n          *(undefined4 *)(this + 0x18) = 0;\n          this[0x65] = (filebuf)0x0;\n          goto LAB_0021286d;\n        }\n        iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x14))(*(int **)(this + 0x74));\n        if (iVar8 < 1) {\n          iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x20))(*(int **)(this + 0x74));\n          local_3c = iVar12 + -2 + iVar8;\n          uVar9 = uVar6;\n        }\n        else {\n          local_3c = iVar8 * uVar6;\n          uVar9 = local_3c;\n        }\n        __n = *(int *)(this + 0x84) - (int)*(void **)(this + 0x80);\n        iVar12 = uVar9 - __n;\n        if ((int)uVar9 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar8 = *(int *)(this + 0x7c);\n        if ((this[0x65] == (filebuf)0x0) || (*(int *)(this + 0xc) != *(int *)(this + 4))) {\n          if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          __dest = *(char **)(this + 0x78);\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            goto LAB_002128b5;\n          }\n          __dest = *(char **)(this + 0x78);\n        }\n        else if (iVar8 < (int)local_3c) {\n          __dest = (char *)operator_new__(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(__dest,*(void **)(this + 0x80),__n);\nLAB_002128b5:\n          if (*(void **)(this + 0x78) != (void *)0x0) {\n            operator_delete__(*(void **)(this + 0x78));\n          }\n          *(char **)(this + 0x78) = __dest;\n          *(uint *)(this + 0x7c) = local_3c;\n        }\n        else {\n          __dest = *(char **)(this + 0x78);\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(__dest,*(void **)(this + 0x80),__n);\n          __dest = *(char **)(this + 0x78);\n        }\n        pcVar10 = __dest + __n;\n        *(char **)(this + 0x80) = __dest;\n        *(char **)(this + 0x84) = pcVar10;\n        *(undefined4 *)(this + 0x54) = *(undefined4 *)(this + 0x4c);\n        *(undefined4 *)(this + 0x58) = *(undefined4 *)(this + 0x50);\n        if (iVar12 != 0) {\n          iVar8 = 0;\n          goto LAB_00212664;\n        }\n        __dest_00 = *(void **)(this + 4);\n        iVar8 = 0;\n        local_20[0] = __dest_00;\n        if (pcVar10 <= __dest) goto LAB_00212654;\n        bVar4 = false;\nLAB_00212600:\n        local_20[0] = __dest_00;\n        iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x10))\n                          (*(undefined4 *)(this + 0x74),this + 0x4c,__dest,pcVar10,this + 0x80,\n                           __dest_00,uVar6 + (int)__dest_00,local_20);\n        if (iVar8 == 3) {\n          pcVar10 = *(char **)(this + 0x84);\n          __dest_00 = *(void **)(this + 4);\n          goto LAB_00212739;\n        }\n        uVar9 = (int)local_20[0] - *(int *)(this + 4);\n        if (iVar8 == 2) {\n          if (0 < (int)uVar9) goto LAB_002127e8;\n          if (!bVar4) {\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar3 = (bool)(uVar9 != 0 | bVar4);\n        while (!bVar3) {\nLAB_00212654:\n          while( true ) {\n            pcVar10 = *(char **)(this + 0x84);\n            iVar12 = 1;\n            __n = (int)pcVar10 - *(int *)(this + 0x78);\nLAB_00212664:\n            if (*(int *)(this + 0x7c) < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              __throw_ios_failure("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = __basic_file<char>::xsgetn((__basic_file<char> *)(this + 0x38),pcVar10,iVar12);\n            if (iVar12 == 0) {\n              bVar4 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar4 = false;\n            }\n            __dest_00 = *(void **)(this + 4);\n            __dest = *(char **)(this + 0x80);\n            pcVar10 = (char *)(iVar12 + *(int *)(this + 0x84));\n            *(char **)(this + 0x84) = pcVar10;\n            if (__dest < pcVar10) goto LAB_00212600;\n            local_20[0] = __dest_00;\n            if (iVar8 == 3) break;\n            if (bVar4) goto LAB_002126c9;\n          }\nLAB_00212739:\n          __src = *(void **)(this + 0x78);\n          uVar11 = (int)pcVar10 - (int)__src;\n          uVar9 = uVar6;\n          if ((uVar6 < uVar11) || (uVar9 = uVar11, uVar11 != 0)) {\n            memcpy(__dest_00,__src,uVar9);\n            __src = (void *)(uVar9 + *(int *)(this + 0x78));\n          }\n          *(void **)(this + 0x80) = __src;\n          iVar8 = 3;\n          bVar3 = (bool)(uVar9 != 0 | bVar4);\n        }\n        if (0 < (int)uVar9) goto LAB_002127e8;\n        if (!bVar4) goto LAB_002127c6;\nLAB_002126c9:\n        uVar2 = *(undefined4 *)(this + 0x5c);\n        *(undefined4 *)(this + 0x14) = 0;\n        *(undefined4 *)(this + 0x10) = 0;\n        *(undefined4 *)(this + 4) = uVar2;\n        *(undefined4 *)(this + 8) = uVar2;\n        *(undefined4 *)(this + 0xc) = uVar2;\n        *(undefined4 *)(this + 0x18) = 0;\n        this[0x65] = (filebuf)0x0;\n        if (iVar8 == 1) {\n                    /* WARNING: Subroutine does not return */\n          __throw_ios_failure("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }" else (compound_statement "{\n      iVar12 = (**(code **)(*(int *)this + 0x34))(this,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar7 = *(byte **)(this + 0x5c);\n      *(undefined4 *)(this + 0x14) = 0;\n      *(undefined4 *)(this + 0x10) = 0;\n      *(byte **)(this + 4) = pbVar7;\n      *(byte **)(this + 8) = pbVar7;\n      *(byte **)(this + 0xc) = pbVar7;\n      *(undefined4 *)(this + 0x18) = 0;\n      this[0x66] = (filebuf)0x0;\n      if (this[0x70] != (filebuf)0x0) goto LAB_00212506;\nLAB_002124b2:\n      if (*(byte **)(this + 0xc) <= pbVar7) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < *(uint *)(this + 0x60)) {\n          iVar12 = *(int *)(this + 0x60);\n        }\n        uVar6 = iVar12 - 1;\n        piVar1 = *(int **)(this + 0x74);\n        if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          __throw_bad_cast();\n        }\n        cVar5 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar5 != '\0') {\n          uVar9 = __basic_file<char>::xsgetn\n                            ((__basic_file<char> *)(this + 0x38),*(char **)(this + 4),uVar6);\n          if (uVar9 != 0) {\n            if (0 < (int)uVar9) {\nLAB_002127e8:\n              pbVar7 = *(byte **)(this + 0x5c);\n              *(byte **)(this + 4) = pbVar7;\n              *(byte **)(this + 8) = pbVar7;\n              if (((byte)this[0x40] & 8) == 0) {\n                *(byte **)(this + 0xc) = pbVar7;\n              }\n              else {\n                *(byte **)(this + 0xc) = pbVar7 + uVar9;\n              }\n              *(undefined4 *)(this + 0x14) = 0;\n              *(undefined4 *)(this + 0x10) = 0;\n              *(undefined4 *)(this + 0x18) = 0;\n              this[0x65] = (filebuf)0x1;\n              return (uint)*pbVar7;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          uVar2 = *(undefined4 *)(this + 0x5c);\n          *(undefined4 *)(this + 0x14) = 0;\n          *(undefined4 *)(this + 0x10) = 0;\n          *(undefined4 *)(this + 4) = uVar2;\n          *(undefined4 *)(this + 8) = uVar2;\n          *(undefined4 *)(this + 0xc) = uVar2;\n          *(undefined4 *)(this + 0x18) = 0;\n          this[0x65] = (filebuf)0x0;\n          goto LAB_0021286d;\n        }\n        iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x14))(*(int **)(this + 0x74));\n        if (iVar8 < 1) {\n          iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x20))(*(int **)(this + 0x74));\n          local_3c = iVar12 + -2 + iVar8;\n          uVar9 = uVar6;\n        }\n        else {\n          local_3c = iVar8 * uVar6;\n          uVar9 = local_3c;\n        }\n        __n = *(int *)(this + 0x84) - (int)*(void **)(this + 0x80);\n        iVar12 = uVar9 - __n;\n        if ((int)uVar9 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar8 = *(int *)(this + 0x7c);\n        if ((this[0x65] == (filebuf)0x0) || (*(int *)(this + 0xc) != *(int *)(this + 4))) {\n          if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          __dest = *(char **)(this + 0x78);\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            goto LAB_002128b5;\n          }\n          __dest = *(char **)(this + 0x78);\n        }\n        else if (iVar8 < (int)local_3c) {\n          __dest = (char *)operator_new__(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(__dest,*(void **)(this + 0x80),__n);\nLAB_002128b5:\n          if (*(void **)(this + 0x78) != (void *)0x0) {\n            operator_delete__(*(void **)(this + 0x78));\n          }\n          *(char **)(this + 0x78) = __dest;\n          *(uint *)(this + 0x7c) = local_3c;\n        }\n        else {\n          __dest = *(char **)(this + 0x78);\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(__dest,*(void **)(this + 0x80),__n);\n          __dest = *(char **)(this + 0x78);\n        }\n        pcVar10 = __dest + __n;\n        *(char **)(this + 0x80) = __dest;\n        *(char **)(this + 0x84) = pcVar10;\n        *(undefined4 *)(this + 0x54) = *(undefined4 *)(this + 0x4c);\n        *(undefined4 *)(this + 0x58) = *(undefined4 *)(this + 0x50);\n        if (iVar12 != 0) {\n          iVar8 = 0;\n          goto LAB_00212664;\n        }\n        __dest_00 = *(void **)(this + 4);\n        iVar8 = 0;\n        local_20[0] = __dest_00;\n        if (pcVar10 <= __dest) goto LAB_00212654;\n        bVar4 = false;\nLAB_00212600:\n        local_20[0] = __dest_00;\n        iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x10))\n                          (*(undefined4 *)(this + 0x74),this + 0x4c,__dest,pcVar10,this + 0x80,\n                           __dest_00,uVar6 + (int)__dest_00,local_20);\n        if (iVar8 == 3) {\n          pcVar10 = *(char **)(this + 0x84);\n          __dest_00 = *(void **)(this + 4);\n          goto LAB_00212739;\n        }\n        uVar9 = (int)local_20[0] - *(int *)(this + 4);\n        if (iVar8 == 2) {\n          if (0 < (int)uVar9) goto LAB_002127e8;\n          if (!bVar4) {\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar3 = (bool)(uVar9 != 0 | bVar4);\n        while (!bVar3) {\nLAB_00212654:\n          while( true ) {\n            pcVar10 = *(char **)(this + 0x84);\n            iVar12 = 1;\n            __n = (int)pcVar10 - *(int *)(this + 0x78);\nLAB_00212664:\n            if (*(int *)(this + 0x7c) < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              __throw_ios_failure("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = __basic_file<char>::xsgetn((__basic_file<char> *)(this + 0x38),pcVar10,iVar12);\n            if (iVar12 == 0) {\n              bVar4 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar4 = false;\n            }\n            __dest_00 = *(void **)(this + 4);\n            __dest = *(char **)(this + 0x80);\n            pcVar10 = (char *)(iVar12 + *(int *)(this + 0x84));\n            *(char **)(this + 0x84) = pcVar10;\n            if (__dest < pcVar10) goto LAB_00212600;\n            local_20[0] = __dest_00;\n            if (iVar8 == 3) break;\n            if (bVar4) goto LAB_002126c9;\n          }\nLAB_00212739:\n          __src = *(void **)(this + 0x78);\n          uVar11 = (int)pcVar10 - (int)__src;\n          uVar9 = uVar6;\n          if ((uVar6 < uVar11) || (uVar9 = uVar11, uVar11 != 0)) {\n            memcpy(__dest_00,__src,uVar9);\n            __src = (void *)(uVar9 + *(int *)(this + 0x78));\n          }\n          *(void **)(this + 0x80) = __src;\n          iVar8 = 3;\n          bVar3 = (bool)(uVar9 != 0 | bVar4);\n        }\n        if (0 < (int)uVar9) goto LAB_002127e8;\n        if (!bVar4) goto LAB_002127c6;\nLAB_002126c9:\n        uVar2 = *(undefined4 *)(this + 0x5c);\n        *(undefined4 *)(this + 0x14) = 0;\n        *(undefined4 *)(this + 0x10) = 0;\n        *(undefined4 *)(this + 4) = uVar2;\n        *(undefined4 *)(this + 8) = uVar2;\n        *(undefined4 *)(this + 0xc) = uVar2;\n        *(undefined4 *)(this + 0x18) = 0;\n        this[0x65] = (filebuf)0x0;\n        if (iVar8 == 1) {\n                    /* WARNING: Subroutine does not return */\n          __throw_ios_failure("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }" { (expression_statement "iVar12 = (**(code **)(*(int *)this + 0x34))(this,0xffffffff);" (assignment_expression "iVar12 = (**(code **)(*(int *)this + 0x34))(this,0xffffffff)" identifier = (call_expression "(**(code **)(*(int *)this + 0x34))(this,0xffffffff)" (parenthesized_expression "(**(code **)(*(int *)this + 0x34))" ( (pointer_expression "**(code **)(*(int *)this + 0x34)" * (pointer_expression "*(code **)(*(int *)this + 0x34)" * (cast_expression "(code **)(*(int *)this + 0x34)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)this + 0x34)" ( (binary_expression "*(int *)this + 0x34" (pointer_expression "*(int *)this" * (cast_expression "(int *)this" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(this,0xffffffff)" ( identifier , number_literal )))) ;) (if_statement "if (iVar12 == -1) {\n        return 0xffffffff;\n      }" if (parenthesized_expression "(iVar12 == -1)" ( (binary_expression "iVar12 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0xffffffff;\n      }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (expression_statement "pbVar7 = *(byte **)(this + 0x5c);" (assignment_expression "pbVar7 = *(byte **)(this + 0x5c)" identifier = (pointer_expression "*(byte **)(this + 0x5c)" * (cast_expression "(byte **)(this + 0x5c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x5c)" ( (binary_expression "this + 0x5c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(this + 0x14) = 0;" (assignment_expression "*(undefined4 *)(this + 0x14) = 0" (pointer_expression "*(undefined4 *)(this + 0x14)" * (cast_expression "(undefined4 *)(this + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x14)" ( (binary_expression "this + 0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x10) = 0;" (assignment_expression "*(undefined4 *)(this + 0x10) = 0" (pointer_expression "*(undefined4 *)(this + 0x10)" * (cast_expression "(undefined4 *)(this + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(byte **)(this + 4) = pbVar7;" (assignment_expression "*(byte **)(this + 4) = pbVar7" (pointer_expression "*(byte **)(this + 4)" * (cast_expression "(byte **)(this + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(this + 8) = pbVar7;" (assignment_expression "*(byte **)(this + 8) = pbVar7" (pointer_expression "*(byte **)(this + 8)" * (cast_expression "(byte **)(this + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(this + 0xc) = pbVar7;" (assignment_expression "*(byte **)(this + 0xc) = pbVar7" (pointer_expression "*(byte **)(this + 0xc)" * (cast_expression "(byte **)(this + 0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(this + 0x18) = 0;" (assignment_expression "*(undefined4 *)(this + 0x18) = 0" (pointer_expression "*(undefined4 *)(this + 0x18)" * (cast_expression "(undefined4 *)(this + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x18)" ( (binary_expression "this + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "this[0x66] = (filebuf)0x0;" (assignment_expression "this[0x66] = (filebuf)0x0" (subscript_expression "this[0x66]" identifier [ number_literal ]) = (cast_expression "(filebuf)0x0" ( (type_descriptor "filebuf" type_identifier) ) number_literal)) ;) (if_statement "if (this[0x70] != (filebuf)0x0) goto LAB_00212506;" if (parenthesized_expression "(this[0x70] != (filebuf)0x0)" ( (binary_expression "this[0x70] != (filebuf)0x0" (subscript_expression "this[0x70]" identifier [ number_literal ]) != (cast_expression "(filebuf)0x0" ( (type_descriptor "filebuf" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_00212506;" goto statement_identifier ;)) (labeled_statement "LAB_002124b2:\n      if (*(byte **)(this + 0xc) <= pbVar7) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < *(uint *)(this + 0x60)) {\n          iVar12 = *(int *)(this + 0x60);\n        }\n        uVar6 = iVar12 - 1;\n        piVar1 = *(int **)(this + 0x74);\n        if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          __throw_bad_cast();\n        }\n        cVar5 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar5 != '\0') {\n          uVar9 = __basic_file<char>::xsgetn\n                            ((__basic_file<char> *)(this + 0x38),*(char **)(this + 4),uVar6);\n          if (uVar9 != 0) {\n            if (0 < (int)uVar9) {\nLAB_002127e8:\n              pbVar7 = *(byte **)(this + 0x5c);\n              *(byte **)(this + 4) = pbVar7;\n              *(byte **)(this + 8) = pbVar7;\n              if (((byte)this[0x40] & 8) == 0) {\n                *(byte **)(this + 0xc) = pbVar7;\n              }\n              else {\n                *(byte **)(this + 0xc) = pbVar7 + uVar9;\n              }\n              *(undefined4 *)(this + 0x14) = 0;\n              *(undefined4 *)(this + 0x10) = 0;\n              *(undefined4 *)(this + 0x18) = 0;\n              this[0x65] = (filebuf)0x1;\n              return (uint)*pbVar7;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          uVar2 = *(undefined4 *)(this + 0x5c);\n          *(undefined4 *)(this + 0x14) = 0;\n          *(undefined4 *)(this + 0x10) = 0;\n          *(undefined4 *)(this + 4) = uVar2;\n          *(undefined4 *)(this + 8) = uVar2;\n          *(undefined4 *)(this + 0xc) = uVar2;\n          *(undefined4 *)(this + 0x18) = 0;\n          this[0x65] = (filebuf)0x0;\n          goto LAB_0021286d;\n        }\n        iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x14))(*(int **)(this + 0x74));\n        if (iVar8 < 1) {\n          iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x20))(*(int **)(this + 0x74));\n          local_3c = iVar12 + -2 + iVar8;\n          uVar9 = uVar6;\n        }\n        else {\n          local_3c = iVar8 * uVar6;\n          uVar9 = local_3c;\n        }\n        __n = *(int *)(this + 0x84) - (int)*(void **)(this + 0x80);\n        iVar12 = uVar9 - __n;\n        if ((int)uVar9 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar8 = *(int *)(this + 0x7c);\n        if ((this[0x65] == (filebuf)0x0) || (*(int *)(this + 0xc) != *(int *)(this + 4))) {\n          if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          __dest = *(char **)(this + 0x78);\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            goto LAB_002128b5;\n          }\n          __dest = *(char **)(this + 0x78);\n        }\n        else if (iVar8 < (int)local_3c) {\n          __dest = (char *)operator_new__(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(__dest,*(void **)(this + 0x80),__n);\nLAB_002128b5:\n          if (*(void **)(this + 0x78) != (void *)0x0) {\n            operator_delete__(*(void **)(this + 0x78));\n          }\n          *(char **)(this + 0x78) = __dest;\n          *(uint *)(this + 0x7c) = local_3c;\n        }\n        else {\n          __dest = *(char **)(this + 0x78);\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(__dest,*(void **)(this + 0x80),__n);\n          __dest = *(char **)(this + 0x78);\n        }\n        pcVar10 = __dest + __n;\n        *(char **)(this + 0x80) = __dest;\n        *(char **)(this + 0x84) = pcVar10;\n        *(undefined4 *)(this + 0x54) = *(undefined4 *)(this + 0x4c);\n        *(undefined4 *)(this + 0x58) = *(undefined4 *)(this + 0x50);\n        if (iVar12 != 0) {\n          iVar8 = 0;\n          goto LAB_00212664;\n        }\n        __dest_00 = *(void **)(this + 4);\n        iVar8 = 0;\n        local_20[0] = __dest_00;\n        if (pcVar10 <= __dest) goto LAB_00212654;\n        bVar4 = false;\nLAB_00212600:\n        local_20[0] = __dest_00;\n        iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x10))\n                          (*(undefined4 *)(this + 0x74),this + 0x4c,__dest,pcVar10,this + 0x80,\n                           __dest_00,uVar6 + (int)__dest_00,local_20);\n        if (iVar8 == 3) {\n          pcVar10 = *(char **)(this + 0x84);\n          __dest_00 = *(void **)(this + 4);\n          goto LAB_00212739;\n        }\n        uVar9 = (int)local_20[0] - *(int *)(this + 4);\n        if (iVar8 == 2) {\n          if (0 < (int)uVar9) goto LAB_002127e8;\n          if (!bVar4) {\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar3 = (bool)(uVar9 != 0 | bVar4);\n        while (!bVar3) {\nLAB_00212654:\n          while( true ) {\n            pcVar10 = *(char **)(this + 0x84);\n            iVar12 = 1;\n            __n = (int)pcVar10 - *(int *)(this + 0x78);\nLAB_00212664:\n            if (*(int *)(this + 0x7c) < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              __throw_ios_failure("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = __basic_file<char>::xsgetn((__basic_file<char> *)(this + 0x38),pcVar10,iVar12);\n            if (iVar12 == 0) {\n              bVar4 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar4 = false;\n            }\n            __dest_00 = *(void **)(this + 4);\n            __dest = *(char **)(this + 0x80);\n            pcVar10 = (char *)(iVar12 + *(int *)(this + 0x84));\n            *(char **)(this + 0x84) = pcVar10;\n            if (__dest < pcVar10) goto LAB_00212600;\n            local_20[0] = __dest_00;\n            if (iVar8 == 3) break;\n            if (bVar4) goto LAB_002126c9;\n          }\nLAB_00212739:\n          __src = *(void **)(this + 0x78);\n          uVar11 = (int)pcVar10 - (int)__src;\n          uVar9 = uVar6;\n          if ((uVar6 < uVar11) || (uVar9 = uVar11, uVar11 != 0)) {\n            memcpy(__dest_00,__src,uVar9);\n            __src = (void *)(uVar9 + *(int *)(this + 0x78));\n          }\n          *(void **)(this + 0x80) = __src;\n          iVar8 = 3;\n          bVar3 = (bool)(uVar9 != 0 | bVar4);\n        }\n        if (0 < (int)uVar9) goto LAB_002127e8;\n        if (!bVar4) goto LAB_002127c6;\nLAB_002126c9:\n        uVar2 = *(undefined4 *)(this + 0x5c);\n        *(undefined4 *)(this + 0x14) = 0;\n        *(undefined4 *)(this + 0x10) = 0;\n        *(undefined4 *)(this + 4) = uVar2;\n        *(undefined4 *)(this + 8) = uVar2;\n        *(undefined4 *)(this + 0xc) = uVar2;\n        *(undefined4 *)(this + 0x18) = 0;\n        this[0x65] = (filebuf)0x0;\n        if (iVar8 == 1) {\n                    /* WARNING: Subroutine does not return */\n          __throw_ios_failure("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }" statement_identifier : (if_statement "if (*(byte **)(this + 0xc) <= pbVar7) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < *(uint *)(this + 0x60)) {\n          iVar12 = *(int *)(this + 0x60);\n        }\n        uVar6 = iVar12 - 1;\n        piVar1 = *(int **)(this + 0x74);\n        if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          __throw_bad_cast();\n        }\n        cVar5 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar5 != '\0') {\n          uVar9 = __basic_file<char>::xsgetn\n                            ((__basic_file<char> *)(this + 0x38),*(char **)(this + 4),uVar6);\n          if (uVar9 != 0) {\n            if (0 < (int)uVar9) {\nLAB_002127e8:\n              pbVar7 = *(byte **)(this + 0x5c);\n              *(byte **)(this + 4) = pbVar7;\n              *(byte **)(this + 8) = pbVar7;\n              if (((byte)this[0x40] & 8) == 0) {\n                *(byte **)(this + 0xc) = pbVar7;\n              }\n              else {\n                *(byte **)(this + 0xc) = pbVar7 + uVar9;\n              }\n              *(undefined4 *)(this + 0x14) = 0;\n              *(undefined4 *)(this + 0x10) = 0;\n              *(undefined4 *)(this + 0x18) = 0;\n              this[0x65] = (filebuf)0x1;\n              return (uint)*pbVar7;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          uVar2 = *(undefined4 *)(this + 0x5c);\n          *(undefined4 *)(this + 0x14) = 0;\n          *(undefined4 *)(this + 0x10) = 0;\n          *(undefined4 *)(this + 4) = uVar2;\n          *(undefined4 *)(this + 8) = uVar2;\n          *(undefined4 *)(this + 0xc) = uVar2;\n          *(undefined4 *)(this + 0x18) = 0;\n          this[0x65] = (filebuf)0x0;\n          goto LAB_0021286d;\n        }\n        iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x14))(*(int **)(this + 0x74));\n        if (iVar8 < 1) {\n          iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x20))(*(int **)(this + 0x74));\n          local_3c = iVar12 + -2 + iVar8;\n          uVar9 = uVar6;\n        }\n        else {\n          local_3c = iVar8 * uVar6;\n          uVar9 = local_3c;\n        }\n        __n = *(int *)(this + 0x84) - (int)*(void **)(this + 0x80);\n        iVar12 = uVar9 - __n;\n        if ((int)uVar9 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar8 = *(int *)(this + 0x7c);\n        if ((this[0x65] == (filebuf)0x0) || (*(int *)(this + 0xc) != *(int *)(this + 4))) {\n          if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          __dest = *(char **)(this + 0x78);\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            goto LAB_002128b5;\n          }\n          __dest = *(char **)(this + 0x78);\n        }\n        else if (iVar8 < (int)local_3c) {\n          __dest = (char *)operator_new__(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(__dest,*(void **)(this + 0x80),__n);\nLAB_002128b5:\n          if (*(void **)(this + 0x78) != (void *)0x0) {\n            operator_delete__(*(void **)(this + 0x78));\n          }\n          *(char **)(this + 0x78) = __dest;\n          *(uint *)(this + 0x7c) = local_3c;\n        }\n        else {\n          __dest = *(char **)(this + 0x78);\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(__dest,*(void **)(this + 0x80),__n);\n          __dest = *(char **)(this + 0x78);\n        }\n        pcVar10 = __dest + __n;\n        *(char **)(this + 0x80) = __dest;\n        *(char **)(this + 0x84) = pcVar10;\n        *(undefined4 *)(this + 0x54) = *(undefined4 *)(this + 0x4c);\n        *(undefined4 *)(this + 0x58) = *(undefined4 *)(this + 0x50);\n        if (iVar12 != 0) {\n          iVar8 = 0;\n          goto LAB_00212664;\n        }\n        __dest_00 = *(void **)(this + 4);\n        iVar8 = 0;\n        local_20[0] = __dest_00;\n        if (pcVar10 <= __dest) goto LAB_00212654;\n        bVar4 = false;\nLAB_00212600:\n        local_20[0] = __dest_00;\n        iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x10))\n                          (*(undefined4 *)(this + 0x74),this + 0x4c,__dest,pcVar10,this + 0x80,\n                           __dest_00,uVar6 + (int)__dest_00,local_20);\n        if (iVar8 == 3) {\n          pcVar10 = *(char **)(this + 0x84);\n          __dest_00 = *(void **)(this + 4);\n          goto LAB_00212739;\n        }\n        uVar9 = (int)local_20[0] - *(int *)(this + 4);\n        if (iVar8 == 2) {\n          if (0 < (int)uVar9) goto LAB_002127e8;\n          if (!bVar4) {\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar3 = (bool)(uVar9 != 0 | bVar4);\n        while (!bVar3) {\nLAB_00212654:\n          while( true ) {\n            pcVar10 = *(char **)(this + 0x84);\n            iVar12 = 1;\n            __n = (int)pcVar10 - *(int *)(this + 0x78);\nLAB_00212664:\n            if (*(int *)(this + 0x7c) < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              __throw_ios_failure("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = __basic_file<char>::xsgetn((__basic_file<char> *)(this + 0x38),pcVar10,iVar12);\n            if (iVar12 == 0) {\n              bVar4 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar4 = false;\n            }\n            __dest_00 = *(void **)(this + 4);\n            __dest = *(char **)(this + 0x80);\n            pcVar10 = (char *)(iVar12 + *(int *)(this + 0x84));\n            *(char **)(this + 0x84) = pcVar10;\n            if (__dest < pcVar10) goto LAB_00212600;\n            local_20[0] = __dest_00;\n            if (iVar8 == 3) break;\n            if (bVar4) goto LAB_002126c9;\n          }\nLAB_00212739:\n          __src = *(void **)(this + 0x78);\n          uVar11 = (int)pcVar10 - (int)__src;\n          uVar9 = uVar6;\n          if ((uVar6 < uVar11) || (uVar9 = uVar11, uVar11 != 0)) {\n            memcpy(__dest_00,__src,uVar9);\n            __src = (void *)(uVar9 + *(int *)(this + 0x78));\n          }\n          *(void **)(this + 0x80) = __src;\n          iVar8 = 3;\n          bVar3 = (bool)(uVar9 != 0 | bVar4);\n        }\n        if (0 < (int)uVar9) goto LAB_002127e8;\n        if (!bVar4) goto LAB_002127c6;\nLAB_002126c9:\n        uVar2 = *(undefined4 *)(this + 0x5c);\n        *(undefined4 *)(this + 0x14) = 0;\n        *(undefined4 *)(this + 0x10) = 0;\n        *(undefined4 *)(this + 4) = uVar2;\n        *(undefined4 *)(this + 8) = uVar2;\n        *(undefined4 *)(this + 0xc) = uVar2;\n        *(undefined4 *)(this + 0x18) = 0;\n        this[0x65] = (filebuf)0x0;\n        if (iVar8 == 1) {\n                    /* WARNING: Subroutine does not return */\n          __throw_ios_failure("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }" if (parenthesized_expression "(*(byte **)(this + 0xc) <= pbVar7)" ( (binary_expression "*(byte **)(this + 0xc) <= pbVar7" (pointer_expression "*(byte **)(this + 0xc)" * (cast_expression "(byte **)(this + 0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < *(uint *)(this + 0x60)) {\n          iVar12 = *(int *)(this + 0x60);\n        }\n        uVar6 = iVar12 - 1;\n        piVar1 = *(int **)(this + 0x74);\n        if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          __throw_bad_cast();\n        }\n        cVar5 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar5 != '\0') {\n          uVar9 = __basic_file<char>::xsgetn\n                            ((__basic_file<char> *)(this + 0x38),*(char **)(this + 4),uVar6);\n          if (uVar9 != 0) {\n            if (0 < (int)uVar9) {\nLAB_002127e8:\n              pbVar7 = *(byte **)(this + 0x5c);\n              *(byte **)(this + 4) = pbVar7;\n              *(byte **)(this + 8) = pbVar7;\n              if (((byte)this[0x40] & 8) == 0) {\n                *(byte **)(this + 0xc) = pbVar7;\n              }\n              else {\n                *(byte **)(this + 0xc) = pbVar7 + uVar9;\n              }\n              *(undefined4 *)(this + 0x14) = 0;\n              *(undefined4 *)(this + 0x10) = 0;\n              *(undefined4 *)(this + 0x18) = 0;\n              this[0x65] = (filebuf)0x1;\n              return (uint)*pbVar7;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          uVar2 = *(undefined4 *)(this + 0x5c);\n          *(undefined4 *)(this + 0x14) = 0;\n          *(undefined4 *)(this + 0x10) = 0;\n          *(undefined4 *)(this + 4) = uVar2;\n          *(undefined4 *)(this + 8) = uVar2;\n          *(undefined4 *)(this + 0xc) = uVar2;\n          *(undefined4 *)(this + 0x18) = 0;\n          this[0x65] = (filebuf)0x0;\n          goto LAB_0021286d;\n        }\n        iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x14))(*(int **)(this + 0x74));\n        if (iVar8 < 1) {\n          iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x20))(*(int **)(this + 0x74));\n          local_3c = iVar12 + -2 + iVar8;\n          uVar9 = uVar6;\n        }\n        else {\n          local_3c = iVar8 * uVar6;\n          uVar9 = local_3c;\n        }\n        __n = *(int *)(this + 0x84) - (int)*(void **)(this + 0x80);\n        iVar12 = uVar9 - __n;\n        if ((int)uVar9 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar8 = *(int *)(this + 0x7c);\n        if ((this[0x65] == (filebuf)0x0) || (*(int *)(this + 0xc) != *(int *)(this + 4))) {\n          if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          __dest = *(char **)(this + 0x78);\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            goto LAB_002128b5;\n          }\n          __dest = *(char **)(this + 0x78);\n        }\n        else if (iVar8 < (int)local_3c) {\n          __dest = (char *)operator_new__(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(__dest,*(void **)(this + 0x80),__n);\nLAB_002128b5:\n          if (*(void **)(this + 0x78) != (void *)0x0) {\n            operator_delete__(*(void **)(this + 0x78));\n          }\n          *(char **)(this + 0x78) = __dest;\n          *(uint *)(this + 0x7c) = local_3c;\n        }\n        else {\n          __dest = *(char **)(this + 0x78);\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(__dest,*(void **)(this + 0x80),__n);\n          __dest = *(char **)(this + 0x78);\n        }\n        pcVar10 = __dest + __n;\n        *(char **)(this + 0x80) = __dest;\n        *(char **)(this + 0x84) = pcVar10;\n        *(undefined4 *)(this + 0x54) = *(undefined4 *)(this + 0x4c);\n        *(undefined4 *)(this + 0x58) = *(undefined4 *)(this + 0x50);\n        if (iVar12 != 0) {\n          iVar8 = 0;\n          goto LAB_00212664;\n        }\n        __dest_00 = *(void **)(this + 4);\n        iVar8 = 0;\n        local_20[0] = __dest_00;\n        if (pcVar10 <= __dest) goto LAB_00212654;\n        bVar4 = false;\nLAB_00212600:\n        local_20[0] = __dest_00;\n        iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x10))\n                          (*(undefined4 *)(this + 0x74),this + 0x4c,__dest,pcVar10,this + 0x80,\n                           __dest_00,uVar6 + (int)__dest_00,local_20);\n        if (iVar8 == 3) {\n          pcVar10 = *(char **)(this + 0x84);\n          __dest_00 = *(void **)(this + 4);\n          goto LAB_00212739;\n        }\n        uVar9 = (int)local_20[0] - *(int *)(this + 4);\n        if (iVar8 == 2) {\n          if (0 < (int)uVar9) goto LAB_002127e8;\n          if (!bVar4) {\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar3 = (bool)(uVar9 != 0 | bVar4);\n        while (!bVar3) {\nLAB_00212654:\n          while( true ) {\n            pcVar10 = *(char **)(this + 0x84);\n            iVar12 = 1;\n            __n = (int)pcVar10 - *(int *)(this + 0x78);\nLAB_00212664:\n            if (*(int *)(this + 0x7c) < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              __throw_ios_failure("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = __basic_file<char>::xsgetn((__basic_file<char> *)(this + 0x38),pcVar10,iVar12);\n            if (iVar12 == 0) {\n              bVar4 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar4 = false;\n            }\n            __dest_00 = *(void **)(this + 4);\n            __dest = *(char **)(this + 0x80);\n            pcVar10 = (char *)(iVar12 + *(int *)(this + 0x84));\n            *(char **)(this + 0x84) = pcVar10;\n            if (__dest < pcVar10) goto LAB_00212600;\n            local_20[0] = __dest_00;\n            if (iVar8 == 3) break;\n            if (bVar4) goto LAB_002126c9;\n          }\nLAB_00212739:\n          __src = *(void **)(this + 0x78);\n          uVar11 = (int)pcVar10 - (int)__src;\n          uVar9 = uVar6;\n          if ((uVar6 < uVar11) || (uVar9 = uVar11, uVar11 != 0)) {\n            memcpy(__dest_00,__src,uVar9);\n            __src = (void *)(uVar9 + *(int *)(this + 0x78));\n          }\n          *(void **)(this + 0x80) = __src;\n          iVar8 = 3;\n          bVar3 = (bool)(uVar9 != 0 | bVar4);\n        }\n        if (0 < (int)uVar9) goto LAB_002127e8;\n        if (!bVar4) goto LAB_002127c6;\nLAB_002126c9:\n        uVar2 = *(undefined4 *)(this + 0x5c);\n        *(undefined4 *)(this + 0x14) = 0;\n        *(undefined4 *)(this + 0x10) = 0;\n        *(undefined4 *)(this + 4) = uVar2;\n        *(undefined4 *)(this + 8) = uVar2;\n        *(undefined4 *)(this + 0xc) = uVar2;\n        *(undefined4 *)(this + 0x18) = 0;\n        this[0x65] = (filebuf)0x0;\n        if (iVar8 == 1) {\n                    /* WARNING: Subroutine does not return */\n          __throw_ios_failure("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }" { (labeled_statement "LAB_0021252c:\n        iVar12 = 2;" statement_identifier : (expression_statement "iVar12 = 2;" (assignment_expression "iVar12 = 2" identifier = number_literal) ;)) (if_statement "if (1 < *(uint *)(this + 0x60)) {\n          iVar12 = *(int *)(this + 0x60);\n        }" if (parenthesized_expression "(1 < *(uint *)(this + 0x60))" ( (binary_expression "1 < *(uint *)(this + 0x60)" number_literal < (pointer_expression "*(uint *)(this + 0x60)" * (cast_expression "(uint *)(this + 0x60)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x60)" ( (binary_expression "this + 0x60" identifier + number_literal) ))))) )) (compound_statement "{\n          iVar12 = *(int *)(this + 0x60);\n        }" { (expression_statement "iVar12 = *(int *)(this + 0x60);" (assignment_expression "iVar12 = *(int *)(this + 0x60)" identifier = (pointer_expression "*(int *)(this + 0x60)" * (cast_expression "(int *)(this + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x60)" ( (binary_expression "this + 0x60" identifier + number_literal) ))))) ;) })) (expression_statement "uVar6 = iVar12 - 1;" (assignment_expression "uVar6 = iVar12 - 1" identifier = (binary_expression "iVar12 - 1" identifier - number_literal)) ;) (expression_statement "piVar1 = *(int **)(this + 0x74);" (assignment_expression "piVar1 = *(int **)(this + 0x74)" identifier = (pointer_expression "*(int **)(this + 0x74)" * (cast_expression "(int **)(this + 0x74)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x74)" ( (binary_expression "this + 0x74" identifier + number_literal) ))))) ;) (if_statement "if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          __throw_bad_cast();\n        }" if (parenthesized_expression "(piVar1 == (int *)0x0)" ( (binary_expression "piVar1 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          __throw_bad_cast();\n        }" { comment (expression_statement "__throw_bad_cast();" (call_expression "__throw_bad_cast()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "cVar5 = (**(code **)(*piVar1 + 0x18))(piVar1);" (assignment_expression "cVar5 = (**(code **)(*piVar1 + 0x18))(piVar1)" identifier = (call_expression "(**(code **)(*piVar1 + 0x18))(piVar1)" (parenthesized_expression "(**(code **)(*piVar1 + 0x18))" ( (pointer_expression "**(code **)(*piVar1 + 0x18)" * (pointer_expression "*(code **)(*piVar1 + 0x18)" * (cast_expression "(code **)(*piVar1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar1 + 0x18)" ( (binary_expression "*piVar1 + 0x18" (pointer_expression "*piVar1" * identifier) + number_literal) ))))) )) (argument_list "(piVar1)" ( identifier )))) ;) (if_statement "if (cVar5 != '\0') {\n          uVar9 = __basic_file<char>::xsgetn\n                            ((__basic_file<char> *)(this + 0x38),*(char **)(this + 4),uVar6);\n          if (uVar9 != 0) {\n            if (0 < (int)uVar9) {\nLAB_002127e8:\n              pbVar7 = *(byte **)(this + 0x5c);\n              *(byte **)(this + 4) = pbVar7;\n              *(byte **)(this + 8) = pbVar7;\n              if (((byte)this[0x40] & 8) == 0) {\n                *(byte **)(this + 0xc) = pbVar7;\n              }\n              else {\n                *(byte **)(this + 0xc) = pbVar7 + uVar9;\n              }\n              *(undefined4 *)(this + 0x14) = 0;\n              *(undefined4 *)(this + 0x10) = 0;\n              *(undefined4 *)(this + 0x18) = 0;\n              this[0x65] = (filebuf)0x1;\n              return (uint)*pbVar7;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          uVar2 = *(undefined4 *)(this + 0x5c);\n          *(undefined4 *)(this + 0x14) = 0;\n          *(undefined4 *)(this + 0x10) = 0;\n          *(undefined4 *)(this + 4) = uVar2;\n          *(undefined4 *)(this + 8) = uVar2;\n          *(undefined4 *)(this + 0xc) = uVar2;\n          *(undefined4 *)(this + 0x18) = 0;\n          this[0x65] = (filebuf)0x0;\n          goto LAB_0021286d;\n        }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          uVar9 = __basic_file<char>::xsgetn\n                            ((__basic_file<char> *)(this + 0x38),*(char **)(this + 4),uVar6);\n          if (uVar9 != 0) {\n            if (0 < (int)uVar9) {\nLAB_002127e8:\n              pbVar7 = *(byte **)(this + 0x5c);\n              *(byte **)(this + 4) = pbVar7;\n              *(byte **)(this + 8) = pbVar7;\n              if (((byte)this[0x40] & 8) == 0) {\n                *(byte **)(this + 0xc) = pbVar7;\n              }\n              else {\n                *(byte **)(this + 0xc) = pbVar7 + uVar9;\n              }\n              *(undefined4 *)(this + 0x14) = 0;\n              *(undefined4 *)(this + 0x10) = 0;\n              *(undefined4 *)(this + 0x18) = 0;\n              this[0x65] = (filebuf)0x1;\n              return (uint)*pbVar7;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          uVar2 = *(undefined4 *)(this + 0x5c);\n          *(undefined4 *)(this + 0x14) = 0;\n          *(undefined4 *)(this + 0x10) = 0;\n          *(undefined4 *)(this + 4) = uVar2;\n          *(undefined4 *)(this + 8) = uVar2;\n          *(undefined4 *)(this + 0xc) = uVar2;\n          *(undefined4 *)(this + 0x18) = 0;\n          this[0x65] = (filebuf)0x0;\n          goto LAB_0021286d;\n        }" { (expression_statement "uVar9 = __basic_file<char>::xsgetn\n                            ((__basic_file<char> *)(this + 0x38),*(char **)(this + 4),uVar6);" (assignment_expression "uVar9 = __basic_file<char>::xsgetn\n                            ((__basic_file<char> *)(this + 0x38),*(char **)(this + 4),uVar6)" identifier = (binary_expression "__basic_file<char>::xsgetn\n                            ((__basic_file<char> *)(this + 0x38),*(char **)(this + 4),uVar6)" (binary_expression "__basic_file<char" identifier < identifier) > (ERROR "::" : :) (call_expression "xsgetn\n                            ((__basic_file<char> *)(this + 0x38),*(char **)(this + 4),uVar6)" identifier (argument_list "((__basic_file<char> *)(this + 0x38),*(char **)(this + 4),uVar6)" ( (call_expression "(__basic_file<char> *)(this + 0x38)" (parenthesized_expression "(__basic_file<char> *)" ( (binary_expression "__basic_file<char> *" (binary_expression "__basic_file<char" identifier < identifier) > (pointer_expression "*" * identifier)) )) (argument_list "(this + 0x38)" ( (binary_expression "this + 0x38" identifier + number_literal) ))) , (pointer_expression "*(char **)(this + 4)" * (cast_expression "(char **)(this + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) , identifier ))))) ;) (if_statement "if (uVar9 != 0) {\n            if (0 < (int)uVar9) {\nLAB_002127e8:\n              pbVar7 = *(byte **)(this + 0x5c);\n              *(byte **)(this + 4) = pbVar7;\n              *(byte **)(this + 8) = pbVar7;\n              if (((byte)this[0x40] & 8) == 0) {\n                *(byte **)(this + 0xc) = pbVar7;\n              }\n              else {\n                *(byte **)(this + 0xc) = pbVar7 + uVar9;\n              }\n              *(undefined4 *)(this + 0x14) = 0;\n              *(undefined4 *)(this + 0x10) = 0;\n              *(undefined4 *)(this + 0x18) = 0;\n              this[0x65] = (filebuf)0x1;\n              return (uint)*pbVar7;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow error reading the file");\n          }" if (parenthesized_expression "(uVar9 != 0)" ( (binary_expression "uVar9 != 0" identifier != number_literal) )) (compound_statement "{\n            if (0 < (int)uVar9) {\nLAB_002127e8:\n              pbVar7 = *(byte **)(this + 0x5c);\n              *(byte **)(this + 4) = pbVar7;\n              *(byte **)(this + 8) = pbVar7;\n              if (((byte)this[0x40] & 8) == 0) {\n                *(byte **)(this + 0xc) = pbVar7;\n              }\n              else {\n                *(byte **)(this + 0xc) = pbVar7 + uVar9;\n              }\n              *(undefined4 *)(this + 0x14) = 0;\n              *(undefined4 *)(this + 0x10) = 0;\n              *(undefined4 *)(this + 0x18) = 0;\n              this[0x65] = (filebuf)0x1;\n              return (uint)*pbVar7;\n            }\nLAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow error reading the file");\n          }" { (if_statement "if (0 < (int)uVar9) {\nLAB_002127e8:\n              pbVar7 = *(byte **)(this + 0x5c);\n              *(byte **)(this + 4) = pbVar7;\n              *(byte **)(this + 8) = pbVar7;\n              if (((byte)this[0x40] & 8) == 0) {\n                *(byte **)(this + 0xc) = pbVar7;\n              }\n              else {\n                *(byte **)(this + 0xc) = pbVar7 + uVar9;\n              }\n              *(undefined4 *)(this + 0x14) = 0;\n              *(undefined4 *)(this + 0x10) = 0;\n              *(undefined4 *)(this + 0x18) = 0;\n              this[0x65] = (filebuf)0x1;\n              return (uint)*pbVar7;\n            }" if (parenthesized_expression "(0 < (int)uVar9)" ( (binary_expression "0 < (int)uVar9" number_literal < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\nLAB_002127e8:\n              pbVar7 = *(byte **)(this + 0x5c);\n              *(byte **)(this + 4) = pbVar7;\n              *(byte **)(this + 8) = pbVar7;\n              if (((byte)this[0x40] & 8) == 0) {\n                *(byte **)(this + 0xc) = pbVar7;\n              }\n              else {\n                *(byte **)(this + 0xc) = pbVar7 + uVar9;\n              }\n              *(undefined4 *)(this + 0x14) = 0;\n              *(undefined4 *)(this + 0x10) = 0;\n              *(undefined4 *)(this + 0x18) = 0;\n              this[0x65] = (filebuf)0x1;\n              return (uint)*pbVar7;\n            }" { (labeled_statement "LAB_002127e8:\n              pbVar7 = *(byte **)(this + 0x5c);" statement_identifier : (expression_statement "pbVar7 = *(byte **)(this + 0x5c);" (assignment_expression "pbVar7 = *(byte **)(this + 0x5c)" identifier = (pointer_expression "*(byte **)(this + 0x5c)" * (cast_expression "(byte **)(this + 0x5c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x5c)" ( (binary_expression "this + 0x5c" identifier + number_literal) ))))) ;)) (expression_statement "*(byte **)(this + 4) = pbVar7;" (assignment_expression "*(byte **)(this + 4) = pbVar7" (pointer_expression "*(byte **)(this + 4)" * (cast_expression "(byte **)(this + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(this + 8) = pbVar7;" (assignment_expression "*(byte **)(this + 8) = pbVar7" (pointer_expression "*(byte **)(this + 8)" * (cast_expression "(byte **)(this + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = identifier) ;) (if_statement "if (((byte)this[0x40] & 8) == 0) {\n                *(byte **)(this + 0xc) = pbVar7;\n              }\n              else {\n                *(byte **)(this + 0xc) = pbVar7 + uVar9;\n              }" if (parenthesized_expression "(((byte)this[0x40] & 8) == 0)" ( (binary_expression "((byte)this[0x40] & 8) == 0" (parenthesized_expression "((byte)this[0x40] & 8)" ( (binary_expression "(byte)this[0x40] & 8" (cast_expression "(byte)this[0x40]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "this[0x40]" identifier [ number_literal ])) & number_literal) )) == number_literal) )) (compound_statement "{\n                *(byte **)(this + 0xc) = pbVar7;\n              }" { (expression_statement "*(byte **)(this + 0xc) = pbVar7;" (assignment_expression "*(byte **)(this + 0xc) = pbVar7" (pointer_expression "*(byte **)(this + 0xc)" * (cast_expression "(byte **)(this + 0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n                *(byte **)(this + 0xc) = pbVar7 + uVar9;\n              }" else (compound_statement "{\n                *(byte **)(this + 0xc) = pbVar7 + uVar9;\n              }" { (expression_statement "*(byte **)(this + 0xc) = pbVar7 + uVar9;" (assignment_expression "*(byte **)(this + 0xc) = pbVar7 + uVar9" (pointer_expression "*(byte **)(this + 0xc)" * (cast_expression "(byte **)(this + 0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) )))) = (binary_expression "pbVar7 + uVar9" identifier + identifier)) ;) }))) (expression_statement "*(undefined4 *)(this + 0x14) = 0;" (assignment_expression "*(undefined4 *)(this + 0x14) = 0" (pointer_expression "*(undefined4 *)(this + 0x14)" * (cast_expression "(undefined4 *)(this + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x14)" ( (binary_expression "this + 0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x10) = 0;" (assignment_expression "*(undefined4 *)(this + 0x10) = 0" (pointer_expression "*(undefined4 *)(this + 0x10)" * (cast_expression "(undefined4 *)(this + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x18) = 0;" (assignment_expression "*(undefined4 *)(this + 0x18) = 0" (pointer_expression "*(undefined4 *)(this + 0x18)" * (cast_expression "(undefined4 *)(this + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x18)" ( (binary_expression "this + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "this[0x65] = (filebuf)0x1;" (assignment_expression "this[0x65] = (filebuf)0x1" (subscript_expression "this[0x65]" identifier [ number_literal ]) = (cast_expression "(filebuf)0x1" ( (type_descriptor "filebuf" type_identifier) ) number_literal)) ;) (return_statement "return (uint)*pbVar7;" return (binary_expression "(uint)*pbVar7" (parenthesized_expression "(uint)" ( identifier )) * identifier) ;) })) (labeled_statement "LAB_002127c6:\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow error reading the file");" statement_identifier : comment (expression_statement "__throw_ios_failure("basic_filebuf::underflow error reading the file");" (call_expression "__throw_ios_failure("basic_filebuf::underflow error reading the file")" identifier (argument_list "("basic_filebuf::underflow error reading the file")" ( (string_literal ""basic_filebuf::underflow error reading the file"" " string_content ") ))) ;)) })) (labeled_statement "LAB_00212848:\n          uVar2 = *(undefined4 *)(this + 0x5c);" statement_identifier : (expression_statement "uVar2 = *(undefined4 *)(this + 0x5c);" (assignment_expression "uVar2 = *(undefined4 *)(this + 0x5c)" identifier = (pointer_expression "*(undefined4 *)(this + 0x5c)" * (cast_expression "(undefined4 *)(this + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x5c)" ( (binary_expression "this + 0x5c" identifier + number_literal) ))))) ;)) (expression_statement "*(undefined4 *)(this + 0x14) = 0;" (assignment_expression "*(undefined4 *)(this + 0x14) = 0" (pointer_expression "*(undefined4 *)(this + 0x14)" * (cast_expression "(undefined4 *)(this + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x14)" ( (binary_expression "this + 0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x10) = 0;" (assignment_expression "*(undefined4 *)(this + 0x10) = 0" (pointer_expression "*(undefined4 *)(this + 0x10)" * (cast_expression "(undefined4 *)(this + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 4) = uVar2;" (assignment_expression "*(undefined4 *)(this + 4) = uVar2" (pointer_expression "*(undefined4 *)(this + 4)" * (cast_expression "(undefined4 *)(this + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(this + 8) = uVar2;" (assignment_expression "*(undefined4 *)(this + 8) = uVar2" (pointer_expression "*(undefined4 *)(this + 8)" * (cast_expression "(undefined4 *)(this + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(this + 0xc) = uVar2;" (assignment_expression "*(undefined4 *)(this + 0xc) = uVar2" (pointer_expression "*(undefined4 *)(this + 0xc)" * (cast_expression "(undefined4 *)(this + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(this + 0x18) = 0;" (assignment_expression "*(undefined4 *)(this + 0x18) = 0" (pointer_expression "*(undefined4 *)(this + 0x18)" * (cast_expression "(undefined4 *)(this + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x18)" ( (binary_expression "this + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "this[0x65] = (filebuf)0x0;" (assignment_expression "this[0x65] = (filebuf)0x0" (subscript_expression "this[0x65]" identifier [ number_literal ]) = (cast_expression "(filebuf)0x0" ( (type_descriptor "filebuf" type_identifier) ) number_literal)) ;) (goto_statement "goto LAB_0021286d;" goto statement_identifier ;) })) (expression_statement "iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x14))(*(int **)(this + 0x74));" (assignment_expression "iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x14))(*(int **)(this + 0x74))" identifier = (call_expression "(**(code **)(**(int **)(this + 0x74) + 0x14))(*(int **)(this + 0x74))" (parenthesized_expression "(**(code **)(**(int **)(this + 0x74) + 0x14))" ( (pointer_expression "**(code **)(**(int **)(this + 0x74) + 0x14)" * (pointer_expression "*(code **)(**(int **)(this + 0x74) + 0x14)" * (cast_expression "(code **)(**(int **)(this + 0x74) + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(this + 0x74) + 0x14)" ( (binary_expression "**(int **)(this + 0x74) + 0x14" (pointer_expression "**(int **)(this + 0x74)" * (pointer_expression "*(int **)(this + 0x74)" * (cast_expression "(int **)(this + 0x74)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x74)" ( (binary_expression "this + 0x74" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(this + 0x74))" ( (pointer_expression "*(int **)(this + 0x74)" * (cast_expression "(int **)(this + 0x74)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x74)" ( (binary_expression "this + 0x74" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar8 < 1) {\n          iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x20))(*(int **)(this + 0x74));\n          local_3c = iVar12 + -2 + iVar8;\n          uVar9 = uVar6;\n        }\n        else {\n          local_3c = iVar8 * uVar6;\n          uVar9 = local_3c;\n        }" if (parenthesized_expression "(iVar8 < 1)" ( (binary_expression "iVar8 < 1" identifier < number_literal) )) (compound_statement "{\n          iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x20))(*(int **)(this + 0x74));\n          local_3c = iVar12 + -2 + iVar8;\n          uVar9 = uVar6;\n        }" { (expression_statement "iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x20))(*(int **)(this + 0x74));" (assignment_expression "iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x20))(*(int **)(this + 0x74))" identifier = (call_expression "(**(code **)(**(int **)(this + 0x74) + 0x20))(*(int **)(this + 0x74))" (parenthesized_expression "(**(code **)(**(int **)(this + 0x74) + 0x20))" ( (pointer_expression "**(code **)(**(int **)(this + 0x74) + 0x20)" * (pointer_expression "*(code **)(**(int **)(this + 0x74) + 0x20)" * (cast_expression "(code **)(**(int **)(this + 0x74) + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(this + 0x74) + 0x20)" ( (binary_expression "**(int **)(this + 0x74) + 0x20" (pointer_expression "**(int **)(this + 0x74)" * (pointer_expression "*(int **)(this + 0x74)" * (cast_expression "(int **)(this + 0x74)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x74)" ( (binary_expression "this + 0x74" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(this + 0x74))" ( (pointer_expression "*(int **)(this + 0x74)" * (cast_expression "(int **)(this + 0x74)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x74)" ( (binary_expression "this + 0x74" identifier + number_literal) )))) )))) ;) (expression_statement "local_3c = iVar12 + -2 + iVar8;" (assignment_expression "local_3c = iVar12 + -2 + iVar8" identifier = (binary_expression "iVar12 + -2 + iVar8" (binary_expression "iVar12 + -2" identifier + number_literal) + identifier)) ;) (expression_statement "uVar9 = uVar6;" (assignment_expression "uVar9 = uVar6" identifier = identifier) ;) }) (else_clause "else {\n          local_3c = iVar8 * uVar6;\n          uVar9 = local_3c;\n        }" else (compound_statement "{\n          local_3c = iVar8 * uVar6;\n          uVar9 = local_3c;\n        }" { (expression_statement "local_3c = iVar8 * uVar6;" (assignment_expression "local_3c = iVar8 * uVar6" identifier = (binary_expression "iVar8 * uVar6" identifier * identifier)) ;) (expression_statement "uVar9 = local_3c;" (assignment_expression "uVar9 = local_3c" identifier = identifier) ;) }))) (expression_statement "__n = *(int *)(this + 0x84) - (int)*(void **)(this + 0x80);" (assignment_expression "__n = *(int *)(this + 0x84) - (int)*(void **)(this + 0x80)" identifier = (binary_expression "*(int *)(this + 0x84) - (int)*(void **)(this + 0x80)" (pointer_expression "*(int *)(this + 0x84)" * (cast_expression "(int *)(this + 0x84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x84)" ( (binary_expression "this + 0x84" identifier + number_literal) )))) - (cast_expression "(int)*(void **)(this + 0x80)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(void **)(this + 0x80)" * (cast_expression "(void **)(this + 0x80)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x80)" ( (binary_expression "this + 0x80" identifier + number_literal) ))))))) ;) (expression_statement "iVar12 = uVar9 - __n;" (assignment_expression "iVar12 = uVar9 - __n" identifier = (binary_expression "uVar9 - __n" identifier - identifier)) ;) (if_statement "if ((int)uVar9 <= (int)__n) {\n          iVar12 = 0;\n        }" if (parenthesized_expression "((int)uVar9 <= (int)__n)" ( (binary_expression "(int)uVar9 <= (int)__n" (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)__n" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          iVar12 = 0;\n        }" { (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) })) (expression_statement "iVar8 = *(int *)(this + 0x7c);" (assignment_expression "iVar8 = *(int *)(this + 0x7c)" identifier = (pointer_expression "*(int *)(this + 0x7c)" * (cast_expression "(int *)(this + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x7c)" ( (binary_expression "this + 0x7c" identifier + number_literal) ))))) ;) (if_statement "if ((this[0x65] == (filebuf)0x0) || (*(int *)(this + 0xc) != *(int *)(this + 4))) {\n          if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          __dest = *(char **)(this + 0x78);\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            goto LAB_002128b5;\n          }\n          __dest = *(char **)(this + 0x78);\n        }\n        else if (iVar8 < (int)local_3c) {\n          __dest = (char *)operator_new__(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(__dest,*(void **)(this + 0x80),__n);\nLAB_002128b5:\n          if (*(void **)(this + 0x78) != (void *)0x0) {\n            operator_delete__(*(void **)(this + 0x78));\n          }\n          *(char **)(this + 0x78) = __dest;\n          *(uint *)(this + 0x7c) = local_3c;\n        }\n        else {\n          __dest = *(char **)(this + 0x78);\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(__dest,*(void **)(this + 0x80),__n);\n          __dest = *(char **)(this + 0x78);\n        }" if (parenthesized_expression "((this[0x65] == (filebuf)0x0) || (*(int *)(this + 0xc) != *(int *)(this + 4)))" ( (binary_expression "(this[0x65] == (filebuf)0x0) || (*(int *)(this + 0xc) != *(int *)(this + 4))" (parenthesized_expression "(this[0x65] == (filebuf)0x0)" ( (binary_expression "this[0x65] == (filebuf)0x0" (subscript_expression "this[0x65]" identifier [ number_literal ]) == (cast_expression "(filebuf)0x0" ( (type_descriptor "filebuf" type_identifier) ) number_literal)) )) || (parenthesized_expression "(*(int *)(this + 0xc) != *(int *)(this + 4))" ( (binary_expression "*(int *)(this + 0xc) != *(int *)(this + 4)" (pointer_expression "*(int *)(this + 0xc)" * (cast_expression "(int *)(this + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) )))) != (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) ))))) ))) )) (compound_statement "{\n          if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          __dest = *(char **)(this + 0x78);\n          if (__n != 0) goto LAB_002128fd;\n        }" { (if_statement "if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }" if (parenthesized_expression "(iVar8 < (int)local_3c)" ( (binary_expression "iVar8 < (int)local_3c" identifier < (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            __dest = (char *)operator_new__(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }" { (expression_statement "__dest = (char *)operator_new__(local_3c);" (assignment_expression "__dest = (char *)operator_new__(local_3c)" identifier = (cast_expression "(char *)operator_new__(local_3c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new__(local_3c)" identifier (argument_list "(local_3c)" ( identifier ))))) ;) (if_statement "if (__n != 0) goto LAB_00212947;" if (parenthesized_expression "(__n != 0)" ( (binary_expression "__n != 0" identifier != number_literal) )) (goto_statement "goto LAB_00212947;" goto statement_identifier ;)) (goto_statement "goto LAB_002128b5;" goto statement_identifier ;) })) (expression_statement "__dest = *(char **)(this + 0x78);" (assignment_expression "__dest = *(char **)(this + 0x78)" identifier = (pointer_expression "*(char **)(this + 0x78)" * (cast_expression "(char **)(this + 0x78)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x78)" ( (binary_expression "this + 0x78" identifier + number_literal) ))))) ;) (if_statement "if (__n != 0) goto LAB_002128fd;" if (parenthesized_expression "(__n != 0)" ( (binary_expression "__n != 0" identifier != number_literal) )) (goto_statement "goto LAB_002128fd;" goto statement_identifier ;)) }) (else_clause "else if (__n == 0) {\n          if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            goto LAB_002128b5;\n          }\n          __dest = *(char **)(this + 0x78);\n        }\n        else if (iVar8 < (int)local_3c) {\n          __dest = (char *)operator_new__(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(__dest,*(void **)(this + 0x80),__n);\nLAB_002128b5:\n          if (*(void **)(this + 0x78) != (void *)0x0) {\n            operator_delete__(*(void **)(this + 0x78));\n          }\n          *(char **)(this + 0x78) = __dest;\n          *(uint *)(this + 0x7c) = local_3c;\n        }\n        else {\n          __dest = *(char **)(this + 0x78);\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(__dest,*(void **)(this + 0x80),__n);\n          __dest = *(char **)(this + 0x78);\n        }" else (if_statement "if (__n == 0) {\n          if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            goto LAB_002128b5;\n          }\n          __dest = *(char **)(this + 0x78);\n        }\n        else if (iVar8 < (int)local_3c) {\n          __dest = (char *)operator_new__(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(__dest,*(void **)(this + 0x80),__n);\nLAB_002128b5:\n          if (*(void **)(this + 0x78) != (void *)0x0) {\n            operator_delete__(*(void **)(this + 0x78));\n          }\n          *(char **)(this + 0x78) = __dest;\n          *(uint *)(this + 0x7c) = local_3c;\n        }\n        else {\n          __dest = *(char **)(this + 0x78);\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(__dest,*(void **)(this + 0x80),__n);\n          __dest = *(char **)(this + 0x78);\n        }" if (parenthesized_expression "(__n == 0)" ( (binary_expression "__n == 0" identifier == number_literal) )) (compound_statement "{\n          if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            goto LAB_002128b5;\n          }\n          __dest = *(char **)(this + 0x78);\n        }" { (if_statement "if (iVar8 < (int)local_3c) {\n            __dest = (char *)operator_new__(local_3c);\n            goto LAB_002128b5;\n          }" if (parenthesized_expression "(iVar8 < (int)local_3c)" ( (binary_expression "iVar8 < (int)local_3c" identifier < (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            __dest = (char *)operator_new__(local_3c);\n            goto LAB_002128b5;\n          }" { (expression_statement "__dest = (char *)operator_new__(local_3c);" (assignment_expression "__dest = (char *)operator_new__(local_3c)" identifier = (cast_expression "(char *)operator_new__(local_3c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new__(local_3c)" identifier (argument_list "(local_3c)" ( identifier ))))) ;) (goto_statement "goto LAB_002128b5;" goto statement_identifier ;) })) (expression_statement "__dest = *(char **)(this + 0x78);" (assignment_expression "__dest = *(char **)(this + 0x78)" identifier = (pointer_expression "*(char **)(this + 0x78)" * (cast_expression "(char **)(this + 0x78)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x78)" ( (binary_expression "this + 0x78" identifier + number_literal) ))))) ;) }) (else_clause "else if (iVar8 < (int)local_3c) {\n          __dest = (char *)operator_new__(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(__dest,*(void **)(this + 0x80),__n);\nLAB_002128b5:\n          if (*(void **)(this + 0x78) != (void *)0x0) {\n            operator_delete__(*(void **)(this + 0x78));\n          }\n          *(char **)(this + 0x78) = __dest;\n          *(uint *)(this + 0x7c) = local_3c;\n        }\n        else {\n          __dest = *(char **)(this + 0x78);\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(__dest,*(void **)(this + 0x80),__n);\n          __dest = *(char **)(this + 0x78);\n        }" else (if_statement "if (iVar8 < (int)local_3c) {\n          __dest = (char *)operator_new__(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(__dest,*(void **)(this + 0x80),__n);\nLAB_002128b5:\n          if (*(void **)(this + 0x78) != (void *)0x0) {\n            operator_delete__(*(void **)(this + 0x78));\n          }\n          *(char **)(this + 0x78) = __dest;\n          *(uint *)(this + 0x7c) = local_3c;\n        }\n        else {\n          __dest = *(char **)(this + 0x78);\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(__dest,*(void **)(this + 0x80),__n);\n          __dest = *(char **)(this + 0x78);\n        }" if (parenthesized_expression "(iVar8 < (int)local_3c)" ( (binary_expression "iVar8 < (int)local_3c" identifier < (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          __dest = (char *)operator_new__(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(__dest,*(void **)(this + 0x80),__n);\nLAB_002128b5:\n          if (*(void **)(this + 0x78) != (void *)0x0) {\n            operator_delete__(*(void **)(this + 0x78));\n          }\n          *(char **)(this + 0x78) = __dest;\n          *(uint *)(this + 0x7c) = local_3c;\n        }" { (expression_statement "__dest = (char *)operator_new__(local_3c);" (assignment_expression "__dest = (char *)operator_new__(local_3c)" identifier = (cast_expression "(char *)operator_new__(local_3c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new__(local_3c)" identifier (argument_list "(local_3c)" ( identifier ))))) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00212947:\n          memcpy(__dest,*(void **)(this + 0x80),__n);" statement_identifier : (expression_statement "memcpy(__dest,*(void **)(this + 0x80),__n);" (call_expression "memcpy(__dest,*(void **)(this + 0x80),__n)" identifier (argument_list "(__dest,*(void **)(this + 0x80),__n)" ( identifier , (pointer_expression "*(void **)(this + 0x80)" * (cast_expression "(void **)(this + 0x80)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x80)" ( (binary_expression "this + 0x80" identifier + number_literal) )))) , identifier ))) ;)) (labeled_statement "LAB_002128b5:\n          if (*(void **)(this + 0x78) != (void *)0x0) {\n            operator_delete__(*(void **)(this + 0x78));\n          }" statement_identifier : (if_statement "if (*(void **)(this + 0x78) != (void *)0x0) {\n            operator_delete__(*(void **)(this + 0x78));\n          }" if (parenthesized_expression "(*(void **)(this + 0x78) != (void *)0x0)" ( (binary_expression "*(void **)(this + 0x78) != (void *)0x0" (pointer_expression "*(void **)(this + 0x78)" * (cast_expression "(void **)(this + 0x78)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x78)" ( (binary_expression "this + 0x78" identifier + number_literal) )))) != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            operator_delete__(*(void **)(this + 0x78));\n          }" { (expression_statement "operator_delete__(*(void **)(this + 0x78));" (call_expression "operator_delete__(*(void **)(this + 0x78))" identifier (argument_list "(*(void **)(this + 0x78))" ( (pointer_expression "*(void **)(this + 0x78)" * (cast_expression "(void **)(this + 0x78)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x78)" ( (binary_expression "this + 0x78" identifier + number_literal) )))) ))) ;) }))) (expression_statement "*(char **)(this + 0x78) = __dest;" (assignment_expression "*(char **)(this + 0x78) = __dest" (pointer_expression "*(char **)(this + 0x78)" * (cast_expression "(char **)(this + 0x78)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x78)" ( (binary_expression "this + 0x78" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(this + 0x7c) = local_3c;" (assignment_expression "*(uint *)(this + 0x7c) = local_3c" (pointer_expression "*(uint *)(this + 0x7c)" * (cast_expression "(uint *)(this + 0x7c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x7c)" ( (binary_expression "this + 0x7c" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n          __dest = *(char **)(this + 0x78);\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(__dest,*(void **)(this + 0x80),__n);\n          __dest = *(char **)(this + 0x78);\n        }" else (compound_statement "{\n          __dest = *(char **)(this + 0x78);\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(__dest,*(void **)(this + 0x80),__n);\n          __dest = *(char **)(this + 0x78);\n        }" { (expression_statement "__dest = *(char **)(this + 0x78);" (assignment_expression "__dest = *(char **)(this + 0x78)" identifier = (pointer_expression "*(char **)(this + 0x78)" * (cast_expression "(char **)(this + 0x78)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x78)" ( (binary_expression "this + 0x78" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (labeled_statement "LAB_002128fd:\n          memmove(__dest,*(void **)(this + 0x80),__n);" statement_identifier : (expression_statement "memmove(__dest,*(void **)(this + 0x80),__n);" (call_expression "memmove(__dest,*(void **)(this + 0x80),__n)" identifier (argument_list "(__dest,*(void **)(this + 0x80),__n)" ( identifier , (pointer_expression "*(void **)(this + 0x80)" * (cast_expression "(void **)(this + 0x80)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x80)" ( (binary_expression "this + 0x80" identifier + number_literal) )))) , identifier ))) ;)) (expression_statement "__dest = *(char **)(this + 0x78);" (assignment_expression "__dest = *(char **)(this + 0x78)" identifier = (pointer_expression "*(char **)(this + 0x78)" * (cast_expression "(char **)(this + 0x78)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x78)" ( (binary_expression "this + 0x78" identifier + number_literal) ))))) ;) }))))))) (expression_statement "pcVar10 = __dest + __n;" (assignment_expression "pcVar10 = __dest + __n" identifier = (binary_expression "__dest + __n" identifier + identifier)) ;) (expression_statement "*(char **)(this + 0x80) = __dest;" (assignment_expression "*(char **)(this + 0x80) = __dest" (pointer_expression "*(char **)(this + 0x80)" * (cast_expression "(char **)(this + 0x80)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x80)" ( (binary_expression "this + 0x80" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(char **)(this + 0x84) = pcVar10;" (assignment_expression "*(char **)(this + 0x84) = pcVar10" (pointer_expression "*(char **)(this + 0x84)" * (cast_expression "(char **)(this + 0x84)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x84)" ( (binary_expression "this + 0x84" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(this + 0x54) = *(undefined4 *)(this + 0x4c);" (assignment_expression "*(undefined4 *)(this + 0x54) = *(undefined4 *)(this + 0x4c)" (pointer_expression "*(undefined4 *)(this + 0x54)" * (cast_expression "(undefined4 *)(this + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x54)" ( (binary_expression "this + 0x54" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(this + 0x4c)" * (cast_expression "(undefined4 *)(this + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x4c)" ( (binary_expression "this + 0x4c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(this + 0x58) = *(undefined4 *)(this + 0x50);" (assignment_expression "*(undefined4 *)(this + 0x58) = *(undefined4 *)(this + 0x50)" (pointer_expression "*(undefined4 *)(this + 0x58)" * (cast_expression "(undefined4 *)(this + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x58)" ( (binary_expression "this + 0x58" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(this + 0x50)" * (cast_expression "(undefined4 *)(this + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x50)" ( (binary_expression "this + 0x50" identifier + number_literal) ))))) ;) (if_statement "if (iVar12 != 0) {\n          iVar8 = 0;\n          goto LAB_00212664;\n        }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n          iVar8 = 0;\n          goto LAB_00212664;\n        }" { (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00212664;" goto statement_identifier ;) })) (expression_statement "__dest_00 = *(void **)(this + 4);" (assignment_expression "__dest_00 = *(void **)(this + 4)" identifier = (pointer_expression "*(void **)(this + 4)" * (cast_expression "(void **)(this + 4)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (expression_statement "local_20[0] = __dest_00;" (assignment_expression "local_20[0] = __dest_00" (subscript_expression "local_20[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (pcVar10 <= __dest) goto LAB_00212654;" if (parenthesized_expression "(pcVar10 <= __dest)" ( (binary_expression "pcVar10 <= __dest" identifier <= identifier) )) (goto_statement "goto LAB_00212654;" goto statement_identifier ;)) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (labeled_statement "LAB_00212600:\n        local_20[0] = __dest_00;" statement_identifier : (expression_statement "local_20[0] = __dest_00;" (assignment_expression "local_20[0] = __dest_00" (subscript_expression "local_20[0]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x10))\n                          (*(undefined4 *)(this + 0x74),this + 0x4c,__dest,pcVar10,this + 0x80,\n                           __dest_00,uVar6 + (int)__dest_00,local_20);" (assignment_expression "iVar8 = (**(code **)(**(int **)(this + 0x74) + 0x10))\n                          (*(undefined4 *)(this + 0x74),this + 0x4c,__dest,pcVar10,this + 0x80,\n                           __dest_00,uVar6 + (int)__dest_00,local_20)" identifier = (call_expression "(**(code **)(**(int **)(this + 0x74) + 0x10))\n                          (*(undefined4 *)(this + 0x74),this + 0x4c,__dest,pcVar10,this + 0x80,\n                           __dest_00,uVar6 + (int)__dest_00,local_20)" (parenthesized_expression "(**(code **)(**(int **)(this + 0x74) + 0x10))" ( (pointer_expression "**(code **)(**(int **)(this + 0x74) + 0x10)" * (pointer_expression "*(code **)(**(int **)(this + 0x74) + 0x10)" * (cast_expression "(code **)(**(int **)(this + 0x74) + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(this + 0x74) + 0x10)" ( (binary_expression "**(int **)(this + 0x74) + 0x10" (pointer_expression "**(int **)(this + 0x74)" * (pointer_expression "*(int **)(this + 0x74)" * (cast_expression "(int **)(this + 0x74)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x74)" ( (binary_expression "this + 0x74" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(this + 0x74),this + 0x4c,__dest,pcVar10,this + 0x80,\n                           __dest_00,uVar6 + (int)__dest_00,local_20)" ( (pointer_expression "*(undefined4 *)(this + 0x74)" * (cast_expression "(undefined4 *)(this + 0x74)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x74)" ( (binary_expression "this + 0x74" identifier + number_literal) )))) , (binary_expression "this + 0x4c" identifier + number_literal) , identifier , identifier , (binary_expression "this + 0x80" identifier + number_literal) , identifier , (binary_expression "uVar6 + (int)__dest_00" identifier + (cast_expression "(int)__dest_00" ( (type_descriptor "int" primitive_type) ) identifier)) , identifier )))) ;) (if_statement "if (iVar8 == 3) {\n          pcVar10 = *(char **)(this + 0x84);\n          __dest_00 = *(void **)(this + 4);\n          goto LAB_00212739;\n        }" if (parenthesized_expression "(iVar8 == 3)" ( (binary_expression "iVar8 == 3" identifier == number_literal) )) (compound_statement "{\n          pcVar10 = *(char **)(this + 0x84);\n          __dest_00 = *(void **)(this + 4);\n          goto LAB_00212739;\n        }" { (expression_statement "pcVar10 = *(char **)(this + 0x84);" (assignment_expression "pcVar10 = *(char **)(this + 0x84)" identifier = (pointer_expression "*(char **)(this + 0x84)" * (cast_expression "(char **)(this + 0x84)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x84)" ( (binary_expression "this + 0x84" identifier + number_literal) ))))) ;) (expression_statement "__dest_00 = *(void **)(this + 4);" (assignment_expression "__dest_00 = *(void **)(this + 4)" identifier = (pointer_expression "*(void **)(this + 4)" * (cast_expression "(void **)(this + 4)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00212739;" goto statement_identifier ;) })) (expression_statement "uVar9 = (int)local_20[0] - *(int *)(this + 4);" (assignment_expression "uVar9 = (int)local_20[0] - *(int *)(this + 4)" identifier = (binary_expression "(int)local_20[0] - *(int *)(this + 4)" (cast_expression "(int)local_20[0]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_20[0]" identifier [ number_literal ])) - (pointer_expression "*(int *)(this + 4)" * (cast_expression "(int *)(this + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))))) ;) (if_statement "if (iVar8 == 2) {\n          if (0 < (int)uVar9) goto LAB_002127e8;\n          if (!bVar4) {\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }" if (parenthesized_expression "(iVar8 == 2)" ( (binary_expression "iVar8 == 2" identifier == number_literal) )) (compound_statement "{\n          if (0 < (int)uVar9) goto LAB_002127e8;\n          if (!bVar4) {\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }" { (if_statement "if (0 < (int)uVar9) goto LAB_002127e8;" if (parenthesized_expression "(0 < (int)uVar9)" ( (binary_expression "0 < (int)uVar9" number_literal < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_002127e8;" goto statement_identifier ;)) (if_statement "if (!bVar4) {\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow invalid byte sequence in file");\n          }" if (parenthesized_expression "(!bVar4)" ( (unary_expression "!bVar4" ! identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            __throw_ios_failure("basic_filebuf::underflow invalid byte sequence in file");\n          }" { comment (expression_statement "__throw_ios_failure("basic_filebuf::underflow invalid byte sequence in file");" (call_expression "__throw_ios_failure("basic_filebuf::underflow invalid byte sequence in file")" identifier (argument_list "("basic_filebuf::underflow invalid byte sequence in file")" ( (string_literal ""basic_filebuf::underflow invalid byte sequence in file"" " string_content ") ))) ;) })) (goto_statement "goto LAB_00212848;" goto statement_identifier ;) })) (expression_statement "bVar3 = (bool)(uVar9 != 0 | bVar4);" (assignment_expression "bVar3 = (bool)(uVar9 != 0 | bVar4)" identifier = (cast_expression "(bool)(uVar9 != 0 | bVar4)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(uVar9 != 0 | bVar4)" ( (binary_expression "uVar9 != 0 | bVar4" (binary_expression "uVar9 != 0" identifier != number_literal) | identifier) )))) ;) (while_statement "while (!bVar3) {\nLAB_00212654:\n          while( true ) {\n            pcVar10 = *(char **)(this + 0x84);\n            iVar12 = 1;\n            __n = (int)pcVar10 - *(int *)(this + 0x78);\nLAB_00212664:\n            if (*(int *)(this + 0x7c) < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              __throw_ios_failure("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = __basic_file<char>::xsgetn((__basic_file<char> *)(this + 0x38),pcVar10,iVar12);\n            if (iVar12 == 0) {\n              bVar4 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar4 = false;\n            }\n            __dest_00 = *(void **)(this + 4);\n            __dest = *(char **)(this + 0x80);\n            pcVar10 = (char *)(iVar12 + *(int *)(this + 0x84));\n            *(char **)(this + 0x84) = pcVar10;\n            if (__dest < pcVar10) goto LAB_00212600;\n            local_20[0] = __dest_00;\n            if (iVar8 == 3) break;\n            if (bVar4) goto LAB_002126c9;\n          }\nLAB_00212739:\n          __src = *(void **)(this + 0x78);\n          uVar11 = (int)pcVar10 - (int)__src;\n          uVar9 = uVar6;\n          if ((uVar6 < uVar11) || (uVar9 = uVar11, uVar11 != 0)) {\n            memcpy(__dest_00,__src,uVar9);\n            __src = (void *)(uVar9 + *(int *)(this + 0x78));\n          }\n          *(void **)(this + 0x80) = __src;\n          iVar8 = 3;\n          bVar3 = (bool)(uVar9 != 0 | bVar4);\n        }" while (parenthesized_expression "(!bVar3)" ( (unary_expression "!bVar3" ! identifier) )) (compound_statement "{\nLAB_00212654:\n          while( true ) {\n            pcVar10 = *(char **)(this + 0x84);\n            iVar12 = 1;\n            __n = (int)pcVar10 - *(int *)(this + 0x78);\nLAB_00212664:\n            if (*(int *)(this + 0x7c) < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              __throw_ios_failure("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = __basic_file<char>::xsgetn((__basic_file<char> *)(this + 0x38),pcVar10,iVar12);\n            if (iVar12 == 0) {\n              bVar4 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar4 = false;\n            }\n            __dest_00 = *(void **)(this + 4);\n            __dest = *(char **)(this + 0x80);\n            pcVar10 = (char *)(iVar12 + *(int *)(this + 0x84));\n            *(char **)(this + 0x84) = pcVar10;\n            if (__dest < pcVar10) goto LAB_00212600;\n            local_20[0] = __dest_00;\n            if (iVar8 == 3) break;\n            if (bVar4) goto LAB_002126c9;\n          }\nLAB_00212739:\n          __src = *(void **)(this + 0x78);\n          uVar11 = (int)pcVar10 - (int)__src;\n          uVar9 = uVar6;\n          if ((uVar6 < uVar11) || (uVar9 = uVar11, uVar11 != 0)) {\n            memcpy(__dest_00,__src,uVar9);\n            __src = (void *)(uVar9 + *(int *)(this + 0x78));\n          }\n          *(void **)(this + 0x80) = __src;\n          iVar8 = 3;\n          bVar3 = (bool)(uVar9 != 0 | bVar4);\n        }" { (labeled_statement "LAB_00212654:\n          while( true ) {\n            pcVar10 = *(char **)(this + 0x84);\n            iVar12 = 1;\n            __n = (int)pcVar10 - *(int *)(this + 0x78);\nLAB_00212664:\n            if (*(int *)(this + 0x7c) < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              __throw_ios_failure("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = __basic_file<char>::xsgetn((__basic_file<char> *)(this + 0x38),pcVar10,iVar12);\n            if (iVar12 == 0) {\n              bVar4 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar4 = false;\n            }\n            __dest_00 = *(void **)(this + 4);\n            __dest = *(char **)(this + 0x80);\n            pcVar10 = (char *)(iVar12 + *(int *)(this + 0x84));\n            *(char **)(this + 0x84) = pcVar10;\n            if (__dest < pcVar10) goto LAB_00212600;\n            local_20[0] = __dest_00;\n            if (iVar8 == 3) break;\n            if (bVar4) goto LAB_002126c9;\n          }" statement_identifier : (while_statement "while( true ) {\n            pcVar10 = *(char **)(this + 0x84);\n            iVar12 = 1;\n            __n = (int)pcVar10 - *(int *)(this + 0x78);\nLAB_00212664:\n            if (*(int *)(this + 0x7c) < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              __throw_ios_failure("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = __basic_file<char>::xsgetn((__basic_file<char> *)(this + 0x38),pcVar10,iVar12);\n            if (iVar12 == 0) {\n              bVar4 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar4 = false;\n            }\n            __dest_00 = *(void **)(this + 4);\n            __dest = *(char **)(this + 0x80);\n            pcVar10 = (char *)(iVar12 + *(int *)(this + 0x84));\n            *(char **)(this + 0x84) = pcVar10;\n            if (__dest < pcVar10) goto LAB_00212600;\n            local_20[0] = __dest_00;\n            if (iVar8 == 3) break;\n            if (bVar4) goto LAB_002126c9;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            pcVar10 = *(char **)(this + 0x84);\n            iVar12 = 1;\n            __n = (int)pcVar10 - *(int *)(this + 0x78);\nLAB_00212664:\n            if (*(int *)(this + 0x7c) < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              __throw_ios_failure("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = __basic_file<char>::xsgetn((__basic_file<char> *)(this + 0x38),pcVar10,iVar12);\n            if (iVar12 == 0) {\n              bVar4 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar4 = false;\n            }\n            __dest_00 = *(void **)(this + 4);\n            __dest = *(char **)(this + 0x80);\n            pcVar10 = (char *)(iVar12 + *(int *)(this + 0x84));\n            *(char **)(this + 0x84) = pcVar10;\n            if (__dest < pcVar10) goto LAB_00212600;\n            local_20[0] = __dest_00;\n            if (iVar8 == 3) break;\n            if (bVar4) goto LAB_002126c9;\n          }" { (expression_statement "pcVar10 = *(char **)(this + 0x84);" (assignment_expression "pcVar10 = *(char **)(this + 0x84)" identifier = (pointer_expression "*(char **)(this + 0x84)" * (cast_expression "(char **)(this + 0x84)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x84)" ( (binary_expression "this + 0x84" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = 1;" (assignment_expression "iVar12 = 1" identifier = number_literal) ;) (expression_statement "__n = (int)pcVar10 - *(int *)(this + 0x78);" (assignment_expression "__n = (int)pcVar10 - *(int *)(this + 0x78)" identifier = (binary_expression "(int)pcVar10 - *(int *)(this + 0x78)" (cast_expression "(int)pcVar10" ( (type_descriptor "int" primitive_type) ) identifier) - (pointer_expression "*(int *)(this + 0x78)" * (cast_expression "(int *)(this + 0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x78)" ( (binary_expression "this + 0x78" identifier + number_literal) )))))) ;) (labeled_statement "LAB_00212664:\n            if (*(int *)(this + 0x7c) < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              __throw_ios_failure("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }" statement_identifier : (if_statement "if (*(int *)(this + 0x7c) < (int)(__n + iVar12)) {\n                    /* WARNING: Subroutine does not return */\n              __throw_ios_failure("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }" if (parenthesized_expression "(*(int *)(this + 0x7c) < (int)(__n + iVar12))" ( (binary_expression "*(int *)(this + 0x7c) < (int)(__n + iVar12)" (pointer_expression "*(int *)(this + 0x7c)" * (cast_expression "(int *)(this + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x7c)" ( (binary_expression "this + 0x7c" identifier + number_literal) )))) < (cast_expression "(int)(__n + iVar12)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(__n + iVar12)" ( (binary_expression "__n + iVar12" identifier + identifier) )))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n              __throw_ios_failure("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }" { comment (expression_statement "__throw_ios_failure("basic_filebuf::underflow codecvt::max_length() is not valid");" (call_expression "__throw_ios_failure("basic_filebuf::underflow codecvt::max_length() is not valid")" identifier (argument_list "("basic_filebuf::underflow codecvt::max_length() is not valid")" ( (string_literal ""basic_filebuf::underflow codecvt::max_length() is not valid"" " string_content ") ))) ;) }))) (expression_statement "iVar12 = __basic_file<char>::xsgetn((__basic_file<char> *)(this + 0x38),pcVar10,iVar12);" (assignment_expression "iVar12 = __basic_file<char>::xsgetn((__basic_file<char> *)(this + 0x38),pcVar10,iVar12)" identifier = (binary_expression "__basic_file<char>::xsgetn((__basic_file<char> *)(this + 0x38),pcVar10,iVar12)" (binary_expression "__basic_file<char" identifier < identifier) > (ERROR "::" : :) (call_expression "xsgetn((__basic_file<char> *)(this + 0x38),pcVar10,iVar12)" identifier (argument_list "((__basic_file<char> *)(this + 0x38),pcVar10,iVar12)" ( (call_expression "(__basic_file<char> *)(this + 0x38)" (parenthesized_expression "(__basic_file<char> *)" ( (binary_expression "__basic_file<char> *" (binary_expression "__basic_file<char" identifier < identifier) > (pointer_expression "*" * identifier)) )) (argument_list "(this + 0x38)" ( (binary_expression "this + 0x38" identifier + number_literal) ))) , identifier , identifier ))))) ;) (if_statement "if (iVar12 == 0) {\n              bVar4 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar4 = false;\n            }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n              bVar4 = true;\n            }" { (expression_statement "bVar4 = true;" (assignment_expression "bVar4 = true" identifier = true) ;) }) (else_clause "else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar4 = false;\n            }" else (compound_statement "{\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar4 = false;\n            }" { (if_statement "if (iVar12 == -1) goto LAB_002127c6;" if (parenthesized_expression "(iVar12 == -1)" ( (binary_expression "iVar12 == -1" identifier == number_literal) )) (goto_statement "goto LAB_002127c6;" goto statement_identifier ;)) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) }))) (expression_statement "__dest_00 = *(void **)(this + 4);" (assignment_expression "__dest_00 = *(void **)(this + 4)" identifier = (pointer_expression "*(void **)(this + 4)" * (cast_expression "(void **)(this + 4)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) ))))) ;) (expression_statement "__dest = *(char **)(this + 0x80);" (assignment_expression "__dest = *(char **)(this + 0x80)" identifier = (pointer_expression "*(char **)(this + 0x80)" * (cast_expression "(char **)(this + 0x80)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x80)" ( (binary_expression "this + 0x80" identifier + number_literal) ))))) ;) (expression_statement "pcVar10 = (char *)(iVar12 + *(int *)(this + 0x84));" (assignment_expression "pcVar10 = (char *)(iVar12 + *(int *)(this + 0x84))" identifier = (cast_expression "(char *)(iVar12 + *(int *)(this + 0x84))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + *(int *)(this + 0x84))" ( (binary_expression "iVar12 + *(int *)(this + 0x84)" identifier + (pointer_expression "*(int *)(this + 0x84)" * (cast_expression "(int *)(this + 0x84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x84)" ( (binary_expression "this + 0x84" identifier + number_literal) ))))) )))) ;) (expression_statement "*(char **)(this + 0x84) = pcVar10;" (assignment_expression "*(char **)(this + 0x84) = pcVar10" (pointer_expression "*(char **)(this + 0x84)" * (cast_expression "(char **)(this + 0x84)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x84)" ( (binary_expression "this + 0x84" identifier + number_literal) )))) = identifier) ;) (if_statement "if (__dest < pcVar10) goto LAB_00212600;" if (parenthesized_expression "(__dest < pcVar10)" ( (binary_expression "__dest < pcVar10" identifier < identifier) )) (goto_statement "goto LAB_00212600;" goto statement_identifier ;)) (expression_statement "local_20[0] = __dest_00;" (assignment_expression "local_20[0] = __dest_00" (subscript_expression "local_20[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar8 == 3) break;" if (parenthesized_expression "(iVar8 == 3)" ( (binary_expression "iVar8 == 3" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (bVar4) goto LAB_002126c9;" if (parenthesized_expression "(bVar4)" ( identifier )) (goto_statement "goto LAB_002126c9;" goto statement_identifier ;)) }))) (labeled_statement "LAB_00212739:\n          __src = *(void **)(this + 0x78);" statement_identifier : (expression_statement "__src = *(void **)(this + 0x78);" (assignment_expression "__src = *(void **)(this + 0x78)" identifier = (pointer_expression "*(void **)(this + 0x78)" * (cast_expression "(void **)(this + 0x78)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x78)" ( (binary_expression "this + 0x78" identifier + number_literal) ))))) ;)) (expression_statement "uVar11 = (int)pcVar10 - (int)__src;" (assignment_expression "uVar11 = (int)pcVar10 - (int)__src" identifier = (binary_expression "(int)pcVar10 - (int)__src" (cast_expression "(int)pcVar10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)__src" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar9 = uVar6;" (assignment_expression "uVar9 = uVar6" identifier = identifier) ;) (if_statement "if ((uVar6 < uVar11) || (uVar9 = uVar11, uVar11 != 0)) {\n            memcpy(__dest_00,__src,uVar9);\n            __src = (void *)(uVar9 + *(int *)(this + 0x78));\n          }" if (parenthesized_expression "((uVar6 < uVar11) || (uVar9 = uVar11, uVar11 != 0))" ( (binary_expression "(uVar6 < uVar11) || (uVar9 = uVar11, uVar11 != 0)" (parenthesized_expression "(uVar6 < uVar11)" ( (binary_expression "uVar6 < uVar11" identifier < identifier) )) || (parenthesized_expression "(uVar9 = uVar11, uVar11 != 0)" ( (comma_expression "uVar9 = uVar11, uVar11 != 0" (assignment_expression "uVar9 = uVar11" identifier = identifier) , (binary_expression "uVar11 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n            memcpy(__dest_00,__src,uVar9);\n            __src = (void *)(uVar9 + *(int *)(this + 0x78));\n          }" { (expression_statement "memcpy(__dest_00,__src,uVar9);" (call_expression "memcpy(__dest_00,__src,uVar9)" identifier (argument_list "(__dest_00,__src,uVar9)" ( identifier , identifier , identifier ))) ;) (expression_statement "__src = (void *)(uVar9 + *(int *)(this + 0x78));" (assignment_expression "__src = (void *)(uVar9 + *(int *)(this + 0x78))" identifier = (cast_expression "(void *)(uVar9 + *(int *)(this + 0x78))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar9 + *(int *)(this + 0x78))" ( (binary_expression "uVar9 + *(int *)(this + 0x78)" identifier + (pointer_expression "*(int *)(this + 0x78)" * (cast_expression "(int *)(this + 0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x78)" ( (binary_expression "this + 0x78" identifier + number_literal) ))))) )))) ;) })) (expression_statement "*(void **)(this + 0x80) = __src;" (assignment_expression "*(void **)(this + 0x80) = __src" (pointer_expression "*(void **)(this + 0x80)" * (cast_expression "(void **)(this + 0x80)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x80)" ( (binary_expression "this + 0x80" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar8 = 3;" (assignment_expression "iVar8 = 3" identifier = number_literal) ;) (expression_statement "bVar3 = (bool)(uVar9 != 0 | bVar4);" (assignment_expression "bVar3 = (bool)(uVar9 != 0 | bVar4)" identifier = (cast_expression "(bool)(uVar9 != 0 | bVar4)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(uVar9 != 0 | bVar4)" ( (binary_expression "uVar9 != 0 | bVar4" (binary_expression "uVar9 != 0" identifier != number_literal) | identifier) )))) ;) })) (if_statement "if (0 < (int)uVar9) goto LAB_002127e8;" if (parenthesized_expression "(0 < (int)uVar9)" ( (binary_expression "0 < (int)uVar9" number_literal < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_002127e8;" goto statement_identifier ;)) (if_statement "if (!bVar4) goto LAB_002127c6;" if (parenthesized_expression "(!bVar4)" ( (unary_expression "!bVar4" ! identifier) )) (goto_statement "goto LAB_002127c6;" goto statement_identifier ;)) (labeled_statement "LAB_002126c9:\n        uVar2 = *(undefined4 *)(this + 0x5c);" statement_identifier : (expression_statement "uVar2 = *(undefined4 *)(this + 0x5c);" (assignment_expression "uVar2 = *(undefined4 *)(this + 0x5c)" identifier = (pointer_expression "*(undefined4 *)(this + 0x5c)" * (cast_expression "(undefined4 *)(this + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x5c)" ( (binary_expression "this + 0x5c" identifier + number_literal) ))))) ;)) (expression_statement "*(undefined4 *)(this + 0x14) = 0;" (assignment_expression "*(undefined4 *)(this + 0x14) = 0" (pointer_expression "*(undefined4 *)(this + 0x14)" * (cast_expression "(undefined4 *)(this + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x14)" ( (binary_expression "this + 0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x10) = 0;" (assignment_expression "*(undefined4 *)(this + 0x10) = 0" (pointer_expression "*(undefined4 *)(this + 0x10)" * (cast_expression "(undefined4 *)(this + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 4) = uVar2;" (assignment_expression "*(undefined4 *)(this + 4) = uVar2" (pointer_expression "*(undefined4 *)(this + 4)" * (cast_expression "(undefined4 *)(this + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(this + 8) = uVar2;" (assignment_expression "*(undefined4 *)(this + 8) = uVar2" (pointer_expression "*(undefined4 *)(this + 8)" * (cast_expression "(undefined4 *)(this + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(this + 0xc) = uVar2;" (assignment_expression "*(undefined4 *)(this + 0xc) = uVar2" (pointer_expression "*(undefined4 *)(this + 0xc)" * (cast_expression "(undefined4 *)(this + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(this + 0x18) = 0;" (assignment_expression "*(undefined4 *)(this + 0x18) = 0" (pointer_expression "*(undefined4 *)(this + 0x18)" * (cast_expression "(undefined4 *)(this + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x18)" ( (binary_expression "this + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "this[0x65] = (filebuf)0x0;" (assignment_expression "this[0x65] = (filebuf)0x0" (subscript_expression "this[0x65]" identifier [ number_literal ]) = (cast_expression "(filebuf)0x0" ( (type_descriptor "filebuf" type_identifier) ) number_literal)) ;) (if_statement "if (iVar8 == 1) {\n                    /* WARNING: Subroutine does not return */\n          __throw_ios_failure("basic_filebuf::underflow incomplete character in file");\n        }" if (parenthesized_expression "(iVar8 == 1)" ( (binary_expression "iVar8 == 1" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          __throw_ios_failure("basic_filebuf::underflow incomplete character in file");\n        }" { comment (expression_statement "__throw_ios_failure("basic_filebuf::underflow incomplete character in file");" (call_expression "__throw_ios_failure("basic_filebuf::underflow incomplete character in file")" identifier (argument_list "("basic_filebuf::underflow incomplete character in file")" ( (string_literal ""basic_filebuf::underflow incomplete character in file"" " string_content ") ))) ;) })) (goto_statement "goto LAB_0021286d;" goto statement_identifier ;) }))) }))) (expression_statement "uVar6 = (uint)*pbVar7;" (assignment_expression "uVar6 = (uint)*pbVar7" identifier = (binary_expression "(uint)*pbVar7" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) }))) (return_statement "return uVar6;" return identifier ;) })))
(translation_unit "uint FUN_00212480(int *param_1)\n\n{\n  int *piVar1;\n  bool bVar2;\n  bool bVar3;\n  char cVar4;\n  uint uVar5;\n  byte *pbVar6;\n  int iVar7;\n  uint uVar8;\n  void *pvVar9;\n  uint uVar10;\n  void *pvVar11;\n  int iVar12;\n  void *__dest;\n  size_t __n;\n  uint local_3c;\n  void *local_20 [4];\n  \n  if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\nLAB_0021286d:\n    uVar5 = 0xffffffff;\n  }\n  else {\n    if (*(char *)((int)param_1 + 0x66) == '\0') {\n      pbVar6 = (byte *)param_1[2];\n      if ((char)param_1[0x1c] == '\0') goto LAB_002124b2;\nLAB_00212506:\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]);\n      param_1[3] = param_1[0x1b];\n      param_1[0x1a] = (int)pbVar6;\n      param_1[1] = param_1[0x17];\n      param_1[2] = (int)pbVar6;\n      if ((byte *)param_1[0x1b] <= pbVar6) goto LAB_0021252c;\n    }\n    else {\n      iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar6 = (byte *)param_1[0x17];\n      param_1[5] = 0;\n      param_1[4] = 0;\n      param_1[1] = (int)pbVar6;\n      param_1[2] = (int)pbVar6;\n      param_1[3] = (int)pbVar6;\n      param_1[6] = 0;\n      *(undefined1 *)((int)param_1 + 0x66) = 0;\n      if ((char)param_1[0x1c] != '\0') goto LAB_00212506;\nLAB_002124b2:\n      if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    \n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    \n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }\n    uVar5 = (uint)*pbVar6;\n  }\n  return uVar5;\n}\n\n" (function_definition "uint FUN_00212480(int *param_1)\n\n{\n  int *piVar1;\n  bool bVar2;\n  bool bVar3;\n  char cVar4;\n  uint uVar5;\n  byte *pbVar6;\n  int iVar7;\n  uint uVar8;\n  void *pvVar9;\n  uint uVar10;\n  void *pvVar11;\n  int iVar12;\n  void *__dest;\n  size_t __n;\n  uint local_3c;\n  void *local_20 [4];\n  \n  if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\nLAB_0021286d:\n    uVar5 = 0xffffffff;\n  }\n  else {\n    if (*(char *)((int)param_1 + 0x66) == '\0') {\n      pbVar6 = (byte *)param_1[2];\n      if ((char)param_1[0x1c] == '\0') goto LAB_002124b2;\nLAB_00212506:\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]);\n      param_1[3] = param_1[0x1b];\n      param_1[0x1a] = (int)pbVar6;\n      param_1[1] = param_1[0x17];\n      param_1[2] = (int)pbVar6;\n      if ((byte *)param_1[0x1b] <= pbVar6) goto LAB_0021252c;\n    }\n    else {\n      iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar6 = (byte *)param_1[0x17];\n      param_1[5] = 0;\n      param_1[4] = 0;\n      param_1[1] = (int)pbVar6;\n      param_1[2] = (int)pbVar6;\n      param_1[3] = (int)pbVar6;\n      param_1[6] = 0;\n      *(undefined1 *)((int)param_1 + 0x66) = 0;\n      if ((char)param_1[0x1c] != '\0') goto LAB_00212506;\nLAB_002124b2:\n      if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    \n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    \n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }\n    uVar5 = (uint)*pbVar6;\n  }\n  return uVar5;\n}" type_identifier (function_declarator "FUN_00212480(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  bool bVar2;\n  bool bVar3;\n  char cVar4;\n  uint uVar5;\n  byte *pbVar6;\n  int iVar7;\n  uint uVar8;\n  void *pvVar9;\n  uint uVar10;\n  void *pvVar11;\n  int iVar12;\n  void *__dest;\n  size_t __n;\n  uint local_3c;\n  void *local_20 [4];\n  \n  if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\nLAB_0021286d:\n    uVar5 = 0xffffffff;\n  }\n  else {\n    if (*(char *)((int)param_1 + 0x66) == '\0') {\n      pbVar6 = (byte *)param_1[2];\n      if ((char)param_1[0x1c] == '\0') goto LAB_002124b2;\nLAB_00212506:\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]);\n      param_1[3] = param_1[0x1b];\n      param_1[0x1a] = (int)pbVar6;\n      param_1[1] = param_1[0x17];\n      param_1[2] = (int)pbVar6;\n      if ((byte *)param_1[0x1b] <= pbVar6) goto LAB_0021252c;\n    }\n    else {\n      iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar6 = (byte *)param_1[0x17];\n      param_1[5] = 0;\n      param_1[4] = 0;\n      param_1[1] = (int)pbVar6;\n      param_1[2] = (int)pbVar6;\n      param_1[3] = (int)pbVar6;\n      param_1[6] = 0;\n      *(undefined1 *)((int)param_1 + 0x66) = 0;\n      if ((char)param_1[0x1c] != '\0') goto LAB_00212506;\nLAB_002124b2:\n      if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    \n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    \n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }\n    uVar5 = (uint)*pbVar6;\n  }\n  return uVar5;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "void *pvVar9;" primitive_type (pointer_declarator "*pvVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "void *pvVar11;" primitive_type (pointer_declarator "*pvVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (declaration "void *local_20 [4];" primitive_type (pointer_declarator "*local_20 [4]" * (array_declarator "local_20 [4]" identifier [ number_literal ])) ;) (if_statement "if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\nLAB_0021286d:\n    uVar5 = 0xffffffff;\n  }\n  else {\n    if (*(char *)((int)param_1 + 0x66) == '\0') {\n      pbVar6 = (byte *)param_1[2];\n      if ((char)param_1[0x1c] == '\0') goto LAB_002124b2;\nLAB_00212506:\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]);\n      param_1[3] = param_1[0x1b];\n      param_1[0x1a] = (int)pbVar6;\n      param_1[1] = param_1[0x17];\n      param_1[2] = (int)pbVar6;\n      if ((byte *)param_1[0x1b] <= pbVar6) goto LAB_0021252c;\n    }\n    else {\n      iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar6 = (byte *)param_1[0x17];\n      param_1[5] = 0;\n      param_1[4] = 0;\n      param_1[1] = (int)pbVar6;\n      param_1[2] = (int)pbVar6;\n      param_1[3] = (int)pbVar6;\n      param_1[6] = 0;\n      *(undefined1 *)((int)param_1 + 0x66) = 0;\n      if ((char)param_1[0x1c] != '\0') goto LAB_00212506;\nLAB_002124b2:\n      if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    \n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    \n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }\n    uVar5 = (uint)*pbVar6;\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x10) & 8) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x10) & 8) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x10) & 8)" ( (binary_expression "*(byte *)(param_1 + 0x10) & 8" (pointer_expression "*(byte *)(param_1 + 0x10)" * (cast_expression "(byte *)(param_1 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0021286d:\n    uVar5 = 0xffffffff;\n  }" { (labeled_statement "LAB_0021286d:\n    uVar5 = 0xffffffff;" statement_identifier : (expression_statement "uVar5 = 0xffffffff;" (assignment_expression "uVar5 = 0xffffffff" identifier = number_literal) ;)) }) (else_clause "else {\n    if (*(char *)((int)param_1 + 0x66) == '\0') {\n      pbVar6 = (byte *)param_1[2];\n      if ((char)param_1[0x1c] == '\0') goto LAB_002124b2;\nLAB_00212506:\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]);\n      param_1[3] = param_1[0x1b];\n      param_1[0x1a] = (int)pbVar6;\n      param_1[1] = param_1[0x17];\n      param_1[2] = (int)pbVar6;\n      if ((byte *)param_1[0x1b] <= pbVar6) goto LAB_0021252c;\n    }\n    else {\n      iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar6 = (byte *)param_1[0x17];\n      param_1[5] = 0;\n      param_1[4] = 0;\n      param_1[1] = (int)pbVar6;\n      param_1[2] = (int)pbVar6;\n      param_1[3] = (int)pbVar6;\n      param_1[6] = 0;\n      *(undefined1 *)((int)param_1 + 0x66) = 0;\n      if ((char)param_1[0x1c] != '\0') goto LAB_00212506;\nLAB_002124b2:\n      if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    \n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    \n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }\n    uVar5 = (uint)*pbVar6;\n  }" else (compound_statement "{\n    if (*(char *)((int)param_1 + 0x66) == '\0') {\n      pbVar6 = (byte *)param_1[2];\n      if ((char)param_1[0x1c] == '\0') goto LAB_002124b2;\nLAB_00212506:\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]);\n      param_1[3] = param_1[0x1b];\n      param_1[0x1a] = (int)pbVar6;\n      param_1[1] = param_1[0x17];\n      param_1[2] = (int)pbVar6;\n      if ((byte *)param_1[0x1b] <= pbVar6) goto LAB_0021252c;\n    }\n    else {\n      iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar6 = (byte *)param_1[0x17];\n      param_1[5] = 0;\n      param_1[4] = 0;\n      param_1[1] = (int)pbVar6;\n      param_1[2] = (int)pbVar6;\n      param_1[3] = (int)pbVar6;\n      param_1[6] = 0;\n      *(undefined1 *)((int)param_1 + 0x66) = 0;\n      if ((char)param_1[0x1c] != '\0') goto LAB_00212506;\nLAB_002124b2:\n      if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    \n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    \n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }\n    uVar5 = (uint)*pbVar6;\n  }" { (if_statement "if (*(char *)((int)param_1 + 0x66) == '\0') {\n      pbVar6 = (byte *)param_1[2];\n      if ((char)param_1[0x1c] == '\0') goto LAB_002124b2;\nLAB_00212506:\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]);\n      param_1[3] = param_1[0x1b];\n      param_1[0x1a] = (int)pbVar6;\n      param_1[1] = param_1[0x17];\n      param_1[2] = (int)pbVar6;\n      if ((byte *)param_1[0x1b] <= pbVar6) goto LAB_0021252c;\n    }\n    else {\n      iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar6 = (byte *)param_1[0x17];\n      param_1[5] = 0;\n      param_1[4] = 0;\n      param_1[1] = (int)pbVar6;\n      param_1[2] = (int)pbVar6;\n      param_1[3] = (int)pbVar6;\n      param_1[6] = 0;\n      *(undefined1 *)((int)param_1 + 0x66) = 0;\n      if ((char)param_1[0x1c] != '\0') goto LAB_00212506;\nLAB_002124b2:\n      if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    \n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    \n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }" if (parenthesized_expression "(*(char *)((int)param_1 + 0x66) == '\0')" ( (binary_expression "*(char *)((int)param_1 + 0x66) == '\0'" (pointer_expression "*(char *)((int)param_1 + 0x66)" * (cast_expression "(char *)((int)param_1 + 0x66)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x66)" ( (binary_expression "(int)param_1 + 0x66" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pbVar6 = (byte *)param_1[2];\n      if ((char)param_1[0x1c] == '\0') goto LAB_002124b2;\nLAB_00212506:\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]);\n      param_1[3] = param_1[0x1b];\n      param_1[0x1a] = (int)pbVar6;\n      param_1[1] = param_1[0x17];\n      param_1[2] = (int)pbVar6;\n      if ((byte *)param_1[0x1b] <= pbVar6) goto LAB_0021252c;\n    }" { (expression_statement "pbVar6 = (byte *)param_1[2];" (assignment_expression "pbVar6 = (byte *)param_1[2]" identifier = (cast_expression "(byte *)param_1[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (if_statement "if ((char)param_1[0x1c] == '\0') goto LAB_002124b2;" if (parenthesized_expression "((char)param_1[0x1c] == '\0')" ( (binary_expression "(char)param_1[0x1c] == '\0'" (cast_expression "(char)param_1[0x1c]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[0x1c]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_002124b2;" goto statement_identifier ;)) (labeled_statement "LAB_00212506:\n      *(undefined1 *)(param_1 + 0x1c) = 0;" statement_identifier : (expression_statement "*(undefined1 *)(param_1 + 0x1c) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x1c) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x1c)" * (cast_expression "(undefined1 *)(param_1 + 0x1c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]);" (assignment_expression "pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a])" identifier = (cast_expression "(byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a])" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a])" ( (binary_expression "(uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]" (call_expression "(uint)((byte *)param_1[1] != pbVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((byte *)param_1[1] != pbVar6)" ( (binary_expression "(byte *)param_1[1] != pbVar6" (cast_expression "(byte *)param_1[1]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) != identifier) ))) + (subscript_expression "param_1[0x1a]" identifier [ number_literal ])) )))) ;) (expression_statement "param_1[3] = param_1[0x1b];" (assignment_expression "param_1[3] = param_1[0x1b]" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (subscript_expression "param_1[0x1b]" identifier [ number_literal ])) ;) (expression_statement "param_1[0x1a] = (int)pbVar6;" (assignment_expression "param_1[0x1a] = (int)pbVar6" (subscript_expression "param_1[0x1a]" identifier [ number_literal ]) = (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[1] = param_1[0x17];" (assignment_expression "param_1[1] = param_1[0x17]" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (subscript_expression "param_1[0x17]" identifier [ number_literal ])) ;) (expression_statement "param_1[2] = (int)pbVar6;" (assignment_expression "param_1[2] = (int)pbVar6" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if ((byte *)param_1[0x1b] <= pbVar6) goto LAB_0021252c;" if (parenthesized_expression "((byte *)param_1[0x1b] <= pbVar6)" ( (binary_expression "(byte *)param_1[0x1b] <= pbVar6" (cast_expression "(byte *)param_1[0x1b]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1b]" identifier [ number_literal ])) <= identifier) )) (goto_statement "goto LAB_0021252c;" goto statement_identifier ;)) }) (else_clause "else {\n      iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar6 = (byte *)param_1[0x17];\n      param_1[5] = 0;\n      param_1[4] = 0;\n      param_1[1] = (int)pbVar6;\n      param_1[2] = (int)pbVar6;\n      param_1[3] = (int)pbVar6;\n      param_1[6] = 0;\n      *(undefined1 *)((int)param_1 + 0x66) = 0;\n      if ((char)param_1[0x1c] != '\0') goto LAB_00212506;\nLAB_002124b2:\n      if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    \n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    \n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }" else (compound_statement "{\n      iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar6 = (byte *)param_1[0x17];\n      param_1[5] = 0;\n      param_1[4] = 0;\n      param_1[1] = (int)pbVar6;\n      param_1[2] = (int)pbVar6;\n      param_1[3] = (int)pbVar6;\n      param_1[6] = 0;\n      *(undefined1 *)((int)param_1 + 0x66) = 0;\n      if ((char)param_1[0x1c] != '\0') goto LAB_00212506;\nLAB_002124b2:\n      if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    \n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    \n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }" { (expression_statement "iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);" (assignment_expression "iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff)" identifier = (call_expression "(**(code **)(*param_1 + 0x34))(param_1,0xffffffff)" (parenthesized_expression "(**(code **)(*param_1 + 0x34))" ( (pointer_expression "**(code **)(*param_1 + 0x34)" * (pointer_expression "*(code **)(*param_1 + 0x34)" * (cast_expression "(code **)(*param_1 + 0x34)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x34)" ( (binary_expression "*param_1 + 0x34" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1,0xffffffff)" ( identifier , number_literal )))) ;) (if_statement "if (iVar12 == -1) {\n        return 0xffffffff;\n      }" if (parenthesized_expression "(iVar12 == -1)" ( (binary_expression "iVar12 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0xffffffff;\n      }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (expression_statement "pbVar6 = (byte *)param_1[0x17];" (assignment_expression "pbVar6 = (byte *)param_1[0x17]" identifier = (cast_expression "(byte *)param_1[0x17]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x17]" identifier [ number_literal ]))) ;) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[4] = 0;" (assignment_expression "param_1[4] = 0" (subscript_expression "param_1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[1] = (int)pbVar6;" (assignment_expression "param_1[1] = (int)pbVar6" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[2] = (int)pbVar6;" (assignment_expression "param_1[2] = (int)pbVar6" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[3] = (int)pbVar6;" (assignment_expression "param_1[3] = (int)pbVar6" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[6] = 0;" (assignment_expression "param_1[6] = 0" (subscript_expression "param_1[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((int)param_1 + 0x66) = 0;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x66) = 0" (pointer_expression "*(undefined1 *)((int)param_1 + 0x66)" * (cast_expression "(undefined1 *)((int)param_1 + 0x66)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x66)" ( (binary_expression "(int)param_1 + 0x66" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if ((char)param_1[0x1c] != '\0') goto LAB_00212506;" if (parenthesized_expression "((char)param_1[0x1c] != '\0')" ( (binary_expression "(char)param_1[0x1c] != '\0'" (cast_expression "(char)param_1[0x1c]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[0x1c]" identifier [ number_literal ])) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00212506;" goto statement_identifier ;)) (labeled_statement "LAB_002124b2:\n      if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    \n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    \n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }" statement_identifier : (if_statement "if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    \n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    \n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }" if (parenthesized_expression "((byte *)param_1[3] <= pbVar6)" ( (binary_expression "(byte *)param_1[3] <= pbVar6" (cast_expression "(byte *)param_1[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[3]" identifier [ number_literal ])) <= identifier) )) (compound_statement "{\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    \n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    \n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }" { (labeled_statement "LAB_0021252c:\n        iVar12 = 2;" statement_identifier : (expression_statement "iVar12 = 2;" (assignment_expression "iVar12 = 2" identifier = number_literal) ;)) (if_statement "if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }" if (parenthesized_expression "(1 < (uint)param_1[0x18])" ( (binary_expression "1 < (uint)param_1[0x18]" number_literal < (cast_expression "(uint)param_1[0x18]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0x18]" identifier [ number_literal ]))) )) (compound_statement "{\n          iVar12 = param_1[0x18];\n        }" { (expression_statement "iVar12 = param_1[0x18];" (assignment_expression "iVar12 = param_1[0x18]" identifier = (subscript_expression "param_1[0x18]" identifier [ number_literal ])) ;) })) (expression_statement "uVar5 = iVar12 - 1;" (assignment_expression "uVar5 = iVar12 - 1" identifier = (binary_expression "iVar12 - 1" identifier - number_literal)) ;) (expression_statement "piVar1 = (int *)param_1[0x1d];" (assignment_expression "piVar1 = (int *)param_1[0x1d]" identifier = (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ]))) ;) (if_statement "if (piVar1 == (int *)0x0) {\n                    \n          FUN_0022c630();\n        }" if (parenthesized_expression "(piVar1 == (int *)0x0)" ( (binary_expression "piVar1 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n          FUN_0022c630();\n        }" { (expression_statement "FUN_0022c630();" (call_expression "FUN_0022c630()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);" (assignment_expression "cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1)" identifier = (call_expression "(**(code **)(*piVar1 + 0x18))(piVar1)" (parenthesized_expression "(**(code **)(*piVar1 + 0x18))" ( (pointer_expression "**(code **)(*piVar1 + 0x18)" * (pointer_expression "*(code **)(*piVar1 + 0x18)" * (cast_expression "(code **)(*piVar1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar1 + 0x18)" ( (binary_expression "*piVar1 + 0x18" (pointer_expression "*piVar1" * identifier) + number_literal) ))))) )) (argument_list "(piVar1)" ( identifier )))) ;) (if_statement "if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }" if (parenthesized_expression "(cVar4 != '\0')" ( (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }" { (expression_statement "uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);" (assignment_expression "uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5)" identifier = (call_expression "FUN_001e7610(param_1 + 0xe,param_1[1],uVar5)" identifier (argument_list "(param_1 + 0xe,param_1[1],uVar5)" ( (binary_expression "param_1 + 0xe" identifier + number_literal) , (subscript_expression "param_1[1]" identifier [ number_literal ]) , identifier )))) ;) (if_statement "if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }" if (parenthesized_expression "(uVar8 != 0)" ( (binary_expression "uVar8 != 0" identifier != number_literal) )) (compound_statement "{\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }" { (if_statement "if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }" if (parenthesized_expression "(0 < (int)uVar8)" ( (binary_expression "0 < (int)uVar8" number_literal < (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }" { (labeled_statement "LAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];" statement_identifier : (expression_statement "pbVar6 = (byte *)param_1[0x17];" (assignment_expression "pbVar6 = (byte *)param_1[0x17]" identifier = (cast_expression "(byte *)param_1[0x17]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x17]" identifier [ number_literal ]))) ;)) (expression_statement "param_1[1] = (int)pbVar6;" (assignment_expression "param_1[1] = (int)pbVar6" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[2] = (int)pbVar6;" (assignment_expression "param_1[2] = (int)pbVar6" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }" if (parenthesized_expression "((*(byte *)(param_1 + 0x10) & 8) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x10) & 8) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x10) & 8)" ( (binary_expression "*(byte *)(param_1 + 0x10) & 8" (pointer_expression "*(byte *)(param_1 + 0x10)" * (cast_expression "(byte *)(param_1 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                param_1[3] = (int)pbVar6;\n              }" { (expression_statement "param_1[3] = (int)pbVar6;" (assignment_expression "param_1[3] = (int)pbVar6" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }) (else_clause "else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }" else (compound_statement "{\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }" { (expression_statement "param_1[3] = (int)(pbVar6 + uVar8);" (assignment_expression "param_1[3] = (int)(pbVar6 + uVar8)" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (cast_expression "(int)(pbVar6 + uVar8)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar6 + uVar8)" ( (binary_expression "pbVar6 + uVar8" identifier + identifier) )))) ;) }))) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[4] = 0;" (assignment_expression "param_1[4] = 0" (subscript_expression "param_1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[6] = 0;" (assignment_expression "param_1[6] = 0" (subscript_expression "param_1[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((int)param_1 + 0x65) = 1;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x65) = 1" (pointer_expression "*(undefined1 *)((int)param_1 + 0x65)" * (cast_expression "(undefined1 *)((int)param_1 + 0x65)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x65)" ( (binary_expression "(int)param_1 + 0x65" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (return_statement "return (uint)*pbVar6;" return (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" ( identifier )) * identifier) ;) })) (labeled_statement "LAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");" statement_identifier : (expression_statement "FUN_00226af0("basic_filebuf::underflow error reading the file");" (call_expression "FUN_00226af0("basic_filebuf::underflow error reading the file")" identifier (argument_list "("basic_filebuf::underflow error reading the file")" ( (string_literal ""basic_filebuf::underflow error reading the file"" " string_content ") ))) ;)) })) (labeled_statement "LAB_00212848:\n          iVar12 = param_1[0x17];" statement_identifier : (expression_statement "iVar12 = param_1[0x17];" (assignment_expression "iVar12 = param_1[0x17]" identifier = (subscript_expression "param_1[0x17]" identifier [ number_literal ])) ;)) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[4] = 0;" (assignment_expression "param_1[4] = 0" (subscript_expression "param_1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[1] = iVar12;" (assignment_expression "param_1[1] = iVar12" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[2] = iVar12;" (assignment_expression "param_1[2] = iVar12" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[3] = iVar12;" (assignment_expression "param_1[3] = iVar12" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[6] = 0;" (assignment_expression "param_1[6] = 0" (subscript_expression "param_1[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((int)param_1 + 0x65) = 0;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x65) = 0" (pointer_expression "*(undefined1 *)((int)param_1 + 0x65)" * (cast_expression "(undefined1 *)((int)param_1 + 0x65)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x65)" ( (binary_expression "(int)param_1 + 0x65" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_0021286d;" goto statement_identifier ;) })) (expression_statement "iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);" (assignment_expression "iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d])" identifier = (call_expression "(**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d])" (parenthesized_expression "(**(code **)(*(int *)param_1[0x1d] + 0x14))" ( (pointer_expression "**(code **)(*(int *)param_1[0x1d] + 0x14)" * (pointer_expression "*(code **)(*(int *)param_1[0x1d] + 0x14)" * (cast_expression "(code **)(*(int *)param_1[0x1d] + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_1[0x1d] + 0x14)" ( (binary_expression "*(int *)param_1[0x1d] + 0x14" (pointer_expression "*(int *)param_1[0x1d]" * (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ]))) + number_literal) ))))) )) (argument_list "((int *)param_1[0x1d])" ( (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ])) )))) ;) (if_statement "if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }" if (parenthesized_expression "(iVar7 < 1)" ( (binary_expression "iVar7 < 1" identifier < number_literal) )) (compound_statement "{\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }" { (expression_statement "iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);" (assignment_expression "iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d])" identifier = (call_expression "(**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d])" (parenthesized_expression "(**(code **)(*(int *)param_1[0x1d] + 0x20))" ( (pointer_expression "**(code **)(*(int *)param_1[0x1d] + 0x20)" * (pointer_expression "*(code **)(*(int *)param_1[0x1d] + 0x20)" * (cast_expression "(code **)(*(int *)param_1[0x1d] + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_1[0x1d] + 0x20)" ( (binary_expression "*(int *)param_1[0x1d] + 0x20" (pointer_expression "*(int *)param_1[0x1d]" * (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ]))) + number_literal) ))))) )) (argument_list "((int *)param_1[0x1d])" ( (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ])) )))) ;) (expression_statement "local_3c = iVar12 + -2 + iVar7;" (assignment_expression "local_3c = iVar12 + -2 + iVar7" identifier = (binary_expression "iVar12 + -2 + iVar7" (binary_expression "iVar12 + -2" identifier + number_literal) + identifier)) ;) (expression_statement "uVar8 = uVar5;" (assignment_expression "uVar8 = uVar5" identifier = identifier) ;) }) (else_clause "else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }" else (compound_statement "{\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }" { (expression_statement "local_3c = iVar7 * uVar5;" (assignment_expression "local_3c = iVar7 * uVar5" identifier = (binary_expression "iVar7 * uVar5" identifier * identifier)) ;) (expression_statement "uVar8 = local_3c;" (assignment_expression "uVar8 = local_3c" identifier = identifier) ;) }))) (expression_statement "__n = param_1[0x21] - param_1[0x20];" (assignment_expression "__n = param_1[0x21] - param_1[0x20]" identifier = (binary_expression "param_1[0x21] - param_1[0x20]" (subscript_expression "param_1[0x21]" identifier [ number_literal ]) - (subscript_expression "param_1[0x20]" identifier [ number_literal ]))) ;) (expression_statement "iVar12 = uVar8 - __n;" (assignment_expression "iVar12 = uVar8 - __n" identifier = (binary_expression "uVar8 - __n" identifier - identifier)) ;) (if_statement "if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }" if (parenthesized_expression "((int)uVar8 <= (int)__n)" ( (binary_expression "(int)uVar8 <= (int)__n" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)__n" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          iVar12 = 0;\n        }" { (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) })) (expression_statement "iVar7 = param_1[0x1f];" (assignment_expression "iVar7 = param_1[0x1f]" identifier = (subscript_expression "param_1[0x1f]" identifier [ number_literal ])) ;) (if_statement "if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }" if (parenthesized_expression "((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1]))" ( (binary_expression "(*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])" (parenthesized_expression "(*(char *)((int)param_1 + 0x65) == '\0')" ( (binary_expression "*(char *)((int)param_1 + 0x65) == '\0'" (pointer_expression "*(char *)((int)param_1 + 0x65)" * (cast_expression "(char *)((int)param_1 + 0x65)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x65)" ( (binary_expression "(int)param_1 + 0x65" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(param_1[3] != param_1[1])" ( (binary_expression "param_1[3] != param_1[1]" (subscript_expression "param_1[3]" identifier [ number_literal ]) != (subscript_expression "param_1[1]" identifier [ number_literal ])) ))) )) (compound_statement "{\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }" { (if_statement "if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }" if (parenthesized_expression "(iVar7 < (int)local_3c)" ( (binary_expression "iVar7 < (int)local_3c" identifier < (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }" { (expression_statement "pvVar11 = (void *)FUN_001e5180(local_3c);" (assignment_expression "pvVar11 = (void *)FUN_001e5180(local_3c)" identifier = (cast_expression "(void *)FUN_001e5180(local_3c)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5180(local_3c)" identifier (argument_list "(local_3c)" ( identifier ))))) ;) (if_statement "if (__n != 0) goto LAB_00212947;" if (parenthesized_expression "(__n != 0)" ( (binary_expression "__n != 0" identifier != number_literal) )) (goto_statement "goto LAB_00212947;" goto statement_identifier ;)) (goto_statement "goto LAB_002128b5;" goto statement_identifier ;) })) (expression_statement "pvVar11 = (void *)param_1[0x1e];" (assignment_expression "pvVar11 = (void *)param_1[0x1e]" identifier = (cast_expression "(void *)param_1[0x1e]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1e]" identifier [ number_literal ]))) ;) (if_statement "if (__n != 0) goto LAB_002128fd;" if (parenthesized_expression "(__n != 0)" ( (binary_expression "__n != 0" identifier != number_literal) )) (goto_statement "goto LAB_002128fd;" goto statement_identifier ;)) }) (else_clause "else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }" else (if_statement "if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }" if (parenthesized_expression "(__n == 0)" ( (binary_expression "__n == 0" identifier == number_literal) )) (compound_statement "{\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }" { (if_statement "if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }" if (parenthesized_expression "(iVar7 < (int)local_3c)" ( (binary_expression "iVar7 < (int)local_3c" identifier < (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }" { (expression_statement "pvVar11 = (void *)FUN_001e5180(local_3c);" (assignment_expression "pvVar11 = (void *)FUN_001e5180(local_3c)" identifier = (cast_expression "(void *)FUN_001e5180(local_3c)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5180(local_3c)" identifier (argument_list "(local_3c)" ( identifier ))))) ;) (goto_statement "goto LAB_002128b5;" goto statement_identifier ;) })) (expression_statement "pvVar11 = (void *)param_1[0x1e];" (assignment_expression "pvVar11 = (void *)param_1[0x1e]" identifier = (cast_expression "(void *)param_1[0x1e]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1e]" identifier [ number_literal ]))) ;) }) (else_clause "else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }" else (if_statement "if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }" if (parenthesized_expression "(iVar7 < (int)local_3c)" ( (binary_expression "iVar7 < (int)local_3c" identifier < (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }" { (expression_statement "pvVar11 = (void *)FUN_001e5180(local_3c);" (assignment_expression "pvVar11 = (void *)FUN_001e5180(local_3c)" identifier = (cast_expression "(void *)FUN_001e5180(local_3c)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5180(local_3c)" identifier (argument_list "(local_3c)" ( identifier ))))) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);" statement_identifier : (expression_statement "memcpy(pvVar11,(void *)param_1[0x20],__n);" (call_expression "memcpy(pvVar11,(void *)param_1[0x20],__n)" identifier (argument_list "(pvVar11,(void *)param_1[0x20],__n)" ( identifier , (cast_expression "(void *)param_1[0x20]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x20]" identifier [ number_literal ])) , identifier ))) ;)) (labeled_statement "LAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }" statement_identifier : (if_statement "if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }" if (parenthesized_expression "(param_1[0x1e] != 0)" ( (binary_expression "param_1[0x1e] != 0" (subscript_expression "param_1[0x1e]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n            FUN_001e6d50(param_1[0x1e]);\n          }" { (expression_statement "FUN_001e6d50(param_1[0x1e]);" (call_expression "FUN_001e6d50(param_1[0x1e])" identifier (argument_list "(param_1[0x1e])" ( (subscript_expression "param_1[0x1e]" identifier [ number_literal ]) ))) ;) }))) (expression_statement "param_1[0x1e] = (int)pvVar11;" (assignment_expression "param_1[0x1e] = (int)pvVar11" (subscript_expression "param_1[0x1e]" identifier [ number_literal ]) = (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[0x1f] = local_3c;" (assignment_expression "param_1[0x1f] = local_3c" (subscript_expression "param_1[0x1f]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }" else (compound_statement "{\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }" { (expression_statement "pvVar11 = (void *)param_1[0x1e];" (assignment_expression "pvVar11 = (void *)param_1[0x1e]" identifier = (cast_expression "(void *)param_1[0x1e]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1e]" identifier [ number_literal ]))) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (labeled_statement "LAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);" statement_identifier : (expression_statement "memmove(pvVar11,(void *)param_1[0x20],__n);" (call_expression "memmove(pvVar11,(void *)param_1[0x20],__n)" identifier (argument_list "(pvVar11,(void *)param_1[0x20],__n)" ( identifier , (cast_expression "(void *)param_1[0x20]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x20]" identifier [ number_literal ])) , identifier ))) ;)) (expression_statement "pvVar11 = (void *)param_1[0x1e];" (assignment_expression "pvVar11 = (void *)param_1[0x1e]" identifier = (cast_expression "(void *)param_1[0x1e]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1e]" identifier [ number_literal ]))) ;) }))))))) (expression_statement "pvVar9 = (void *)((int)pvVar11 + __n);" (assignment_expression "pvVar9 = (void *)((int)pvVar11 + __n)" identifier = (cast_expression "(void *)((int)pvVar11 + __n)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar11 + __n)" ( (binary_expression "(int)pvVar11 + __n" (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "param_1[0x20] = (int)pvVar11;" (assignment_expression "param_1[0x20] = (int)pvVar11" (subscript_expression "param_1[0x20]" identifier [ number_literal ]) = (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[0x21] = (int)pvVar9;" (assignment_expression "param_1[0x21] = (int)pvVar9" (subscript_expression "param_1[0x21]" identifier [ number_literal ]) = (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "param_1[0x15] = param_1[0x13];" (assignment_expression "param_1[0x15] = param_1[0x13]" (subscript_expression "param_1[0x15]" identifier [ number_literal ]) = (subscript_expression "param_1[0x13]" identifier [ number_literal ])) ;) (expression_statement "param_1[0x16] = param_1[0x14];" (assignment_expression "param_1[0x16] = param_1[0x14]" (subscript_expression "param_1[0x16]" identifier [ number_literal ]) = (subscript_expression "param_1[0x14]" identifier [ number_literal ])) ;) (if_statement "if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n          iVar7 = 0;\n          goto LAB_00212664;\n        }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00212664;" goto statement_identifier ;) })) (expression_statement "__dest = (void *)param_1[1];" (assignment_expression "__dest = (void *)param_1[1]" identifier = (cast_expression "(void *)param_1[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (expression_statement "local_20[0] = __dest;" (assignment_expression "local_20[0] = __dest" (subscript_expression "local_20[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (pvVar9 <= pvVar11) goto LAB_00212654;" if (parenthesized_expression "(pvVar9 <= pvVar11)" ( (binary_expression "pvVar9 <= pvVar11" identifier <= identifier) )) (goto_statement "goto LAB_00212654;" goto statement_identifier ;)) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (labeled_statement "LAB_00212600:\n        local_20[0] = __dest;" statement_identifier : (expression_statement "local_20[0] = __dest;" (assignment_expression "local_20[0] = __dest" (subscript_expression "local_20[0]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);" (assignment_expression "iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20)" identifier = (call_expression "(**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20)" (parenthesized_expression "(**(code **)(*(int *)param_1[0x1d] + 0x10))" ( (pointer_expression "**(code **)(*(int *)param_1[0x1d] + 0x10)" * (pointer_expression "*(code **)(*(int *)param_1[0x1d] + 0x10)" * (cast_expression "(code **)(*(int *)param_1[0x1d] + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_1[0x1d] + 0x10)" ( (binary_expression "*(int *)param_1[0x1d] + 0x10" (pointer_expression "*(int *)param_1[0x1d]" * (cast_expression "(int *)param_1[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1d]" identifier [ number_literal ]))) + number_literal) ))))) )) (argument_list "(param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20)" ( (subscript_expression "param_1[0x1d]" identifier [ number_literal ]) , (binary_expression "param_1 + 0x13" identifier + number_literal) , identifier , identifier , (binary_expression "param_1 + 0x20" identifier + number_literal) , identifier , (binary_expression "uVar5 + (int)__dest" identifier + (cast_expression "(int)__dest" ( (type_descriptor "int" primitive_type) ) identifier)) , identifier )))) ;) (if_statement "if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }" if (parenthesized_expression "(iVar7 == 3)" ( (binary_expression "iVar7 == 3" identifier == number_literal) )) (compound_statement "{\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }" { (expression_statement "pvVar9 = (void *)param_1[0x21];" (assignment_expression "pvVar9 = (void *)param_1[0x21]" identifier = (cast_expression "(void *)param_1[0x21]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x21]" identifier [ number_literal ]))) ;) (expression_statement "__dest = (void *)param_1[1];" (assignment_expression "__dest = (void *)param_1[1]" identifier = (cast_expression "(void *)param_1[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_00212739;" goto statement_identifier ;) })) (expression_statement "uVar8 = (int)local_20[0] - param_1[1];" (assignment_expression "uVar8 = (int)local_20[0] - param_1[1]" identifier = (binary_expression "(int)local_20[0] - param_1[1]" (cast_expression "(int)local_20[0]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_20[0]" identifier [ number_literal ])) - (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (if_statement "if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }" if (parenthesized_expression "(iVar7 == 2)" ( (binary_expression "iVar7 == 2" identifier == number_literal) )) (compound_statement "{\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }" { (if_statement "if (0 < (int)uVar8) goto LAB_002127e8;" if (parenthesized_expression "(0 < (int)uVar8)" ( (binary_expression "0 < (int)uVar8" number_literal < (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_002127e8;" goto statement_identifier ;)) (if_statement "if (!bVar3) {\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }" if (parenthesized_expression "(!bVar3)" ( (unary_expression "!bVar3" ! identifier) )) (compound_statement "{\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }" { (expression_statement "FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");" (call_expression "FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file")" identifier (argument_list "("basic_filebuf::underflow invalid byte sequence in file")" ( (string_literal ""basic_filebuf::underflow invalid byte sequence in file"" " string_content ") ))) ;) })) (goto_statement "goto LAB_00212848;" goto statement_identifier ;) })) (expression_statement "bVar2 = (bool)(uVar8 != 0 | bVar3);" (assignment_expression "bVar2 = (bool)(uVar8 != 0 | bVar3)" identifier = (cast_expression "(bool)(uVar8 != 0 | bVar3)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(uVar8 != 0 | bVar3)" ( (binary_expression "uVar8 != 0 | bVar3" (binary_expression "uVar8 != 0" identifier != number_literal) | identifier) )))) ;) (while_statement "while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }" while (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (compound_statement "{\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }" { (labeled_statement "LAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }" statement_identifier : (while_statement "while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }" { (expression_statement "pvVar9 = (void *)param_1[0x21];" (assignment_expression "pvVar9 = (void *)param_1[0x21]" identifier = (cast_expression "(void *)param_1[0x21]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x21]" identifier [ number_literal ]))) ;) (expression_statement "iVar12 = 1;" (assignment_expression "iVar12 = 1" identifier = number_literal) ;) (expression_statement "__n = (int)pvVar9 - param_1[0x1e];" (assignment_expression "__n = (int)pvVar9 - param_1[0x1e]" identifier = (binary_expression "(int)pvVar9 - param_1[0x1e]" (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (subscript_expression "param_1[0x1e]" identifier [ number_literal ]))) ;) (labeled_statement "LAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }" statement_identifier : (if_statement "if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }" if (parenthesized_expression "(param_1[0x1f] < (int)(__n + iVar12))" ( (binary_expression "param_1[0x1f] < (int)(__n + iVar12)" (subscript_expression "param_1[0x1f]" identifier [ number_literal ]) < (cast_expression "(int)(__n + iVar12)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(__n + iVar12)" ( (binary_expression "__n + iVar12" identifier + identifier) )))) )) (compound_statement "{\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }" { (expression_statement "FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");" (call_expression "FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid")" identifier (argument_list "("basic_filebuf::underflow codecvt::max_length() is not valid")" ( (string_literal ""basic_filebuf::underflow codecvt::max_length() is not valid"" " string_content ") ))) ;) }))) (expression_statement "iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);" (assignment_expression "iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12)" identifier = (call_expression "FUN_001e7610(param_1 + 0xe,pvVar9,iVar12)" identifier (argument_list "(param_1 + 0xe,pvVar9,iVar12)" ( (binary_expression "param_1 + 0xe" identifier + number_literal) , identifier , identifier )))) ;) (if_statement "if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n              bVar3 = true;\n            }" { (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) }) (else_clause "else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }" else (compound_statement "{\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }" { (if_statement "if (iVar12 == -1) goto LAB_002127c6;" if (parenthesized_expression "(iVar12 == -1)" ( (binary_expression "iVar12 == -1" identifier == number_literal) )) (goto_statement "goto LAB_002127c6;" goto statement_identifier ;)) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) }))) (expression_statement "__dest = (void *)param_1[1];" (assignment_expression "__dest = (void *)param_1[1]" identifier = (cast_expression "(void *)param_1[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "pvVar11 = (void *)param_1[0x20];" (assignment_expression "pvVar11 = (void *)param_1[0x20]" identifier = (cast_expression "(void *)param_1[0x20]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x20]" identifier [ number_literal ]))) ;) (expression_statement "pvVar9 = (void *)(iVar12 + param_1[0x21]);" (assignment_expression "pvVar9 = (void *)(iVar12 + param_1[0x21])" identifier = (cast_expression "(void *)(iVar12 + param_1[0x21])" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + param_1[0x21])" ( (binary_expression "iVar12 + param_1[0x21]" identifier + (subscript_expression "param_1[0x21]" identifier [ number_literal ])) )))) ;) (expression_statement "param_1[0x21] = (int)pvVar9;" (assignment_expression "param_1[0x21] = (int)pvVar9" (subscript_expression "param_1[0x21]" identifier [ number_literal ]) = (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (pvVar11 < pvVar9) goto LAB_00212600;" if (parenthesized_expression "(pvVar11 < pvVar9)" ( (binary_expression "pvVar11 < pvVar9" identifier < identifier) )) (goto_statement "goto LAB_00212600;" goto statement_identifier ;)) (expression_statement "local_20[0] = __dest;" (assignment_expression "local_20[0] = __dest" (subscript_expression "local_20[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar7 == 3) break;" if (parenthesized_expression "(iVar7 == 3)" ( (binary_expression "iVar7 == 3" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (bVar3) goto LAB_002126c9;" if (parenthesized_expression "(bVar3)" ( identifier )) (goto_statement "goto LAB_002126c9;" goto statement_identifier ;)) }))) (labeled_statement "LAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];" statement_identifier : (expression_statement "pvVar11 = (void *)param_1[0x1e];" (assignment_expression "pvVar11 = (void *)param_1[0x1e]" identifier = (cast_expression "(void *)param_1[0x1e]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1e]" identifier [ number_literal ]))) ;)) (expression_statement "uVar10 = (int)pvVar9 - (int)pvVar11;" (assignment_expression "uVar10 = (int)pvVar9 - (int)pvVar11" identifier = (binary_expression "(int)pvVar9 - (int)pvVar11" (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar8 = uVar5;" (assignment_expression "uVar8 = uVar5" identifier = identifier) ;) (if_statement "if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }" if (parenthesized_expression "((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0))" ( (binary_expression "(uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)" (parenthesized_expression "(uVar5 < uVar10)" ( (binary_expression "uVar5 < uVar10" identifier < identifier) )) || (parenthesized_expression "(uVar8 = uVar10, uVar10 != 0)" ( (comma_expression "uVar8 = uVar10, uVar10 != 0" (assignment_expression "uVar8 = uVar10" identifier = identifier) , (binary_expression "uVar10 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }" { (expression_statement "memcpy(__dest,pvVar11,uVar8);" (call_expression "memcpy(__dest,pvVar11,uVar8)" identifier (argument_list "(__dest,pvVar11,uVar8)" ( identifier , identifier , identifier ))) ;) (expression_statement "pvVar11 = (void *)(uVar8 + param_1[0x1e]);" (assignment_expression "pvVar11 = (void *)(uVar8 + param_1[0x1e])" identifier = (cast_expression "(void *)(uVar8 + param_1[0x1e])" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar8 + param_1[0x1e])" ( (binary_expression "uVar8 + param_1[0x1e]" identifier + (subscript_expression "param_1[0x1e]" identifier [ number_literal ])) )))) ;) })) (expression_statement "param_1[0x20] = (int)pvVar11;" (assignment_expression "param_1[0x20] = (int)pvVar11" (subscript_expression "param_1[0x20]" identifier [ number_literal ]) = (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iVar7 = 3;" (assignment_expression "iVar7 = 3" identifier = number_literal) ;) (expression_statement "bVar2 = (bool)(uVar8 != 0 | bVar3);" (assignment_expression "bVar2 = (bool)(uVar8 != 0 | bVar3)" identifier = (cast_expression "(bool)(uVar8 != 0 | bVar3)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(uVar8 != 0 | bVar3)" ( (binary_expression "uVar8 != 0 | bVar3" (binary_expression "uVar8 != 0" identifier != number_literal) | identifier) )))) ;) })) (if_statement "if (0 < (int)uVar8) goto LAB_002127e8;" if (parenthesized_expression "(0 < (int)uVar8)" ( (binary_expression "0 < (int)uVar8" number_literal < (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_002127e8;" goto statement_identifier ;)) (if_statement "if (!bVar3) goto LAB_002127c6;" if (parenthesized_expression "(!bVar3)" ( (unary_expression "!bVar3" ! identifier) )) (goto_statement "goto LAB_002127c6;" goto statement_identifier ;)) (labeled_statement "LAB_002126c9:\n        iVar12 = param_1[0x17];" statement_identifier : (expression_statement "iVar12 = param_1[0x17];" (assignment_expression "iVar12 = param_1[0x17]" identifier = (subscript_expression "param_1[0x17]" identifier [ number_literal ])) ;)) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[4] = 0;" (assignment_expression "param_1[4] = 0" (subscript_expression "param_1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[1] = iVar12;" (assignment_expression "param_1[1] = iVar12" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[2] = iVar12;" (assignment_expression "param_1[2] = iVar12" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[3] = iVar12;" (assignment_expression "param_1[3] = iVar12" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[6] = 0;" (assignment_expression "param_1[6] = 0" (subscript_expression "param_1[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((int)param_1 + 0x65) = 0;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x65) = 0" (pointer_expression "*(undefined1 *)((int)param_1 + 0x65)" * (cast_expression "(undefined1 *)((int)param_1 + 0x65)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x65)" ( (binary_expression "(int)param_1 + 0x65" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if (iVar7 == 1) {\n                    \n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }" if (parenthesized_expression "(iVar7 == 1)" ( (binary_expression "iVar7 == 1" identifier == number_literal) )) (compound_statement "{\n                    \n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }" { (expression_statement "FUN_00226af0("basic_filebuf::underflow incomplete character in file");" (call_expression "FUN_00226af0("basic_filebuf::underflow incomplete character in file")" identifier (argument_list "("basic_filebuf::underflow incomplete character in file")" ( (string_literal ""basic_filebuf::underflow incomplete character in file"" " string_content ") ))) ;) })) (goto_statement "goto LAB_0021286d;" goto statement_identifier ;) }))) }))) (expression_statement "uVar5 = (uint)*pbVar6;" (assignment_expression "uVar5 = (uint)*pbVar6" identifier = (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) }))) (return_statement "return uVar5;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != IDENT) ))) + (subscript_expression IDENT [ LIT ])) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) <= IDENT) )) (goto_statement goto statement_identifier ;)) }) (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 , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) <= IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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 ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (subscript_expression IDENT [ LIT ]) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (return_statement return (binary_expression (parenthesized_expression ( IDENT )) * IDENT) ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;)) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = 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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) + LIT) ))))) )) (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) + LIT) ))))) )) (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) , IDENT ))) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }))))))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) + LIT) ))))) )) (argument_list ( (subscript_expression IDENT [ LIT ]) , (binary_expression IDENT + LIT) , IDENT , IDENT , (binary_expression IDENT + LIT) , IDENT , (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) - (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) | IDENT) )))) ;) (while_statement while (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (labeled_statement statement_identifier : (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (subscript_expression IDENT [ LIT ]))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) < (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (subscript_expression IDENT [ LIT ])) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) }))) (labeled_statement 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 (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (subscript_expression IDENT [ LIT ])) )))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) | IDENT) )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) (goto_statement goto statement_identifier ;) }))) }))) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) }))) (return_statement return IDENT ;) })))
(function_definition "uint FUN_00212480(int *param_1)\n\n{\n  int *piVar1;\n  bool bVar2;\n  bool bVar3;\n  char cVar4;\n  uint uVar5;\n  byte *pbVar6;\n  int iVar7;\n  uint uVar8;\n  void *pvVar9;\n  uint uVar10;\n  void *pvVar11;\n  int iVar12;\n  void *__dest;\n  size_t __n;\n  uint local_3c;\n  void *local_20 [4];\n  \n  if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\nLAB_0021286d:\n    uVar5 = 0xffffffff;\n  }\n  else {\n    if (*(char *)((int)param_1 + 0x66) == '\0') {\n      pbVar6 = (byte *)param_1[2];\n      if ((char)param_1[0x1c] == '\0') goto LAB_002124b2;\nLAB_00212506:\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]);\n      param_1[3] = param_1[0x1b];\n      param_1[0x1a] = (int)pbVar6;\n      param_1[1] = param_1[0x17];\n      param_1[2] = (int)pbVar6;\n      if ((byte *)param_1[0x1b] <= pbVar6) goto LAB_0021252c;\n    }\n    else {\n      iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar6 = (byte *)param_1[0x17];\n      param_1[5] = 0;\n      param_1[4] = 0;\n      param_1[1] = (int)pbVar6;\n      param_1[2] = (int)pbVar6;\n      param_1[3] = (int)pbVar6;\n      param_1[6] = 0;\n      *(undefined1 *)((int)param_1 + 0x66) = 0;\n      if ((char)param_1[0x1c] != '\0') goto LAB_00212506;\nLAB_002124b2:\n      if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    \n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    \n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }\n    uVar5 = (uint)*pbVar6;\n  }\n  return uVar5;\n}" (type_identifier "uint") (function_declarator "FUN_00212480(int *param_1)" (identifier "FUN_00212480") (parameter_list "(int *param_1)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  int *piVar1;\n  bool bVar2;\n  bool bVar3;\n  char cVar4;\n  uint uVar5;\n  byte *pbVar6;\n  int iVar7;\n  uint uVar8;\n  void *pvVar9;\n  uint uVar10;\n  void *pvVar11;\n  int iVar12;\n  void *__dest;\n  size_t __n;\n  uint local_3c;\n  void *local_20 [4];\n  \n  if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\nLAB_0021286d:\n    uVar5 = 0xffffffff;\n  }\n  else {\n    if (*(char *)((int)param_1 + 0x66) == '\0') {\n      pbVar6 = (byte *)param_1[2];\n      if ((char)param_1[0x1c] == '\0') goto LAB_002124b2;\nLAB_00212506:\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]);\n      param_1[3] = param_1[0x1b];\n      param_1[0x1a] = (int)pbVar6;\n      param_1[1] = param_1[0x17];\n      param_1[2] = (int)pbVar6;\n      if ((byte *)param_1[0x1b] <= pbVar6) goto LAB_0021252c;\n    }\n    else {\n      iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar6 = (byte *)param_1[0x17];\n      param_1[5] = 0;\n      param_1[4] = 0;\n      param_1[1] = (int)pbVar6;\n      param_1[2] = (int)pbVar6;\n      param_1[3] = (int)pbVar6;\n      param_1[6] = 0;\n      *(undefined1 *)((int)param_1 + 0x66) = 0;\n      if ((char)param_1[0x1c] != '\0') goto LAB_00212506;\nLAB_002124b2:\n      if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    \n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    \n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }\n    uVar5 = (uint)*pbVar6;\n  }\n  return uVar5;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (declaration "bool bVar3;" (primitive_type "bool") (identifier "bVar3") (; ";")) (declaration "char cVar4;" (primitive_type "char") (identifier "cVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "void *pvVar9;" (primitive_type "void") (pointer_declarator "*pvVar9" (* "*") (identifier "pvVar9")) (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "void *pvVar11;" (primitive_type "void") (pointer_declarator "*pvVar11" (* "*") (identifier "pvVar11")) (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "void *__dest;" (primitive_type "void") (pointer_declarator "*__dest" (* "*") (identifier "__dest")) (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "uint local_3c;" (type_identifier "uint") (identifier "local_3c") (; ";")) (declaration "void *local_20 [4];" (primitive_type "void") (pointer_declarator "*local_20 [4]" (* "*") (array_declarator "local_20 [4]" (identifier "local_20") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\nLAB_0021286d:\n    uVar5 = 0xffffffff;\n  }\n  else {\n    if (*(char *)((int)param_1 + 0x66) == '\0') {\n      pbVar6 = (byte *)param_1[2];\n      if ((char)param_1[0x1c] == '\0') goto LAB_002124b2;\nLAB_00212506:\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]);\n      param_1[3] = param_1[0x1b];\n      param_1[0x1a] = (int)pbVar6;\n      param_1[1] = param_1[0x17];\n      param_1[2] = (int)pbVar6;\n      if ((byte *)param_1[0x1b] <= pbVar6) goto LAB_0021252c;\n    }\n    else {\n      iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar6 = (byte *)param_1[0x17];\n      param_1[5] = 0;\n      param_1[4] = 0;\n      param_1[1] = (int)pbVar6;\n      param_1[2] = (int)pbVar6;\n      param_1[3] = (int)pbVar6;\n      param_1[6] = 0;\n      *(undefined1 *)((int)param_1 + 0x66) = 0;\n      if ((char)param_1[0x1c] != '\0') goto LAB_00212506;\nLAB_002124b2:\n      if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    \n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    \n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }\n    uVar5 = (uint)*pbVar6;\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x10) & 8) == 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x10) & 8) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x10) & 8)" (( "(") (binary_expression "*(byte *)(param_1 + 0x10) & 8" (pointer_expression "*(byte *)(param_1 + 0x10)" (* "*") (cast_expression "(byte *)(param_1 + 0x10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0021286d:\n    uVar5 = 0xffffffff;\n  }" ({ "{") (labeled_statement "LAB_0021286d:\n    uVar5 = 0xffffffff;" (statement_identifier "LAB_0021286d") (: ":") (expression_statement "uVar5 = 0xffffffff;" (assignment_expression "uVar5 = 0xffffffff" (identifier "uVar5") (= "=") (number_literal "0xffffffff")) (; ";"))) (} "}")) (else_clause "else {\n    if (*(char *)((int)param_1 + 0x66) == '\0') {\n      pbVar6 = (byte *)param_1[2];\n      if ((char)param_1[0x1c] == '\0') goto LAB_002124b2;\nLAB_00212506:\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]);\n      param_1[3] = param_1[0x1b];\n      param_1[0x1a] = (int)pbVar6;\n      param_1[1] = param_1[0x17];\n      param_1[2] = (int)pbVar6;\n      if ((byte *)param_1[0x1b] <= pbVar6) goto LAB_0021252c;\n    }\n    else {\n      iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar6 = (byte *)param_1[0x17];\n      param_1[5] = 0;\n      param_1[4] = 0;\n      param_1[1] = (int)pbVar6;\n      param_1[2] = (int)pbVar6;\n      param_1[3] = (int)pbVar6;\n      param_1[6] = 0;\n      *(undefined1 *)((int)param_1 + 0x66) = 0;\n      if ((char)param_1[0x1c] != '\0') goto LAB_00212506;\nLAB_002124b2:\n      if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    \n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    \n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }\n    uVar5 = (uint)*pbVar6;\n  }" (else "else") (compound_statement "{\n    if (*(char *)((int)param_1 + 0x66) == '\0') {\n      pbVar6 = (byte *)param_1[2];\n      if ((char)param_1[0x1c] == '\0') goto LAB_002124b2;\nLAB_00212506:\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]);\n      param_1[3] = param_1[0x1b];\n      param_1[0x1a] = (int)pbVar6;\n      param_1[1] = param_1[0x17];\n      param_1[2] = (int)pbVar6;\n      if ((byte *)param_1[0x1b] <= pbVar6) goto LAB_0021252c;\n    }\n    else {\n      iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar6 = (byte *)param_1[0x17];\n      param_1[5] = 0;\n      param_1[4] = 0;\n      param_1[1] = (int)pbVar6;\n      param_1[2] = (int)pbVar6;\n      param_1[3] = (int)pbVar6;\n      param_1[6] = 0;\n      *(undefined1 *)((int)param_1 + 0x66) = 0;\n      if ((char)param_1[0x1c] != '\0') goto LAB_00212506;\nLAB_002124b2:\n      if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    \n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    \n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }\n    uVar5 = (uint)*pbVar6;\n  }" ({ "{") (if_statement "if (*(char *)((int)param_1 + 0x66) == '\0') {\n      pbVar6 = (byte *)param_1[2];\n      if ((char)param_1[0x1c] == '\0') goto LAB_002124b2;\nLAB_00212506:\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]);\n      param_1[3] = param_1[0x1b];\n      param_1[0x1a] = (int)pbVar6;\n      param_1[1] = param_1[0x17];\n      param_1[2] = (int)pbVar6;\n      if ((byte *)param_1[0x1b] <= pbVar6) goto LAB_0021252c;\n    }\n    else {\n      iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar6 = (byte *)param_1[0x17];\n      param_1[5] = 0;\n      param_1[4] = 0;\n      param_1[1] = (int)pbVar6;\n      param_1[2] = (int)pbVar6;\n      param_1[3] = (int)pbVar6;\n      param_1[6] = 0;\n      *(undefined1 *)((int)param_1 + 0x66) = 0;\n      if ((char)param_1[0x1c] != '\0') goto LAB_00212506;\nLAB_002124b2:\n      if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    \n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    \n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }" (if "if") (parenthesized_expression "(*(char *)((int)param_1 + 0x66) == '\0')" (( "(") (binary_expression "*(char *)((int)param_1 + 0x66) == '\0'" (pointer_expression "*(char *)((int)param_1 + 0x66)" (* "*") (cast_expression "(char *)((int)param_1 + 0x66)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x66)" (( "(") (binary_expression "(int)param_1 + 0x66" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x66")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      pbVar6 = (byte *)param_1[2];\n      if ((char)param_1[0x1c] == '\0') goto LAB_002124b2;\nLAB_00212506:\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]);\n      param_1[3] = param_1[0x1b];\n      param_1[0x1a] = (int)pbVar6;\n      param_1[1] = param_1[0x17];\n      param_1[2] = (int)pbVar6;\n      if ((byte *)param_1[0x1b] <= pbVar6) goto LAB_0021252c;\n    }" ({ "{") (expression_statement "pbVar6 = (byte *)param_1[2];" (assignment_expression "pbVar6 = (byte *)param_1[2]" (identifier "pbVar6") (= "=") (cast_expression "(byte *)param_1[2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if ((char)param_1[0x1c] == '\0') goto LAB_002124b2;" (if "if") (parenthesized_expression "((char)param_1[0x1c] == '\0')" (( "(") (binary_expression "(char)param_1[0x1c] == '\0'" (cast_expression "(char)param_1[0x1c]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "param_1[0x1c]" (identifier "param_1") ([ "[") (number_literal "0x1c") (] "]"))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_002124b2;" (goto "goto") (statement_identifier "LAB_002124b2") (; ";"))) (labeled_statement "LAB_00212506:\n      *(undefined1 *)(param_1 + 0x1c) = 0;" (statement_identifier "LAB_00212506") (: ":") (expression_statement "*(undefined1 *)(param_1 + 0x1c) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x1c) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x1c)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x1c)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (number_literal "0")) (; ";"))) (expression_statement "pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]);" (assignment_expression "pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a])" (identifier "pbVar6") (= "=") (cast_expression "(byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a])" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a])" (( "(") (binary_expression "(uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]" (call_expression "(uint)((byte *)param_1[1] != pbVar6)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((byte *)param_1[1] != pbVar6)" (( "(") (binary_expression "(byte *)param_1[1] != pbVar6" (cast_expression "(byte *)param_1[1]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (!= "!=") (identifier "pbVar6")) () ")"))) (+ "+") (subscript_expression "param_1[0x1a]" (identifier "param_1") ([ "[") (number_literal "0x1a") (] "]"))) () ")")))) (; ";")) (expression_statement "param_1[3] = param_1[0x1b];" (assignment_expression "param_1[3] = param_1[0x1b]" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (subscript_expression "param_1[0x1b]" (identifier "param_1") ([ "[") (number_literal "0x1b") (] "]"))) (; ";")) (expression_statement "param_1[0x1a] = (int)pbVar6;" (assignment_expression "param_1[0x1a] = (int)pbVar6" (subscript_expression "param_1[0x1a]" (identifier "param_1") ([ "[") (number_literal "0x1a") (] "]")) (= "=") (cast_expression "(int)pbVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar6"))) (; ";")) (expression_statement "param_1[1] = param_1[0x17];" (assignment_expression "param_1[1] = param_1[0x17]" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "param_1[0x17]" (identifier "param_1") ([ "[") (number_literal "0x17") (] "]"))) (; ";")) (expression_statement "param_1[2] = (int)pbVar6;" (assignment_expression "param_1[2] = (int)pbVar6" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)pbVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar6"))) (; ";")) (if_statement "if ((byte *)param_1[0x1b] <= pbVar6) goto LAB_0021252c;" (if "if") (parenthesized_expression "((byte *)param_1[0x1b] <= pbVar6)" (( "(") (binary_expression "(byte *)param_1[0x1b] <= pbVar6" (cast_expression "(byte *)param_1[0x1b]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x1b]" (identifier "param_1") ([ "[") (number_literal "0x1b") (] "]"))) (<= "<=") (identifier "pbVar6")) () ")")) (goto_statement "goto LAB_0021252c;" (goto "goto") (statement_identifier "LAB_0021252c") (; ";"))) (} "}")) (else_clause "else {\n      iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar6 = (byte *)param_1[0x17];\n      param_1[5] = 0;\n      param_1[4] = 0;\n      param_1[1] = (int)pbVar6;\n      param_1[2] = (int)pbVar6;\n      param_1[3] = (int)pbVar6;\n      param_1[6] = 0;\n      *(undefined1 *)((int)param_1 + 0x66) = 0;\n      if ((char)param_1[0x1c] != '\0') goto LAB_00212506;\nLAB_002124b2:\n      if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    \n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    \n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }" (else "else") (compound_statement "{\n      iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);\n      if (iVar12 == -1) {\n        return 0xffffffff;\n      }\n      pbVar6 = (byte *)param_1[0x17];\n      param_1[5] = 0;\n      param_1[4] = 0;\n      param_1[1] = (int)pbVar6;\n      param_1[2] = (int)pbVar6;\n      param_1[3] = (int)pbVar6;\n      param_1[6] = 0;\n      *(undefined1 *)((int)param_1 + 0x66) = 0;\n      if ((char)param_1[0x1c] != '\0') goto LAB_00212506;\nLAB_002124b2:\n      if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    \n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    \n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }\n    }" ({ "{") (expression_statement "iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);" (assignment_expression "iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff)" (identifier "iVar12") (= "=") (call_expression "(**(code **)(*param_1 + 0x34))(param_1,0xffffffff)" (parenthesized_expression "(**(code **)(*param_1 + 0x34))" (( "(") (pointer_expression "**(code **)(*param_1 + 0x34)" (* "*") (pointer_expression "*(code **)(*param_1 + 0x34)" (* "*") (cast_expression "(code **)(*param_1 + 0x34)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x34)" (( "(") (binary_expression "*param_1 + 0x34" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x34")) () ")"))))) () ")")) (argument_list "(param_1,0xffffffff)" (( "(") (identifier "param_1") (, ",") (number_literal "0xffffffff") () ")")))) (; ";")) (if_statement "if (iVar12 == -1) {\n        return 0xffffffff;\n      }" (if "if") (parenthesized_expression "(iVar12 == -1)" (( "(") (binary_expression "iVar12 == -1" (identifier "iVar12") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n        return 0xffffffff;\n      }" ({ "{") (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}"))) (expression_statement "pbVar6 = (byte *)param_1[0x17];" (assignment_expression "pbVar6 = (byte *)param_1[0x17]" (identifier "pbVar6") (= "=") (cast_expression "(byte *)param_1[0x17]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x17]" (identifier "param_1") ([ "[") (number_literal "0x17") (] "]")))) (; ";")) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[4] = 0;" (assignment_expression "param_1[4] = 0" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[1] = (int)pbVar6;" (assignment_expression "param_1[1] = (int)pbVar6" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)pbVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar6"))) (; ";")) (expression_statement "param_1[2] = (int)pbVar6;" (assignment_expression "param_1[2] = (int)pbVar6" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)pbVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar6"))) (; ";")) (expression_statement "param_1[3] = (int)pbVar6;" (assignment_expression "param_1[3] = (int)pbVar6" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(int)pbVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar6"))) (; ";")) (expression_statement "param_1[6] = 0;" (assignment_expression "param_1[6] = 0" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)((int)param_1 + 0x66) = 0;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x66) = 0" (pointer_expression "*(undefined1 *)((int)param_1 + 0x66)" (* "*") (cast_expression "(undefined1 *)((int)param_1 + 0x66)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x66)" (( "(") (binary_expression "(int)param_1 + 0x66" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x66")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if ((char)param_1[0x1c] != '\0') goto LAB_00212506;" (if "if") (parenthesized_expression "((char)param_1[0x1c] != '\0')" (( "(") (binary_expression "(char)param_1[0x1c] != '\0'" (cast_expression "(char)param_1[0x1c]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "param_1[0x1c]" (identifier "param_1") ([ "[") (number_literal "0x1c") (] "]"))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_00212506;" (goto "goto") (statement_identifier "LAB_00212506") (; ";"))) (labeled_statement "LAB_002124b2:\n      if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    \n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    \n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }" (statement_identifier "LAB_002124b2") (: ":") (if_statement "if ((byte *)param_1[3] <= pbVar6) {\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    \n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    \n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }" (if "if") (parenthesized_expression "((byte *)param_1[3] <= pbVar6)" (( "(") (binary_expression "(byte *)param_1[3] <= pbVar6" (cast_expression "(byte *)param_1[3]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (identifier "pbVar6")) () ")")) (compound_statement "{\nLAB_0021252c:\n        iVar12 = 2;\n        if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }\n        uVar5 = iVar12 - 1;\n        piVar1 = (int *)param_1[0x1d];\n        if (piVar1 == (int *)0x0) {\n                    \n          FUN_0022c630();\n        }\n        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);\n        if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);\n        if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }\n        __n = param_1[0x21] - param_1[0x20];\n        iVar12 = uVar8 - __n;\n        if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }\n        iVar7 = param_1[0x1f];\n        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        pvVar9 = (void *)((int)pvVar11 + __n);\n        param_1[0x20] = (int)pvVar11;\n        param_1[0x21] = (int)pvVar9;\n        param_1[0x15] = param_1[0x13];\n        param_1[0x16] = param_1[0x14];\n        if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }\n        __dest = (void *)param_1[1];\n        iVar7 = 0;\n        local_20[0] = __dest;\n        if (pvVar9 <= pvVar11) goto LAB_00212654;\n        bVar3 = false;\nLAB_00212600:\n        local_20[0] = __dest;\n        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);\n        if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }\n        uVar8 = (int)local_20[0] - param_1[1];\n        if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }\n        bVar2 = (bool)(uVar8 != 0 | bVar3);\n        while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }\n        if (0 < (int)uVar8) goto LAB_002127e8;\n        if (!bVar3) goto LAB_002127c6;\nLAB_002126c9:\n        iVar12 = param_1[0x17];\n        param_1[5] = 0;\n        param_1[4] = 0;\n        param_1[1] = iVar12;\n        param_1[2] = iVar12;\n        param_1[3] = iVar12;\n        param_1[6] = 0;\n        *(undefined1 *)((int)param_1 + 0x65) = 0;\n        if (iVar7 == 1) {\n                    \n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }\n        goto LAB_0021286d;\n      }" ({ "{") (labeled_statement "LAB_0021252c:\n        iVar12 = 2;" (statement_identifier "LAB_0021252c") (: ":") (expression_statement "iVar12 = 2;" (assignment_expression "iVar12 = 2" (identifier "iVar12") (= "=") (number_literal "2")) (; ";"))) (if_statement "if (1 < (uint)param_1[0x18]) {\n          iVar12 = param_1[0x18];\n        }" (if "if") (parenthesized_expression "(1 < (uint)param_1[0x18])" (( "(") (binary_expression "1 < (uint)param_1[0x18]" (number_literal "1") (< "<") (cast_expression "(uint)param_1[0x18]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[0x18]" (identifier "param_1") ([ "[") (number_literal "0x18") (] "]")))) () ")")) (compound_statement "{\n          iVar12 = param_1[0x18];\n        }" ({ "{") (expression_statement "iVar12 = param_1[0x18];" (assignment_expression "iVar12 = param_1[0x18]" (identifier "iVar12") (= "=") (subscript_expression "param_1[0x18]" (identifier "param_1") ([ "[") (number_literal "0x18") (] "]"))) (; ";")) (} "}"))) (expression_statement "uVar5 = iVar12 - 1;" (assignment_expression "uVar5 = iVar12 - 1" (identifier "uVar5") (= "=") (binary_expression "iVar12 - 1" (identifier "iVar12") (- "-") (number_literal "1"))) (; ";")) (expression_statement "piVar1 = (int *)param_1[0x1d];" (assignment_expression "piVar1 = (int *)param_1[0x1d]" (identifier "piVar1") (= "=") (cast_expression "(int *)param_1[0x1d]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x1d]" (identifier "param_1") ([ "[") (number_literal "0x1d") (] "]")))) (; ";")) (if_statement "if (piVar1 == (int *)0x0) {\n                    \n          FUN_0022c630();\n        }" (if "if") (parenthesized_expression "(piVar1 == (int *)0x0)" (( "(") (binary_expression "piVar1 == (int *)0x0" (identifier "piVar1") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n          FUN_0022c630();\n        }" ({ "{") (expression_statement "FUN_0022c630();" (call_expression "FUN_0022c630()" (identifier "FUN_0022c630") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);" (assignment_expression "cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1)" (identifier "cVar4") (= "=") (call_expression "(**(code **)(*piVar1 + 0x18))(piVar1)" (parenthesized_expression "(**(code **)(*piVar1 + 0x18))" (( "(") (pointer_expression "**(code **)(*piVar1 + 0x18)" (* "*") (pointer_expression "*(code **)(*piVar1 + 0x18)" (* "*") (cast_expression "(code **)(*piVar1 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar1 + 0x18)" (( "(") (binary_expression "*piVar1 + 0x18" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (argument_list "(piVar1)" (( "(") (identifier "piVar1") () ")")))) (; ";")) (if_statement "if (cVar4 != '\0') {\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }" (if "if") (parenthesized_expression "(cVar4 != '\0')" (( "(") (binary_expression "cVar4 != '\0'" (identifier "cVar4") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);\n          if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }\nLAB_00212848:\n          iVar12 = param_1[0x17];\n          param_1[5] = 0;\n          param_1[4] = 0;\n          param_1[1] = iVar12;\n          param_1[2] = iVar12;\n          param_1[3] = iVar12;\n          param_1[6] = 0;\n          *(undefined1 *)((int)param_1 + 0x65) = 0;\n          goto LAB_0021286d;\n        }" ({ "{") (expression_statement "uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);" (assignment_expression "uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5)" (identifier "uVar8") (= "=") (call_expression "FUN_001e7610(param_1 + 0xe,param_1[1],uVar5)" (identifier "FUN_001e7610") (argument_list "(param_1 + 0xe,param_1[1],uVar5)" (( "(") (binary_expression "param_1 + 0xe" (identifier "param_1") (+ "+") (number_literal "0xe")) (, ",") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (, ",") (identifier "uVar5") () ")")))) (; ";")) (if_statement "if (uVar8 != 0) {\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }" (if "if") (parenthesized_expression "(uVar8 != 0)" (( "(") (binary_expression "uVar8 != 0" (identifier "uVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }\nLAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");\n          }" ({ "{") (if_statement "if (0 < (int)uVar8) {\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }" (if "if") (parenthesized_expression "(0 < (int)uVar8)" (( "(") (binary_expression "0 < (int)uVar8" (number_literal "0") (< "<") (cast_expression "(int)uVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar8"))) () ")")) (compound_statement "{\nLAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];\n              param_1[1] = (int)pbVar6;\n              param_1[2] = (int)pbVar6;\n              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }\n              param_1[5] = 0;\n              param_1[4] = 0;\n              param_1[6] = 0;\n              *(undefined1 *)((int)param_1 + 0x65) = 1;\n              return (uint)*pbVar6;\n            }" ({ "{") (labeled_statement "LAB_002127e8:\n              pbVar6 = (byte *)param_1[0x17];" (statement_identifier "LAB_002127e8") (: ":") (expression_statement "pbVar6 = (byte *)param_1[0x17];" (assignment_expression "pbVar6 = (byte *)param_1[0x17]" (identifier "pbVar6") (= "=") (cast_expression "(byte *)param_1[0x17]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x17]" (identifier "param_1") ([ "[") (number_literal "0x17") (] "]")))) (; ";"))) (expression_statement "param_1[1] = (int)pbVar6;" (assignment_expression "param_1[1] = (int)pbVar6" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)pbVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar6"))) (; ";")) (expression_statement "param_1[2] = (int)pbVar6;" (assignment_expression "param_1[2] = (int)pbVar6" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)pbVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar6"))) (; ";")) (if_statement "if ((*(byte *)(param_1 + 0x10) & 8) == 0) {\n                param_1[3] = (int)pbVar6;\n              }\n              else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x10) & 8) == 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x10) & 8) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x10) & 8)" (( "(") (binary_expression "*(byte *)(param_1 + 0x10) & 8" (pointer_expression "*(byte *)(param_1 + 0x10)" (* "*") (cast_expression "(byte *)(param_1 + 0x10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                param_1[3] = (int)pbVar6;\n              }" ({ "{") (expression_statement "param_1[3] = (int)pbVar6;" (assignment_expression "param_1[3] = (int)pbVar6" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(int)pbVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar6"))) (; ";")) (} "}")) (else_clause "else {\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }" (else "else") (compound_statement "{\n                param_1[3] = (int)(pbVar6 + uVar8);\n              }" ({ "{") (expression_statement "param_1[3] = (int)(pbVar6 + uVar8);" (assignment_expression "param_1[3] = (int)(pbVar6 + uVar8)" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(int)(pbVar6 + uVar8)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(pbVar6 + uVar8)" (( "(") (binary_expression "pbVar6 + uVar8" (identifier "pbVar6") (+ "+") (identifier "uVar8")) () ")")))) (; ";")) (} "}")))) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[4] = 0;" (assignment_expression "param_1[4] = 0" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[6] = 0;" (assignment_expression "param_1[6] = 0" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)((int)param_1 + 0x65) = 1;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x65) = 1" (pointer_expression "*(undefined1 *)((int)param_1 + 0x65)" (* "*") (cast_expression "(undefined1 *)((int)param_1 + 0x65)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x65)" (( "(") (binary_expression "(int)param_1 + 0x65" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x65")) () ")")))) (= "=") (number_literal "1")) (; ";")) (return_statement "return (uint)*pbVar6;" (return "return") (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar6")) (; ";")) (} "}"))) (labeled_statement "LAB_002127c6:\n                    \n            FUN_00226af0("basic_filebuf::underflow error reading the file");" (statement_identifier "LAB_002127c6") (: ":") (expression_statement "FUN_00226af0("basic_filebuf::underflow error reading the file");" (call_expression "FUN_00226af0("basic_filebuf::underflow error reading the file")" (identifier "FUN_00226af0") (argument_list "("basic_filebuf::underflow error reading the file")" (( "(") (string_literal ""basic_filebuf::underflow error reading the file"" (" """) (string_content "basic_filebuf::underflow error reading the file") (" """)) () ")"))) (; ";"))) (} "}"))) (labeled_statement "LAB_00212848:\n          iVar12 = param_1[0x17];" (statement_identifier "LAB_00212848") (: ":") (expression_statement "iVar12 = param_1[0x17];" (assignment_expression "iVar12 = param_1[0x17]" (identifier "iVar12") (= "=") (subscript_expression "param_1[0x17]" (identifier "param_1") ([ "[") (number_literal "0x17") (] "]"))) (; ";"))) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[4] = 0;" (assignment_expression "param_1[4] = 0" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[1] = iVar12;" (assignment_expression "param_1[1] = iVar12" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar12")) (; ";")) (expression_statement "param_1[2] = iVar12;" (assignment_expression "param_1[2] = iVar12" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iVar12")) (; ";")) (expression_statement "param_1[3] = iVar12;" (assignment_expression "param_1[3] = iVar12" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "iVar12")) (; ";")) (expression_statement "param_1[6] = 0;" (assignment_expression "param_1[6] = 0" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)((int)param_1 + 0x65) = 0;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x65) = 0" (pointer_expression "*(undefined1 *)((int)param_1 + 0x65)" (* "*") (cast_expression "(undefined1 *)((int)param_1 + 0x65)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x65)" (( "(") (binary_expression "(int)param_1 + 0x65" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x65")) () ")")))) (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0021286d;" (goto "goto") (statement_identifier "LAB_0021286d") (; ";")) (} "}"))) (expression_statement "iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);" (assignment_expression "iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d])" (identifier "iVar7") (= "=") (call_expression "(**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d])" (parenthesized_expression "(**(code **)(*(int *)param_1[0x1d] + 0x14))" (( "(") (pointer_expression "**(code **)(*(int *)param_1[0x1d] + 0x14)" (* "*") (pointer_expression "*(code **)(*(int *)param_1[0x1d] + 0x14)" (* "*") (cast_expression "(code **)(*(int *)param_1[0x1d] + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)param_1[0x1d] + 0x14)" (( "(") (binary_expression "*(int *)param_1[0x1d] + 0x14" (pointer_expression "*(int *)param_1[0x1d]" (* "*") (cast_expression "(int *)param_1[0x1d]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x1d]" (identifier "param_1") ([ "[") (number_literal "0x1d") (] "]")))) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "((int *)param_1[0x1d])" (( "(") (cast_expression "(int *)param_1[0x1d]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x1d]" (identifier "param_1") ([ "[") (number_literal "0x1d") (] "]"))) () ")")))) (; ";")) (if_statement "if (iVar7 < 1) {\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }\n        else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }" (if "if") (parenthesized_expression "(iVar7 < 1)" (( "(") (binary_expression "iVar7 < 1" (identifier "iVar7") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);\n          local_3c = iVar12 + -2 + iVar7;\n          uVar8 = uVar5;\n        }" ({ "{") (expression_statement "iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);" (assignment_expression "iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d])" (identifier "iVar7") (= "=") (call_expression "(**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d])" (parenthesized_expression "(**(code **)(*(int *)param_1[0x1d] + 0x20))" (( "(") (pointer_expression "**(code **)(*(int *)param_1[0x1d] + 0x20)" (* "*") (pointer_expression "*(code **)(*(int *)param_1[0x1d] + 0x20)" (* "*") (cast_expression "(code **)(*(int *)param_1[0x1d] + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)param_1[0x1d] + 0x20)" (( "(") (binary_expression "*(int *)param_1[0x1d] + 0x20" (pointer_expression "*(int *)param_1[0x1d]" (* "*") (cast_expression "(int *)param_1[0x1d]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x1d]" (identifier "param_1") ([ "[") (number_literal "0x1d") (] "]")))) (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (argument_list "((int *)param_1[0x1d])" (( "(") (cast_expression "(int *)param_1[0x1d]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x1d]" (identifier "param_1") ([ "[") (number_literal "0x1d") (] "]"))) () ")")))) (; ";")) (expression_statement "local_3c = iVar12 + -2 + iVar7;" (assignment_expression "local_3c = iVar12 + -2 + iVar7" (identifier "local_3c") (= "=") (binary_expression "iVar12 + -2 + iVar7" (binary_expression "iVar12 + -2" (identifier "iVar12") (+ "+") (number_literal "-2")) (+ "+") (identifier "iVar7"))) (; ";")) (expression_statement "uVar8 = uVar5;" (assignment_expression "uVar8 = uVar5" (identifier "uVar8") (= "=") (identifier "uVar5")) (; ";")) (} "}")) (else_clause "else {\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }" (else "else") (compound_statement "{\n          local_3c = iVar7 * uVar5;\n          uVar8 = local_3c;\n        }" ({ "{") (expression_statement "local_3c = iVar7 * uVar5;" (assignment_expression "local_3c = iVar7 * uVar5" (identifier "local_3c") (= "=") (binary_expression "iVar7 * uVar5" (identifier "iVar7") (* "*") (identifier "uVar5"))) (; ";")) (expression_statement "uVar8 = local_3c;" (assignment_expression "uVar8 = local_3c" (identifier "uVar8") (= "=") (identifier "local_3c")) (; ";")) (} "}")))) (expression_statement "__n = param_1[0x21] - param_1[0x20];" (assignment_expression "__n = param_1[0x21] - param_1[0x20]" (identifier "__n") (= "=") (binary_expression "param_1[0x21] - param_1[0x20]" (subscript_expression "param_1[0x21]" (identifier "param_1") ([ "[") (number_literal "0x21") (] "]")) (- "-") (subscript_expression "param_1[0x20]" (identifier "param_1") ([ "[") (number_literal "0x20") (] "]")))) (; ";")) (expression_statement "iVar12 = uVar8 - __n;" (assignment_expression "iVar12 = uVar8 - __n" (identifier "iVar12") (= "=") (binary_expression "uVar8 - __n" (identifier "uVar8") (- "-") (identifier "__n"))) (; ";")) (if_statement "if ((int)uVar8 <= (int)__n) {\n          iVar12 = 0;\n        }" (if "if") (parenthesized_expression "((int)uVar8 <= (int)__n)" (( "(") (binary_expression "(int)uVar8 <= (int)__n" (cast_expression "(int)uVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar8")) (<= "<=") (cast_expression "(int)__n" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__n"))) () ")")) (compound_statement "{\n          iVar12 = 0;\n        }" ({ "{") (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" (identifier "iVar12") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "iVar7 = param_1[0x1f];" (assignment_expression "iVar7 = param_1[0x1f]" (identifier "iVar7") (= "=") (subscript_expression "param_1[0x1f]" (identifier "param_1") ([ "[") (number_literal "0x1f") (] "]"))) (; ";")) (if_statement "if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }\n        else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }" (if "if") (parenthesized_expression "((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1]))" (( "(") (binary_expression "(*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])" (parenthesized_expression "(*(char *)((int)param_1 + 0x65) == '\0')" (( "(") (binary_expression "*(char *)((int)param_1 + 0x65) == '\0'" (pointer_expression "*(char *)((int)param_1 + 0x65)" (* "*") (cast_expression "(char *)((int)param_1 + 0x65)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x65)" (( "(") (binary_expression "(int)param_1 + 0x65" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x65")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(param_1[3] != param_1[1])" (( "(") (binary_expression "param_1[3] != param_1[1]" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (!= "!=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) () ")"))) () ")")) (compound_statement "{\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n          if (__n != 0) goto LAB_002128fd;\n        }" ({ "{") (if_statement "if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }" (if "if") (parenthesized_expression "(iVar7 < (int)local_3c)" (( "(") (binary_expression "iVar7 < (int)local_3c" (identifier "iVar7") (< "<") (cast_expression "(int)local_3c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_3c"))) () ")")) (compound_statement "{\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            if (__n != 0) goto LAB_00212947;\n            goto LAB_002128b5;\n          }" ({ "{") (expression_statement "pvVar11 = (void *)FUN_001e5180(local_3c);" (assignment_expression "pvVar11 = (void *)FUN_001e5180(local_3c)" (identifier "pvVar11") (= "=") (cast_expression "(void *)FUN_001e5180(local_3c)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001e5180(local_3c)" (identifier "FUN_001e5180") (argument_list "(local_3c)" (( "(") (identifier "local_3c") () ")"))))) (; ";")) (if_statement "if (__n != 0) goto LAB_00212947;" (if "if") (parenthesized_expression "(__n != 0)" (( "(") (binary_expression "__n != 0" (identifier "__n") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00212947;" (goto "goto") (statement_identifier "LAB_00212947") (; ";"))) (goto_statement "goto LAB_002128b5;" (goto "goto") (statement_identifier "LAB_002128b5") (; ";")) (} "}"))) (expression_statement "pvVar11 = (void *)param_1[0x1e];" (assignment_expression "pvVar11 = (void *)param_1[0x1e]" (identifier "pvVar11") (= "=") (cast_expression "(void *)param_1[0x1e]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x1e]" (identifier "param_1") ([ "[") (number_literal "0x1e") (] "]")))) (; ";")) (if_statement "if (__n != 0) goto LAB_002128fd;" (if "if") (parenthesized_expression "(__n != 0)" (( "(") (binary_expression "__n != 0" (identifier "__n") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_002128fd;" (goto "goto") (statement_identifier "LAB_002128fd") (; ";"))) (} "}")) (else_clause "else if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }" (else "else") (if_statement "if (__n == 0) {\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }\n        else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }" (if "if") (parenthesized_expression "(__n == 0)" (( "(") (binary_expression "__n == 0" (identifier "__n") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }\n          pvVar11 = (void *)param_1[0x1e];\n        }" ({ "{") (if_statement "if (iVar7 < (int)local_3c) {\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }" (if "if") (parenthesized_expression "(iVar7 < (int)local_3c)" (( "(") (binary_expression "iVar7 < (int)local_3c" (identifier "iVar7") (< "<") (cast_expression "(int)local_3c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_3c"))) () ")")) (compound_statement "{\n            pvVar11 = (void *)FUN_001e5180(local_3c);\n            goto LAB_002128b5;\n          }" ({ "{") (expression_statement "pvVar11 = (void *)FUN_001e5180(local_3c);" (assignment_expression "pvVar11 = (void *)FUN_001e5180(local_3c)" (identifier "pvVar11") (= "=") (cast_expression "(void *)FUN_001e5180(local_3c)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001e5180(local_3c)" (identifier "FUN_001e5180") (argument_list "(local_3c)" (( "(") (identifier "local_3c") () ")"))))) (; ";")) (goto_statement "goto LAB_002128b5;" (goto "goto") (statement_identifier "LAB_002128b5") (; ";")) (} "}"))) (expression_statement "pvVar11 = (void *)param_1[0x1e];" (assignment_expression "pvVar11 = (void *)param_1[0x1e]" (identifier "pvVar11") (= "=") (cast_expression "(void *)param_1[0x1e]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x1e]" (identifier "param_1") ([ "[") (number_literal "0x1e") (] "]")))) (; ";")) (} "}")) (else_clause "else if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }" (else "else") (if_statement "if (iVar7 < (int)local_3c) {\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }\n        else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }" (if "if") (parenthesized_expression "(iVar7 < (int)local_3c)" (( "(") (binary_expression "iVar7 < (int)local_3c" (identifier "iVar7") (< "<") (cast_expression "(int)local_3c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_3c"))) () ")")) (compound_statement "{\n          pvVar11 = (void *)FUN_001e5180(local_3c);\n          iVar12 = 0;\nLAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);\nLAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }\n          param_1[0x1e] = (int)pvVar11;\n          param_1[0x1f] = local_3c;\n        }" ({ "{") (expression_statement "pvVar11 = (void *)FUN_001e5180(local_3c);" (assignment_expression "pvVar11 = (void *)FUN_001e5180(local_3c)" (identifier "pvVar11") (= "=") (cast_expression "(void *)FUN_001e5180(local_3c)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001e5180(local_3c)" (identifier "FUN_001e5180") (argument_list "(local_3c)" (( "(") (identifier "local_3c") () ")"))))) (; ";")) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" (identifier "iVar12") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00212947:\n          memcpy(pvVar11,(void *)param_1[0x20],__n);" (statement_identifier "LAB_00212947") (: ":") (expression_statement "memcpy(pvVar11,(void *)param_1[0x20],__n);" (call_expression "memcpy(pvVar11,(void *)param_1[0x20],__n)" (identifier "memcpy") (argument_list "(pvVar11,(void *)param_1[0x20],__n)" (( "(") (identifier "pvVar11") (, ",") (cast_expression "(void *)param_1[0x20]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x20]" (identifier "param_1") ([ "[") (number_literal "0x20") (] "]"))) (, ",") (identifier "__n") () ")"))) (; ";"))) (labeled_statement "LAB_002128b5:\n          if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }" (statement_identifier "LAB_002128b5") (: ":") (if_statement "if (param_1[0x1e] != 0) {\n            FUN_001e6d50(param_1[0x1e]);\n          }" (if "if") (parenthesized_expression "(param_1[0x1e] != 0)" (( "(") (binary_expression "param_1[0x1e] != 0" (subscript_expression "param_1[0x1e]" (identifier "param_1") ([ "[") (number_literal "0x1e") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_001e6d50(param_1[0x1e]);\n          }" ({ "{") (expression_statement "FUN_001e6d50(param_1[0x1e]);" (call_expression "FUN_001e6d50(param_1[0x1e])" (identifier "FUN_001e6d50") (argument_list "(param_1[0x1e])" (( "(") (subscript_expression "param_1[0x1e]" (identifier "param_1") ([ "[") (number_literal "0x1e") (] "]")) () ")"))) (; ";")) (} "}")))) (expression_statement "param_1[0x1e] = (int)pvVar11;" (assignment_expression "param_1[0x1e] = (int)pvVar11" (subscript_expression "param_1[0x1e]" (identifier "param_1") ([ "[") (number_literal "0x1e") (] "]")) (= "=") (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11"))) (; ";")) (expression_statement "param_1[0x1f] = local_3c;" (assignment_expression "param_1[0x1f] = local_3c" (subscript_expression "param_1[0x1f]" (identifier "param_1") ([ "[") (number_literal "0x1f") (] "]")) (= "=") (identifier "local_3c")) (; ";")) (} "}")) (else_clause "else {\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }" (else "else") (compound_statement "{\n          pvVar11 = (void *)param_1[0x1e];\n          iVar12 = 0;\nLAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);\n          pvVar11 = (void *)param_1[0x1e];\n        }" ({ "{") (expression_statement "pvVar11 = (void *)param_1[0x1e];" (assignment_expression "pvVar11 = (void *)param_1[0x1e]" (identifier "pvVar11") (= "=") (cast_expression "(void *)param_1[0x1e]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x1e]" (identifier "param_1") ([ "[") (number_literal "0x1e") (] "]")))) (; ";")) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" (identifier "iVar12") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_002128fd:\n          memmove(pvVar11,(void *)param_1[0x20],__n);" (statement_identifier "LAB_002128fd") (: ":") (expression_statement "memmove(pvVar11,(void *)param_1[0x20],__n);" (call_expression "memmove(pvVar11,(void *)param_1[0x20],__n)" (identifier "memmove") (argument_list "(pvVar11,(void *)param_1[0x20],__n)" (( "(") (identifier "pvVar11") (, ",") (cast_expression "(void *)param_1[0x20]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x20]" (identifier "param_1") ([ "[") (number_literal "0x20") (] "]"))) (, ",") (identifier "__n") () ")"))) (; ";"))) (expression_statement "pvVar11 = (void *)param_1[0x1e];" (assignment_expression "pvVar11 = (void *)param_1[0x1e]" (identifier "pvVar11") (= "=") (cast_expression "(void *)param_1[0x1e]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x1e]" (identifier "param_1") ([ "[") (number_literal "0x1e") (] "]")))) (; ";")) (} "}")))))))) (expression_statement "pvVar9 = (void *)((int)pvVar11 + __n);" (assignment_expression "pvVar9 = (void *)((int)pvVar11 + __n)" (identifier "pvVar9") (= "=") (cast_expression "(void *)((int)pvVar11 + __n)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar11 + __n)" (( "(") (binary_expression "(int)pvVar11 + __n" (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")) (+ "+") (identifier "__n")) () ")")))) (; ";")) (expression_statement "param_1[0x20] = (int)pvVar11;" (assignment_expression "param_1[0x20] = (int)pvVar11" (subscript_expression "param_1[0x20]" (identifier "param_1") ([ "[") (number_literal "0x20") (] "]")) (= "=") (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11"))) (; ";")) (expression_statement "param_1[0x21] = (int)pvVar9;" (assignment_expression "param_1[0x21] = (int)pvVar9" (subscript_expression "param_1[0x21]" (identifier "param_1") ([ "[") (number_literal "0x21") (] "]")) (= "=") (cast_expression "(int)pvVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar9"))) (; ";")) (expression_statement "param_1[0x15] = param_1[0x13];" (assignment_expression "param_1[0x15] = param_1[0x13]" (subscript_expression "param_1[0x15]" (identifier "param_1") ([ "[") (number_literal "0x15") (] "]")) (= "=") (subscript_expression "param_1[0x13]" (identifier "param_1") ([ "[") (number_literal "0x13") (] "]"))) (; ";")) (expression_statement "param_1[0x16] = param_1[0x14];" (assignment_expression "param_1[0x16] = param_1[0x14]" (subscript_expression "param_1[0x16]" (identifier "param_1") ([ "[") (number_literal "0x16") (] "]")) (= "=") (subscript_expression "param_1[0x14]" (identifier "param_1") ([ "[") (number_literal "0x14") (] "]"))) (; ";")) (if_statement "if (iVar12 != 0) {\n          iVar7 = 0;\n          goto LAB_00212664;\n        }" (if "if") (parenthesized_expression "(iVar12 != 0)" (( "(") (binary_expression "iVar12 != 0" (identifier "iVar12") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          iVar7 = 0;\n          goto LAB_00212664;\n        }" ({ "{") (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00212664;" (goto "goto") (statement_identifier "LAB_00212664") (; ";")) (} "}"))) (expression_statement "__dest = (void *)param_1[1];" (assignment_expression "__dest = (void *)param_1[1]" (identifier "__dest") (= "=") (cast_expression "(void *)param_1[1]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_20[0] = __dest;" (assignment_expression "local_20[0] = __dest" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "__dest")) (; ";")) (if_statement "if (pvVar9 <= pvVar11) goto LAB_00212654;" (if "if") (parenthesized_expression "(pvVar9 <= pvVar11)" (( "(") (binary_expression "pvVar9 <= pvVar11" (identifier "pvVar9") (<= "<=") (identifier "pvVar11")) () ")")) (goto_statement "goto LAB_00212654;" (goto "goto") (statement_identifier "LAB_00212654") (; ";"))) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" (identifier "bVar3") (= "=") (false "false")) (; ";")) (labeled_statement "LAB_00212600:\n        local_20[0] = __dest;" (statement_identifier "LAB_00212600") (: ":") (expression_statement "local_20[0] = __dest;" (assignment_expression "local_20[0] = __dest" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "__dest")) (; ";"))) (expression_statement "iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20);" (assignment_expression "iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20)" (identifier "iVar7") (= "=") (call_expression "(**(code **)(*(int *)param_1[0x1d] + 0x10))\n                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20)" (parenthesized_expression "(**(code **)(*(int *)param_1[0x1d] + 0x10))" (( "(") (pointer_expression "**(code **)(*(int *)param_1[0x1d] + 0x10)" (* "*") (pointer_expression "*(code **)(*(int *)param_1[0x1d] + 0x10)" (* "*") (cast_expression "(code **)(*(int *)param_1[0x1d] + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)param_1[0x1d] + 0x10)" (( "(") (binary_expression "*(int *)param_1[0x1d] + 0x10" (pointer_expression "*(int *)param_1[0x1d]" (* "*") (cast_expression "(int *)param_1[0x1d]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x1d]" (identifier "param_1") ([ "[") (number_literal "0x1d") (] "]")))) (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "(param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,\n                           uVar5 + (int)__dest,local_20)" (( "(") (subscript_expression "param_1[0x1d]" (identifier "param_1") ([ "[") (number_literal "0x1d") (] "]")) (, ",") (binary_expression "param_1 + 0x13" (identifier "param_1") (+ "+") (number_literal "0x13")) (, ",") (identifier "pvVar11") (, ",") (identifier "pvVar9") (, ",") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) (, ",") (identifier "__dest") (, ",") (binary_expression "uVar5 + (int)__dest" (identifier "uVar5") (+ "+") (cast_expression "(int)__dest" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__dest"))) (, ",") (identifier "local_20") () ")")))) (; ";")) (if_statement "if (iVar7 == 3) {\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }" (if "if") (parenthesized_expression "(iVar7 == 3)" (( "(") (binary_expression "iVar7 == 3" (identifier "iVar7") (== "==") (number_literal "3")) () ")")) (compound_statement "{\n          pvVar9 = (void *)param_1[0x21];\n          __dest = (void *)param_1[1];\n          goto LAB_00212739;\n        }" ({ "{") (expression_statement "pvVar9 = (void *)param_1[0x21];" (assignment_expression "pvVar9 = (void *)param_1[0x21]" (identifier "pvVar9") (= "=") (cast_expression "(void *)param_1[0x21]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x21]" (identifier "param_1") ([ "[") (number_literal "0x21") (] "]")))) (; ";")) (expression_statement "__dest = (void *)param_1[1];" (assignment_expression "__dest = (void *)param_1[1]" (identifier "__dest") (= "=") (cast_expression "(void *)param_1[1]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (goto_statement "goto LAB_00212739;" (goto "goto") (statement_identifier "LAB_00212739") (; ";")) (} "}"))) (expression_statement "uVar8 = (int)local_20[0] - param_1[1];" (assignment_expression "uVar8 = (int)local_20[0] - param_1[1]" (identifier "uVar8") (= "=") (binary_expression "(int)local_20[0] - param_1[1]" (cast_expression "(int)local_20[0]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]"))) (- "-") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (iVar7 == 2) {\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }" (if "if") (parenthesized_expression "(iVar7 == 2)" (( "(") (binary_expression "iVar7 == 2" (identifier "iVar7") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n          if (0 < (int)uVar8) goto LAB_002127e8;\n          if (!bVar3) {\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }\n          goto LAB_00212848;\n        }" ({ "{") (if_statement "if (0 < (int)uVar8) goto LAB_002127e8;" (if "if") (parenthesized_expression "(0 < (int)uVar8)" (( "(") (binary_expression "0 < (int)uVar8" (number_literal "0") (< "<") (cast_expression "(int)uVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar8"))) () ")")) (goto_statement "goto LAB_002127e8;" (goto "goto") (statement_identifier "LAB_002127e8") (; ";"))) (if_statement "if (!bVar3) {\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }" (if "if") (parenthesized_expression "(!bVar3)" (( "(") (unary_expression "!bVar3" (! "!") (identifier "bVar3")) () ")")) (compound_statement "{\n                    \n            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");\n          }" ({ "{") (expression_statement "FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");" (call_expression "FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file")" (identifier "FUN_00226af0") (argument_list "("basic_filebuf::underflow invalid byte sequence in file")" (( "(") (string_literal ""basic_filebuf::underflow invalid byte sequence in file"" (" """) (string_content "basic_filebuf::underflow invalid byte sequence in file") (" """)) () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_00212848;" (goto "goto") (statement_identifier "LAB_00212848") (; ";")) (} "}"))) (expression_statement "bVar2 = (bool)(uVar8 != 0 | bVar3);" (assignment_expression "bVar2 = (bool)(uVar8 != 0 | bVar3)" (identifier "bVar2") (= "=") (cast_expression "(bool)(uVar8 != 0 | bVar3)" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (parenthesized_expression "(uVar8 != 0 | bVar3)" (( "(") (binary_expression "uVar8 != 0 | bVar3" (binary_expression "uVar8 != 0" (identifier "uVar8") (!= "!=") (number_literal "0")) (| "|") (identifier "bVar3")) () ")")))) (; ";")) (while_statement "while (!bVar2) {\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }" (while "while") (parenthesized_expression "(!bVar2)" (( "(") (unary_expression "!bVar2" (! "!") (identifier "bVar2")) () ")")) (compound_statement "{\nLAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }\nLAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];\n          uVar10 = (int)pvVar9 - (int)pvVar11;\n          uVar8 = uVar5;\n          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }\n          param_1[0x20] = (int)pvVar11;\n          iVar7 = 3;\n          bVar2 = (bool)(uVar8 != 0 | bVar3);\n        }" ({ "{") (labeled_statement "LAB_00212654:\n          while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }" (statement_identifier "LAB_00212654") (: ":") (while_statement "while( true ) {\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            pvVar9 = (void *)param_1[0x21];\n            iVar12 = 1;\n            __n = (int)pvVar9 - param_1[0x1e];\nLAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }\n            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);\n            if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }\n            __dest = (void *)param_1[1];\n            pvVar11 = (void *)param_1[0x20];\n            pvVar9 = (void *)(iVar12 + param_1[0x21]);\n            param_1[0x21] = (int)pvVar9;\n            if (pvVar11 < pvVar9) goto LAB_00212600;\n            local_20[0] = __dest;\n            if (iVar7 == 3) break;\n            if (bVar3) goto LAB_002126c9;\n          }" ({ "{") (expression_statement "pvVar9 = (void *)param_1[0x21];" (assignment_expression "pvVar9 = (void *)param_1[0x21]" (identifier "pvVar9") (= "=") (cast_expression "(void *)param_1[0x21]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x21]" (identifier "param_1") ([ "[") (number_literal "0x21") (] "]")))) (; ";")) (expression_statement "iVar12 = 1;" (assignment_expression "iVar12 = 1" (identifier "iVar12") (= "=") (number_literal "1")) (; ";")) (expression_statement "__n = (int)pvVar9 - param_1[0x1e];" (assignment_expression "__n = (int)pvVar9 - param_1[0x1e]" (identifier "__n") (= "=") (binary_expression "(int)pvVar9 - param_1[0x1e]" (cast_expression "(int)pvVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar9")) (- "-") (subscript_expression "param_1[0x1e]" (identifier "param_1") ([ "[") (number_literal "0x1e") (] "]")))) (; ";")) (labeled_statement "LAB_00212664:\n            if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }" (statement_identifier "LAB_00212664") (: ":") (if_statement "if (param_1[0x1f] < (int)(__n + iVar12)) {\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }" (if "if") (parenthesized_expression "(param_1[0x1f] < (int)(__n + iVar12))" (( "(") (binary_expression "param_1[0x1f] < (int)(__n + iVar12)" (subscript_expression "param_1[0x1f]" (identifier "param_1") ([ "[") (number_literal "0x1f") (] "]")) (< "<") (cast_expression "(int)(__n + iVar12)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(__n + iVar12)" (( "(") (binary_expression "__n + iVar12" (identifier "__n") (+ "+") (identifier "iVar12")) () ")")))) () ")")) (compound_statement "{\n                    \n              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");\n            }" ({ "{") (expression_statement "FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");" (call_expression "FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid")" (identifier "FUN_00226af0") (argument_list "("basic_filebuf::underflow codecvt::max_length() is not valid")" (( "(") (string_literal ""basic_filebuf::underflow codecvt::max_length() is not valid"" (" """) (string_content "basic_filebuf::underflow codecvt::max_length() is not valid") (" """)) () ")"))) (; ";")) (} "}")))) (expression_statement "iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);" (assignment_expression "iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12)" (identifier "iVar12") (= "=") (call_expression "FUN_001e7610(param_1 + 0xe,pvVar9,iVar12)" (identifier "FUN_001e7610") (argument_list "(param_1 + 0xe,pvVar9,iVar12)" (( "(") (binary_expression "param_1 + 0xe" (identifier "param_1") (+ "+") (number_literal "0xe")) (, ",") (identifier "pvVar9") (, ",") (identifier "iVar12") () ")")))) (; ";")) (if_statement "if (iVar12 == 0) {\n              bVar3 = true;\n            }\n            else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }" (if "if") (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              bVar3 = true;\n            }" ({ "{") (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" (identifier "bVar3") (= "=") (true "true")) (; ";")) (} "}")) (else_clause "else {\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }" (else "else") (compound_statement "{\n              if (iVar12 == -1) goto LAB_002127c6;\n              bVar3 = false;\n            }" ({ "{") (if_statement "if (iVar12 == -1) goto LAB_002127c6;" (if "if") (parenthesized_expression "(iVar12 == -1)" (( "(") (binary_expression "iVar12 == -1" (identifier "iVar12") (== "==") (number_literal "-1")) () ")")) (goto_statement "goto LAB_002127c6;" (goto "goto") (statement_identifier "LAB_002127c6") (; ";"))) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" (identifier "bVar3") (= "=") (false "false")) (; ";")) (} "}")))) (expression_statement "__dest = (void *)param_1[1];" (assignment_expression "__dest = (void *)param_1[1]" (identifier "__dest") (= "=") (cast_expression "(void *)param_1[1]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "pvVar11 = (void *)param_1[0x20];" (assignment_expression "pvVar11 = (void *)param_1[0x20]" (identifier "pvVar11") (= "=") (cast_expression "(void *)param_1[0x20]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x20]" (identifier "param_1") ([ "[") (number_literal "0x20") (] "]")))) (; ";")) (expression_statement "pvVar9 = (void *)(iVar12 + param_1[0x21]);" (assignment_expression "pvVar9 = (void *)(iVar12 + param_1[0x21])" (identifier "pvVar9") (= "=") (cast_expression "(void *)(iVar12 + param_1[0x21])" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + param_1[0x21])" (( "(") (binary_expression "iVar12 + param_1[0x21]" (identifier "iVar12") (+ "+") (subscript_expression "param_1[0x21]" (identifier "param_1") ([ "[") (number_literal "0x21") (] "]"))) () ")")))) (; ";")) (expression_statement "param_1[0x21] = (int)pvVar9;" (assignment_expression "param_1[0x21] = (int)pvVar9" (subscript_expression "param_1[0x21]" (identifier "param_1") ([ "[") (number_literal "0x21") (] "]")) (= "=") (cast_expression "(int)pvVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar9"))) (; ";")) (if_statement "if (pvVar11 < pvVar9) goto LAB_00212600;" (if "if") (parenthesized_expression "(pvVar11 < pvVar9)" (( "(") (binary_expression "pvVar11 < pvVar9" (identifier "pvVar11") (< "<") (identifier "pvVar9")) () ")")) (goto_statement "goto LAB_00212600;" (goto "goto") (statement_identifier "LAB_00212600") (; ";"))) (expression_statement "local_20[0] = __dest;" (assignment_expression "local_20[0] = __dest" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "__dest")) (; ";")) (if_statement "if (iVar7 == 3) break;" (if "if") (parenthesized_expression "(iVar7 == 3)" (( "(") (binary_expression "iVar7 == 3" (identifier "iVar7") (== "==") (number_literal "3")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (bVar3) goto LAB_002126c9;" (if "if") (parenthesized_expression "(bVar3)" (( "(") (identifier "bVar3") () ")")) (goto_statement "goto LAB_002126c9;" (goto "goto") (statement_identifier "LAB_002126c9") (; ";"))) (} "}")))) (labeled_statement "LAB_00212739:\n          pvVar11 = (void *)param_1[0x1e];" (statement_identifier "LAB_00212739") (: ":") (expression_statement "pvVar11 = (void *)param_1[0x1e];" (assignment_expression "pvVar11 = (void *)param_1[0x1e]" (identifier "pvVar11") (= "=") (cast_expression "(void *)param_1[0x1e]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x1e]" (identifier "param_1") ([ "[") (number_literal "0x1e") (] "]")))) (; ";"))) (expression_statement "uVar10 = (int)pvVar9 - (int)pvVar11;" (assignment_expression "uVar10 = (int)pvVar9 - (int)pvVar11" (identifier "uVar10") (= "=") (binary_expression "(int)pvVar9 - (int)pvVar11" (cast_expression "(int)pvVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar9")) (- "-") (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11")))) (; ";")) (expression_statement "uVar8 = uVar5;" (assignment_expression "uVar8 = uVar5" (identifier "uVar8") (= "=") (identifier "uVar5")) (; ";")) (if_statement "if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }" (if "if") (parenthesized_expression "((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0))" (( "(") (binary_expression "(uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)" (parenthesized_expression "(uVar5 < uVar10)" (( "(") (binary_expression "uVar5 < uVar10" (identifier "uVar5") (< "<") (identifier "uVar10")) () ")")) (|| "||") (parenthesized_expression "(uVar8 = uVar10, uVar10 != 0)" (( "(") (comma_expression "uVar8 = uVar10, uVar10 != 0" (assignment_expression "uVar8 = uVar10" (identifier "uVar8") (= "=") (identifier "uVar10")) (, ",") (binary_expression "uVar10 != 0" (identifier "uVar10") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n            memcpy(__dest,pvVar11,uVar8);\n            pvVar11 = (void *)(uVar8 + param_1[0x1e]);\n          }" ({ "{") (expression_statement "memcpy(__dest,pvVar11,uVar8);" (call_expression "memcpy(__dest,pvVar11,uVar8)" (identifier "memcpy") (argument_list "(__dest,pvVar11,uVar8)" (( "(") (identifier "__dest") (, ",") (identifier "pvVar11") (, ",") (identifier "uVar8") () ")"))) (; ";")) (expression_statement "pvVar11 = (void *)(uVar8 + param_1[0x1e]);" (assignment_expression "pvVar11 = (void *)(uVar8 + param_1[0x1e])" (identifier "pvVar11") (= "=") (cast_expression "(void *)(uVar8 + param_1[0x1e])" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar8 + param_1[0x1e])" (( "(") (binary_expression "uVar8 + param_1[0x1e]" (identifier "uVar8") (+ "+") (subscript_expression "param_1[0x1e]" (identifier "param_1") ([ "[") (number_literal "0x1e") (] "]"))) () ")")))) (; ";")) (} "}"))) (expression_statement "param_1[0x20] = (int)pvVar11;" (assignment_expression "param_1[0x20] = (int)pvVar11" (subscript_expression "param_1[0x20]" (identifier "param_1") ([ "[") (number_literal "0x20") (] "]")) (= "=") (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11"))) (; ";")) (expression_statement "iVar7 = 3;" (assignment_expression "iVar7 = 3" (identifier "iVar7") (= "=") (number_literal "3")) (; ";")) (expression_statement "bVar2 = (bool)(uVar8 != 0 | bVar3);" (assignment_expression "bVar2 = (bool)(uVar8 != 0 | bVar3)" (identifier "bVar2") (= "=") (cast_expression "(bool)(uVar8 != 0 | bVar3)" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (parenthesized_expression "(uVar8 != 0 | bVar3)" (( "(") (binary_expression "uVar8 != 0 | bVar3" (binary_expression "uVar8 != 0" (identifier "uVar8") (!= "!=") (number_literal "0")) (| "|") (identifier "bVar3")) () ")")))) (; ";")) (} "}"))) (if_statement "if (0 < (int)uVar8) goto LAB_002127e8;" (if "if") (parenthesized_expression "(0 < (int)uVar8)" (( "(") (binary_expression "0 < (int)uVar8" (number_literal "0") (< "<") (cast_expression "(int)uVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar8"))) () ")")) (goto_statement "goto LAB_002127e8;" (goto "goto") (statement_identifier "LAB_002127e8") (; ";"))) (if_statement "if (!bVar3) goto LAB_002127c6;" (if "if") (parenthesized_expression "(!bVar3)" (( "(") (unary_expression "!bVar3" (! "!") (identifier "bVar3")) () ")")) (goto_statement "goto LAB_002127c6;" (goto "goto") (statement_identifier "LAB_002127c6") (; ";"))) (labeled_statement "LAB_002126c9:\n        iVar12 = param_1[0x17];" (statement_identifier "LAB_002126c9") (: ":") (expression_statement "iVar12 = param_1[0x17];" (assignment_expression "iVar12 = param_1[0x17]" (identifier "iVar12") (= "=") (subscript_expression "param_1[0x17]" (identifier "param_1") ([ "[") (number_literal "0x17") (] "]"))) (; ";"))) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[4] = 0;" (assignment_expression "param_1[4] = 0" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[1] = iVar12;" (assignment_expression "param_1[1] = iVar12" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar12")) (; ";")) (expression_statement "param_1[2] = iVar12;" (assignment_expression "param_1[2] = iVar12" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iVar12")) (; ";")) (expression_statement "param_1[3] = iVar12;" (assignment_expression "param_1[3] = iVar12" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "iVar12")) (; ";")) (expression_statement "param_1[6] = 0;" (assignment_expression "param_1[6] = 0" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)((int)param_1 + 0x65) = 0;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x65) = 0" (pointer_expression "*(undefined1 *)((int)param_1 + 0x65)" (* "*") (cast_expression "(undefined1 *)((int)param_1 + 0x65)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x65)" (( "(") (binary_expression "(int)param_1 + 0x65" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x65")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar7 == 1) {\n                    \n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }" (if "if") (parenthesized_expression "(iVar7 == 1)" (( "(") (binary_expression "iVar7 == 1" (identifier "iVar7") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n                    \n          FUN_00226af0("basic_filebuf::underflow incomplete character in file");\n        }" ({ "{") (expression_statement "FUN_00226af0("basic_filebuf::underflow incomplete character in file");" (call_expression "FUN_00226af0("basic_filebuf::underflow incomplete character in file")" (identifier "FUN_00226af0") (argument_list "("basic_filebuf::underflow incomplete character in file")" (( "(") (string_literal ""basic_filebuf::underflow incomplete character in file"" (" """) (string_content "basic_filebuf::underflow incomplete character in file") (" """)) () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_0021286d;" (goto "goto") (statement_identifier "LAB_0021286d") (; ";")) (} "}")))) (} "}")))) (expression_statement "uVar5 = (uint)*pbVar6;" (assignment_expression "uVar5 = (uint)*pbVar6" (identifier "uVar5") (= "=") (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar6"))) (; ";")) (} "}")))) (return_statement "return uVar5;" (return "return") (identifier "uVar5") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* std::filebuf::underflow() */

type_1 __thiscall std::type_2::function_1(type_2 *var_1)

{
  int *var_4;
  type_3 uVar2;
  bool bVar3;
  bool var_21;
  char var_6;
  type_1 var_13;
  type_4 *var_2;
  int var_12;
  type_1 var_10;
  char *var_20;
  type_1 var_22;
  char *var_19;
  void *__src;
  int var_3;
  void *__dest_00;
  size_t var_14;
  type_1 local_3c;
  void *local_20 [4];
  
  if (((type_4)var_1[0x40] & 8) == 0) {
LAB_0021286d:
    var_13 = 0xffffffff;
  }
  else {
    if (var_1[0x66] == (type_2)0x0) {
      var_2 = *(type_4 **)(var_1 + 8);
      if (var_1[0x70] == (type_2)0x0) goto LAB_002124b2;
LAB_00212506:
      var_1[0x70] = (type_2)0x0;
      var_2 = (type_4 *)((type_1)(*(type_4 **)(var_1 + 4) != var_2) + *(int *)(var_1 + 0x68));
      *(type_4 **)(var_1 + 0xc) = *(type_4 **)(var_1 + 0x6c);
      *(type_4 **)(var_1 + 0x68) = var_2;
      *(type_3 *)(var_1 + 4) = *(type_3 *)(var_1 + 0x5c);
      *(type_4 **)(var_1 + 8) = var_2;
      if (*(type_4 **)(var_1 + 0x6c) <= var_2) goto LAB_0021252c;
    }
    else {
      var_3 = (**(type_5 **)(*(int *)var_1 + 0x34))(var_1,0xffffffff);
      if (var_3 == -1) {
        return 0xffffffff;
      }
      var_2 = *(type_4 **)(var_1 + 0x5c);
      *(type_3 *)(var_1 + 0x14) = 0;
      *(type_3 *)(var_1 + 0x10) = 0;
      *(type_4 **)(var_1 + 4) = var_2;
      *(type_4 **)(var_1 + 8) = var_2;
      *(type_4 **)(var_1 + 0xc) = var_2;
      *(type_3 *)(var_1 + 0x18) = 0;
      var_1[0x66] = (type_2)0x0;
      if (var_1[0x70] != (type_2)0x0) goto LAB_00212506;
LAB_002124b2:
      if (*(type_4 **)(var_1 + 0xc) <= var_2) {
LAB_0021252c:
        var_3 = 2;
        if (1 < *(type_1 *)(var_1 + 0x60)) {
          var_3 = *(int *)(var_1 + 0x60);
        }
        var_13 = var_3 - 1;
        var_4 = *(int **)(var_1 + 0x74);
        if (var_4 == (int *)0x0) {
                    /* WARNING: Subroutine does not return */
          var_5();
        }
        var_6 = (**(type_5 **)(*var_4 + 0x18))(var_4);
        if (var_6 != '\0') {
          var_10 = var_7<var_8>::var_9
                            ((var_7<var_8> *)(var_1 + 0x38),*(char **)(var_1 + 4),var_13);
          if (var_10 != 0) {
            if (0 < (int)var_10) {
LAB_002127e8:
              var_2 = *(type_4 **)(var_1 + 0x5c);
              *(type_4 **)(var_1 + 4) = var_2;
              *(type_4 **)(var_1 + 8) = var_2;
              if (((type_4)var_1[0x40] & 8) == 0) {
                *(type_4 **)(var_1 + 0xc) = var_2;
              }
              else {
                *(type_4 **)(var_1 + 0xc) = var_2 + var_10;
              }
              *(type_3 *)(var_1 + 0x14) = 0;
              *(type_3 *)(var_1 + 0x10) = 0;
              *(type_3 *)(var_1 + 0x18) = 0;
              var_1[0x65] = (type_2)0x1;
              return (type_1)*var_2;
            }
LAB_002127c6:
                    /* WARNING: Subroutine does not return */
            var_11("basic_filebuf::underflow error reading the file");
          }
LAB_00212848:
          uVar2 = *(type_3 *)(var_1 + 0x5c);
          *(type_3 *)(var_1 + 0x14) = 0;
          *(type_3 *)(var_1 + 0x10) = 0;
          *(type_3 *)(var_1 + 4) = uVar2;
          *(type_3 *)(var_1 + 8) = uVar2;
          *(type_3 *)(var_1 + 0xc) = uVar2;
          *(type_3 *)(var_1 + 0x18) = 0;
          var_1[0x65] = (type_2)0x0;
          goto LAB_0021286d;
        }
        var_12 = (**(type_5 **)(**(int **)(var_1 + 0x74) + 0x14))(*(int **)(var_1 + 0x74));
        if (var_12 < 1) {
          var_12 = (**(type_5 **)(**(int **)(var_1 + 0x74) + 0x20))(*(int **)(var_1 + 0x74));
          local_3c = var_3 + -2 + var_12;
          var_10 = var_13;
        }
        else {
          local_3c = var_12 * var_13;
          var_10 = local_3c;
        }
        var_14 = *(int *)(var_1 + 0x84) - (int)*(void **)(var_1 + 0x80);
        var_3 = var_10 - var_14;
        if ((int)var_10 <= (int)var_14) {
          var_3 = 0;
        }
        var_12 = *(int *)(var_1 + 0x7c);
        if ((var_1[0x65] == (type_2)0x0) || (*(int *)(var_1 + 0xc) != *(int *)(var_1 + 4))) {
          if (var_12 < (int)local_3c) {
            var_19 = (char *)var_15(local_3c);
            if (var_14 != 0) goto LAB_00212947;
            goto LAB_002128b5;
          }
          var_19 = *(char **)(var_1 + 0x78);
          if (var_14 != 0) goto LAB_002128fd;
        }
        else if (var_14 == 0) {
          if (var_12 < (int)local_3c) {
            var_19 = (char *)var_15(local_3c);
            goto LAB_002128b5;
          }
          var_19 = *(char **)(var_1 + 0x78);
        }
        else if (var_12 < (int)local_3c) {
          var_19 = (char *)var_15(local_3c);
          var_3 = 0;
LAB_00212947:
          var_16(var_19,*(void **)(var_1 + 0x80),var_14);
LAB_002128b5:
          if (*(void **)(var_1 + 0x78) != (void *)0x0) {
            var_17(*(void **)(var_1 + 0x78));
          }
          *(char **)(var_1 + 0x78) = var_19;
          *(type_1 *)(var_1 + 0x7c) = local_3c;
        }
        else {
          var_19 = *(char **)(var_1 + 0x78);
          var_3 = 0;
LAB_002128fd:
          var_18(var_19,*(void **)(var_1 + 0x80),var_14);
          var_19 = *(char **)(var_1 + 0x78);
        }
        var_20 = var_19 + var_14;
        *(char **)(var_1 + 0x80) = var_19;
        *(char **)(var_1 + 0x84) = var_20;
        *(type_3 *)(var_1 + 0x54) = *(type_3 *)(var_1 + 0x4c);
        *(type_3 *)(var_1 + 0x58) = *(type_3 *)(var_1 + 0x50);
        if (var_3 != 0) {
          var_12 = 0;
          goto LAB_00212664;
        }
        __dest_00 = *(void **)(var_1 + 4);
        var_12 = 0;
        local_20[0] = __dest_00;
        if (var_20 <= var_19) goto LAB_00212654;
        var_21 = false;
LAB_00212600:
        local_20[0] = __dest_00;
        var_12 = (**(type_5 **)(**(int **)(var_1 + 0x74) + 0x10))
                          (*(type_3 *)(var_1 + 0x74),var_1 + 0x4c,var_19,var_20,var_1 + 0x80,
                           __dest_00,var_13 + (int)__dest_00,local_20);
        if (var_12 == 3) {
          var_20 = *(char **)(var_1 + 0x84);
          __dest_00 = *(void **)(var_1 + 4);
          goto LAB_00212739;
        }
        var_10 = (int)local_20[0] - *(int *)(var_1 + 4);
        if (var_12 == 2) {
          if (0 < (int)var_10) goto LAB_002127e8;
          if (!var_21) {
                    /* WARNING: Subroutine does not return */
            var_11("basic_filebuf::underflow invalid byte sequence in file");
          }
          goto LAB_00212848;
        }
        bVar3 = (bool)(var_10 != 0 | var_21);
        while (!bVar3) {
LAB_00212654:
          while( true ) {
            var_20 = *(char **)(var_1 + 0x84);
            var_3 = 1;
            var_14 = (int)var_20 - *(int *)(var_1 + 0x78);
LAB_00212664:
            if (*(int *)(var_1 + 0x7c) < (int)(var_14 + var_3)) {
                    /* WARNING: Subroutine does not return */
              var_11("basic_filebuf::underflow codecvt::max_length() is not valid");
            }
            var_3 = var_7<var_8>::var_9((var_7<var_8> *)(var_1 + 0x38),var_20,var_3);
            if (var_3 == 0) {
              var_21 = true;
            }
            else {
              if (var_3 == -1) goto LAB_002127c6;
              var_21 = false;
            }
            __dest_00 = *(void **)(var_1 + 4);
            var_19 = *(char **)(var_1 + 0x80);
            var_20 = (char *)(var_3 + *(int *)(var_1 + 0x84));
            *(char **)(var_1 + 0x84) = var_20;
            if (var_19 < var_20) goto LAB_00212600;
            local_20[0] = __dest_00;
            if (var_12 == 3) break;
            if (var_21) goto LAB_002126c9;
          }
LAB_00212739:
          __src = *(void **)(var_1 + 0x78);
          var_22 = (int)var_20 - (int)__src;
          var_10 = var_13;
          if ((var_13 < var_22) || (var_10 = var_22, var_22 != 0)) {
            var_16(__dest_00,__src,var_10);
            __src = (void *)(var_10 + *(int *)(var_1 + 0x78));
          }
          *(void **)(var_1 + 0x80) = __src;
          var_12 = 3;
          bVar3 = (bool)(var_10 != 0 | var_21);
        }
        if (0 < (int)var_10) goto LAB_002127e8;
        if (!var_21) goto LAB_002127c6;
LAB_002126c9:
        uVar2 = *(type_3 *)(var_1 + 0x5c);
        *(type_3 *)(var_1 + 0x14) = 0;
        *(type_3 *)(var_1 + 0x10) = 0;
        *(type_3 *)(var_1 + 4) = uVar2;
        *(type_3 *)(var_1 + 8) = uVar2;
        *(type_3 *)(var_1 + 0xc) = uVar2;
        *(type_3 *)(var_1 + 0x18) = 0;
        var_1[0x65] = (type_2)0x0;
        if (var_12 == 1) {
                    /* WARNING: Subroutine does not return */
          var_11("basic_filebuf::underflow incomplete character in file");
        }
        goto LAB_0021286d;
      }
    }
    var_13 = (type_1)*var_2;
  }
  return var_13;
}


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

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

uint MASKED(int *param_1)

{
  int *piVar1;
  bool bVar2;
  bool bVar3;
  char cVar4;
  uint uVar5;
  byte *pbVar6;
  int iVar7;
  uint uVar8;
  void *pvVar9;
  uint uVar10;
  void *pvVar11;
  int iVar12;
  void *__dest;
  size_t __n;
  uint local_3c;
  void *local_20 [4];
  
  if ((*(byte *)(param_1 + 0x10) & 8) == 0) {
LAB_0021286d:
    uVar5 = 0xffffffff;
  }
  else {
    if (*(char *)((int)param_1 + 0x66) == '\0') {
      pbVar6 = (byte *)param_1[2];
      if ((char)param_1[0x1c] == '\0') goto LAB_002124b2;
LAB_00212506:
      *(undefined1 *)(param_1 + 0x1c) = 0;
      pbVar6 = (byte *)((uint)((byte *)param_1[1] != pbVar6) + param_1[0x1a]);
      param_1[3] = param_1[0x1b];
      param_1[0x1a] = (int)pbVar6;
      param_1[1] = param_1[0x17];
      param_1[2] = (int)pbVar6;
      if ((byte *)param_1[0x1b] <= pbVar6) goto LAB_0021252c;
    }
    else {
      iVar12 = (**(code **)(*param_1 + 0x34))(param_1,0xffffffff);
      if (iVar12 == -1) {
        return 0xffffffff;
      }
      pbVar6 = (byte *)param_1[0x17];
      param_1[5] = 0;
      param_1[4] = 0;
      param_1[1] = (int)pbVar6;
      param_1[2] = (int)pbVar6;
      param_1[3] = (int)pbVar6;
      param_1[6] = 0;
      *(undefined1 *)((int)param_1 + 0x66) = 0;
      if ((char)param_1[0x1c] != '\0') goto LAB_00212506;
LAB_002124b2:
      if ((byte *)param_1[3] <= pbVar6) {
LAB_0021252c:
        iVar12 = 2;
        if (1 < (uint)param_1[0x18]) {
          iVar12 = param_1[0x18];
        }
        uVar5 = iVar12 - 1;
        piVar1 = (int *)param_1[0x1d];
        if (piVar1 == (int *)0x0) {
                    /* WARNING: Subroutine does not return */
          FUN_0022c630();
        }
        cVar4 = (**(code **)(*piVar1 + 0x18))(piVar1);
        if (cVar4 != '\0') {
          uVar8 = FUN_001e7610(param_1 + 0xe,param_1[1],uVar5);
          if (uVar8 != 0) {
            if (0 < (int)uVar8) {
LAB_002127e8:
              pbVar6 = (byte *)param_1[0x17];
              param_1[1] = (int)pbVar6;
              param_1[2] = (int)pbVar6;
              if ((*(byte *)(param_1 + 0x10) & 8) == 0) {
                param_1[3] = (int)pbVar6;
              }
              else {
                param_1[3] = (int)(pbVar6 + uVar8);
              }
              param_1[5] = 0;
              param_1[4] = 0;
              param_1[6] = 0;
              *(undefined1 *)((int)param_1 + 0x65) = 1;
              return (uint)*pbVar6;
            }
LAB_002127c6:
                    /* WARNING: Subroutine does not return */
            FUN_00226af0("basic_filebuf::underflow error reading the file");
          }
LAB_00212848:
          iVar12 = param_1[0x17];
          param_1[5] = 0;
          param_1[4] = 0;
          param_1[1] = iVar12;
          param_1[2] = iVar12;
          param_1[3] = iVar12;
          param_1[6] = 0;
          *(undefined1 *)((int)param_1 + 0x65) = 0;
          goto LAB_0021286d;
        }
        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x14))((int *)param_1[0x1d]);
        if (iVar7 < 1) {
          iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x20))((int *)param_1[0x1d]);
          local_3c = iVar12 + -2 + iVar7;
          uVar8 = uVar5;
        }
        else {
          local_3c = iVar7 * uVar5;
          uVar8 = local_3c;
        }
        __n = param_1[0x21] - param_1[0x20];
        iVar12 = uVar8 - __n;
        if ((int)uVar8 <= (int)__n) {
          iVar12 = 0;
        }
        iVar7 = param_1[0x1f];
        if ((*(char *)((int)param_1 + 0x65) == '\0') || (param_1[3] != param_1[1])) {
          if (iVar7 < (int)local_3c) {
            pvVar11 = (void *)FUN_001e5180(local_3c);
            if (__n != 0) goto LAB_00212947;
            goto LAB_002128b5;
          }
          pvVar11 = (void *)param_1[0x1e];
          if (__n != 0) goto LAB_002128fd;
        }
        else if (__n == 0) {
          if (iVar7 < (int)local_3c) {
            pvVar11 = (void *)FUN_001e5180(local_3c);
            goto LAB_002128b5;
          }
          pvVar11 = (void *)param_1[0x1e];
        }
        else if (iVar7 < (int)local_3c) {
          pvVar11 = (void *)FUN_001e5180(local_3c);
          iVar12 = 0;
LAB_00212947:
          memcpy(pvVar11,(void *)param_1[0x20],__n);
LAB_002128b5:
          if (param_1[0x1e] != 0) {
            FUN_001e6d50(param_1[0x1e]);
          }
          param_1[0x1e] = (int)pvVar11;
          param_1[0x1f] = local_3c;
        }
        else {
          pvVar11 = (void *)param_1[0x1e];
          iVar12 = 0;
LAB_002128fd:
          memmove(pvVar11,(void *)param_1[0x20],__n);
          pvVar11 = (void *)param_1[0x1e];
        }
        pvVar9 = (void *)((int)pvVar11 + __n);
        param_1[0x20] = (int)pvVar11;
        param_1[0x21] = (int)pvVar9;
        param_1[0x15] = param_1[0x13];
        param_1[0x16] = param_1[0x14];
        if (iVar12 != 0) {
          iVar7 = 0;
          goto LAB_00212664;
        }
        __dest = (void *)param_1[1];
        iVar7 = 0;
        local_20[0] = __dest;
        if (pvVar9 <= pvVar11) goto LAB_00212654;
        bVar3 = false;
LAB_00212600:
        local_20[0] = __dest;
        iVar7 = (**(code **)(*(int *)param_1[0x1d] + 0x10))
                          (param_1[0x1d],param_1 + 0x13,pvVar11,pvVar9,param_1 + 0x20,__dest,
                           uVar5 + (int)__dest,local_20);
        if (iVar7 == 3) {
          pvVar9 = (void *)param_1[0x21];
          __dest = (void *)param_1[1];
          goto LAB_00212739;
        }
        uVar8 = (int)local_20[0] - param_1[1];
        if (iVar7 == 2) {
          if (0 < (int)uVar8) goto LAB_002127e8;
          if (!bVar3) {
                    /* WARNING: Subroutine does not return */
            FUN_00226af0("basic_filebuf::underflow invalid byte sequence in file");
          }
          goto LAB_00212848;
        }
        bVar2 = (bool)(uVar8 != 0 | bVar3);
        while (!bVar2) {
LAB_00212654:
          while( true ) {
            pvVar9 = (void *)param_1[0x21];
            iVar12 = 1;
            __n = (int)pvVar9 - param_1[0x1e];
LAB_00212664:
            if (param_1[0x1f] < (int)(__n + iVar12)) {
                    /* WARNING: Subroutine does not return */
              FUN_00226af0("basic_filebuf::underflow codecvt::max_length() is not valid");
            }
            iVar12 = FUN_001e7610(param_1 + 0xe,pvVar9,iVar12);
            if (iVar12 == 0) {
              bVar3 = true;
            }
            else {
              if (iVar12 == -1) goto LAB_002127c6;
              bVar3 = false;
            }
            __dest = (void *)param_1[1];
            pvVar11 = (void *)param_1[0x20];
            pvVar9 = (void *)(iVar12 + param_1[0x21]);
            param_1[0x21] = (int)pvVar9;
            if (pvVar11 < pvVar9) goto LAB_00212600;
            local_20[0] = __dest;
            if (iVar7 == 3) break;
            if (bVar3) goto LAB_002126c9;
          }
LAB_00212739:
          pvVar11 = (void *)param_1[0x1e];
          uVar10 = (int)pvVar9 - (int)pvVar11;
          uVar8 = uVar5;
          if ((uVar5 < uVar10) || (uVar8 = uVar10, uVar10 != 0)) {
            memcpy(__dest,pvVar11,uVar8);
            pvVar11 = (void *)(uVar8 + param_1[0x1e]);
          }
          param_1[0x20] = (int)pvVar11;
          iVar7 = 3;
          bVar2 = (bool)(uVar8 != 0 | bVar3);
        }
        if (0 < (int)uVar8) goto LAB_002127e8;
        if (!bVar3) goto LAB_002127c6;
LAB_002126c9:
        iVar12 = param_1[0x17];
        param_1[5] = 0;
        param_1[4] = 0;
        param_1[1] = iVar12;
        param_1[2] = iVar12;
        param_1[3] = iVar12;
        param_1[6] = 0;
        *(undefined1 *)((int)param_1 + 0x65) = 0;
        if (iVar7 == 1) {
                    /* WARNING: Subroutine does not return */
          FUN_00226af0("basic_filebuf::underflow incomplete character in file");
        }
        goto LAB_0021286d;
      }
    }
    uVar5 = (uint)*pbVar6;
  }
  return uVar5;
}

