
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

size_t readtoken(FILE *stream,char *delim,size_t n_delim,token_buffer *tokenbuffer)

{
  byte bVar1;
  bool bVar2;
  undefined *puVar3;
  FILE *stream_00;
  uint uVar4;
  int *piVar5;
  void *p;
  void *p_00;
  void *pvVar6;
  undefined4 uVar7;
  byte *pbVar8;
  size_t sVar9;
  size_t n;
  token_buffer *n_delim_00;
  token_buffer *ptVar10;
  byte *pbVar11;
  uint uVar12;
  int iVar13;
  byte *pbVar14;
  char *p_01;
  undefined *puVar15;
  code *pcVar16;
  code *pcVar17;
  token_buffer tStack_9c;
  int iStack_94;
  token_buffer *ptStack_90;
  undefined4 uStack_8c;
  undefined *puStack_88;
  uint uStack_84;
  byte *pbStack_80;
  FILE *pFStack_7c;
  byte *pbStack_78;
  char *pcStack_74;
  int *piStack_54;
  word isdelim [8];
  
  puVar3 = PTR___stack_chk_guard_00039368;
  isdelim[0] = 0;
  isdelim[1] = 0;
  isdelim[2] = 0;
  isdelim[3] = 0;
  isdelim[4] = 0;
  isdelim[5] = 0;
  isdelim[6] = 0;
  isdelim[7] = 0;
  stream_00 = *(FILE **)PTR___stack_chk_guard_00039368;
  n_delim_00 = tokenbuffer;
  if (n_delim != 0) {
    n_delim = (size_t)(delim + n_delim);
    n_delim_00 = (token_buffer *)0x1;
    do {
      bVar1 = *delim;
      delim = (char *)((byte *)delim + 1);
      isdelim[bVar1 >> 5] = isdelim[bVar1 >> 5] | 1 << (bVar1 & 0x1f);
    } while ((char *)n_delim != delim);
  }
  do {
    pbVar8 = (byte *)stream->_IO_read_ptr;
    if (pbVar8 < stream->_IO_read_end) {
      stream->_IO_read_ptr = (char *)(pbVar8 + 1);
      uVar12 = (uint)*pbVar8;
      uVar4 = (uint)(*pbVar8 >> 5);
    }
    else {
      uVar12 = (*(code *)PTR___uflow_0003928c)(stream);
      if ((int)uVar12 < 0) break;
      uVar4 = uVar12 >> 5;
    }
  } while ((isdelim[uVar4] >> (uVar12 & 0x1f) & 1) != 0);
  p_01 = tokenbuffer->buffer;
  pbVar14 = (byte *)tokenbuffer->size;
  pbVar8 = (byte *)0x0;
LAB_0001e45c:
  if ((int)uVar12 < 0) {
    if (pbVar8 != (byte *)0x0) {
      if (pbVar8 == pbVar14) goto LAB_0001e474;
LAB_0001e4ac:
      p_01[(int)pbVar8] = '\0';
      goto LAB_0001e4b0;
    }
    pbVar8 = (byte *)0xffffffff;
    goto LAB_0001e4b8;
  }
  if (pbVar8 == pbVar14) {
LAB_0001e474:
    if (p_01 == (char *)0x0) {
      if (pbVar14 == (byte *)0x0) {
        pbVar14 = (byte *)0x40;
      }
      else if ((int)pbVar14 < 0) goto LAB_0001e544;
    }
    else {
      if ((byte *)0x55555553 < pbVar14) {
LAB_0001e544:
                    /* WARNING: Subroutine does not return */
        xalloc_die();
      }
      pbVar14 = pbVar14 + ((uint)pbVar14 >> 1) + 1;
    }
    delim = (char *)pbVar14;
    p_01 = (char *)xrealloc(p_01,(size_t)pbVar14);
    if ((int)uVar12 < 0) goto LAB_0001e4ac;
  }
  if ((isdelim[uVar12 >> 5] >> (uVar12 & 0x1f) & 1) == 0) {
    p_01[(int)pbVar8] = (char)uVar12;
    pbVar11 = (byte *)stream->_IO_read_ptr;
    pbVar8 = pbVar8 + 1;
    if (pbVar11 < stream->_IO_read_end) {
      stream->_IO_read_ptr = (char *)(pbVar11 + 1);
      uVar12 = (uint)*pbVar11;
    }
    else {
      uVar12 = (*(code *)PTR___uflow_0003928c)(stream);
    }
    goto LAB_0001e45c;
  }
  p_01[(int)pbVar8] = '\0';
LAB_0001e4b0:
  tokenbuffer->buffer = p_01;
  tokenbuffer->size = (size_t)pbVar14;
LAB_0001e4b8:
  if (stream_00 == *(FILE **)puVar3) {
    return (size_t)pbVar8;
  }
  puVar15 = PTR___stack_chk_fail_00039350;
  (*(code *)PTR___stack_chk_fail_00039350)();
  piVar5 = *(int **)(puVar15 + 0x1adfc);
  puStack_88 = puVar3;
  uStack_8c = 0x55555554;
  iStack_94 = *piVar5;
  pbVar11 = (byte *)0x40;
  ptStack_90 = tokenbuffer;
  uStack_84 = uVar12;
  pbStack_80 = pbVar8;
  pFStack_7c = stream;
  pbStack_78 = pbVar14;
  pcStack_74 = p_01;
  if ((byte *)delim == (byte *)0x0) {
    sVar9 = 0x100;
  }
  else {
    pbVar11 = (byte *)delim + 1;
    sVar9 = (int)pbVar11 * 4;
    if (((int)sVar9 < 0) || ((uint)pbVar11 >> 0x1e != 0)) {
LAB_0001e7f0:
                    /* WARNING: Subroutine does not return */
      xalloc_die();
    }
  }
  p = xmalloc(sVar9);
  pbVar8 = (byte *)0x0;
  p_00 = xmalloc(sVar9);
  init_tokenbuffer(&tStack_9c);
  do {
    pbVar14 = (byte *)n_delim;
    ptVar10 = n_delim_00;
    sVar9 = readtoken(stream_00,(char *)n_delim,(size_t)n_delim_00,&tStack_9c);
    if (pbVar11 <= pbVar8) {
      if (p == (void *)0x0) {
        pbVar14 = (byte *)0x40;
        if (pbVar11 == (byte *)0x0) {
          pbVar11 = (byte *)0x10;
        }
        else {
          pbVar14 = (byte *)((int)pbVar11 << 2);
          if (((int)pbVar14 < 0) || ((uint)pbVar11 >> 0x1e != 0)) goto LAB_0001e7f0;
        }
      }
      else {
        if ((byte *)0x15555554 < pbVar11) goto LAB_0001e7f0;
        pbVar11 = pbVar11 + ((uint)pbVar11 >> 1) + 1;
        pbVar14 = (byte *)((int)pbVar11 * 4);
      }
      p = xrealloc(p,(size_t)pbVar14);
      p_00 = xrealloc(p_00,(size_t)pbVar14);
    }
    if (sVar9 == 0xffffffff) {
      pcVar16 = *(code **)(puVar15 + 0x1ae08);
      *(undefined4 *)((int)p + (int)pbVar8 * 4) = 0;
      *(undefined4 *)((int)p_00 + (int)pbVar8 * 4) = 0;
      (*pcVar16)(tStack_9c.buffer);
      __gp = p;
      if (piStack_54 == (int *)0x0) {
        (**(code **)(puVar15 + 0x1ae08))(p_00);
      }
      else {
        *piStack_54 = (int)p_00;
      }
      if (iStack_94 != *piVar5) {
        pcVar16 = *(code **)(puVar15 + 0x1ade4);
        iVar13 = iStack_94;
        (*pcVar16)();
        do {
          pcVar17 = *(code **)(pcVar16 + 0x1aac0);
          while( true ) {
            sVar9 = (*pcVar17)(iVar13,pbVar14,ptVar10);
            if (-1 < (int)sVar9) {
              return sVar9;
            }
            piVar5 = (int *)(**(code **)(pcVar16 + 0x1aaa4))();
            bVar2 = ptVar10 < (token_buffer *)0x7ff00001;
            if (*piVar5 == 4) break;
            ptVar10 = (token_buffer *)0x7ff00000;
            if ((*piVar5 != 0x16) || (pcVar17 = *(code **)(pcVar16 + 0x1aac0), bVar2)) {
              return sVar9;
            }
          }
        } while( true );
      }
      return (size_t)pbVar8;
    }
    n = sVar9 + 1;
    if ((int)n < 0) goto LAB_0001e7f0;
    iVar13 = (int)pbVar8 * 4;
    pbVar8 = pbVar8 + 1;
    pvVar6 = xmalloc(n);
    *(size_t *)((int)p_00 + iVar13) = sVar9;
    uVar7 = (**(code **)(puVar15 + 0x1ae00))(pvVar6,tStack_9c.buffer,n);
    *(undefined4 *)((int)p + iVar13) = uVar7;
  } while( true );
}



/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

byte * readtoken(int param_1,byte *param_2,byte *param_3,undefined4 *param_4)

{
  byte bVar1;
  bool bVar2;
  undefined *puVar3;
  uint uVar4;
  int *piVar5;
  int iVar6;
  undefined4 uVar7;
  int iVar8;
  byte *pbVar9;
  int iVar10;
  undefined4 *puVar11;
  undefined4 *puVar12;
  byte *pbVar13;
  uint uVar14;
  int iVar15;
  byte *pbVar16;
  int iVar17;
  undefined *puVar18;
  code *pcVar19;
  code *pcVar20;
  undefined1 auStack_9c [4];
  undefined4 local_98;
  int local_94;
  undefined4 *local_90;
  undefined4 local_8c;
  undefined *local_88;
  uint local_84;
  byte *local_80;
  int local_7c;
  byte *local_78;
  int local_74;
  int *local_54;
  uint local_4c [10];
  
  puVar3 = PTR___stack_chk_guard_00039368;
  local_4c[0] = 0;
  local_4c[1] = 0;
  local_4c[2] = 0;
  local_4c[3] = 0;
  local_4c[4] = 0;
  local_4c[5] = 0;
  local_4c[6] = 0;
  local_4c[7] = 0;
  local_4c[8] = *(int *)PTR___stack_chk_guard_00039368;
  puVar11 = param_4;
  if (param_3 != (byte *)0x0) {
    param_3 = param_2 + (int)param_3;
    puVar11 = (undefined4 *)0x1;
    do {
      bVar1 = *param_2;
      param_2 = param_2 + 1;
      local_4c[bVar1 >> 5] = local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f);
    } while (param_3 != param_2);
  }
  do {
    pbVar9 = *(byte **)(param_1 + 4);
    if (pbVar9 < *(byte **)(param_1 + 8)) {
      *(byte **)(param_1 + 4) = pbVar9 + 1;
      uVar14 = (uint)*pbVar9;
      uVar4 = (uint)(*pbVar9 >> 5);
    }
    else {
      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);
      if ((int)uVar14 < 0) break;
      uVar4 = uVar14 >> 5;
    }
  } while ((local_4c[uVar4] >> (uVar14 & 0x1f) & 1) != 0);
  iVar17 = param_4[1];
  pbVar16 = (byte *)*param_4;
  pbVar9 = (byte *)0x0;
LAB_0001e45c:
  if ((int)uVar14 < 0) {
    if (pbVar9 != (byte *)0x0) {
      if (pbVar9 == pbVar16) goto LAB_0001e474;
LAB_0001e4ac:
      pbVar9[iVar17] = 0;
      goto LAB_0001e4b0;
    }
    pbVar9 = (byte *)0xffffffff;
    goto LAB_0001e4b8;
  }
  if (pbVar9 == pbVar16) {
LAB_0001e474:
    if (iVar17 == 0) {
      if (pbVar16 == (byte *)0x0) {
        pbVar16 = (byte *)0x40;
      }
      else if ((int)pbVar16 < 0) goto LAB_0001e544;
    }
    else {
      if ((byte *)0x55555553 < pbVar16) {
LAB_0001e544:
                    /* WARNING: Subroutine does not return */
        xalloc_die();
      }
      pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;
    }
    param_2 = pbVar16;
    iVar17 = xrealloc(iVar17);
    if ((int)uVar14 < 0) goto LAB_0001e4ac;
  }
  if ((local_4c[uVar14 >> 5] >> (uVar14 & 0x1f) & 1) == 0) {
    pbVar9[iVar17] = (byte)uVar14;
    pbVar13 = *(byte **)(param_1 + 4);
    pbVar9 = pbVar9 + 1;
    if (pbVar13 < *(byte **)(param_1 + 8)) {
      *(byte **)(param_1 + 4) = pbVar13 + 1;
      uVar14 = (uint)*pbVar13;
    }
    else {
      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);
    }
    goto LAB_0001e45c;
  }
  pbVar9[iVar17] = 0;
LAB_0001e4b0:
  param_4[1] = iVar17;
  *param_4 = pbVar16;
LAB_0001e4b8:
  if (local_4c[8] == *(int *)puVar3) {
    return pbVar9;
  }
  uVar4 = local_4c[8];
  puVar18 = PTR___stack_chk_fail_00039350;
  (*(code *)PTR___stack_chk_fail_00039350)();
  piVar5 = *(int **)(puVar18 + 0x1adfc);
  local_88 = puVar3;
  local_8c = 0x55555554;
  local_94 = *piVar5;
  pbVar13 = (byte *)0x40;
  local_90 = param_4;
  local_84 = uVar14;
  local_80 = pbVar9;
  local_7c = param_1;
  local_78 = pbVar16;
  local_74 = iVar17;
  if (param_2 == (byte *)0x0) {
    iVar17 = 0x100;
  }
  else {
    pbVar13 = param_2 + 1;
    iVar17 = (int)pbVar13 * 4;
    if ((iVar17 < 0) || ((uint)pbVar13 >> 0x1e != 0)) {
LAB_0001e7f0:
                    /* WARNING: Subroutine does not return */
      xalloc_die();
    }
  }
  iVar6 = xmalloc(iVar17);
  pbVar9 = (byte *)0x0;
  iVar17 = xmalloc(iVar17);
  init_tokenbuffer(auStack_9c);
  do {
    pbVar16 = param_3;
    puVar12 = puVar11;
    iVar8 = readtoken(uVar4,param_3,puVar11,auStack_9c);
    if (pbVar13 <= pbVar9) {
      if (iVar6 == 0) {
        pbVar16 = (byte *)0x40;
        if (pbVar13 == (byte *)0x0) {
          pbVar13 = (byte *)0x10;
        }
        else {
          pbVar16 = (byte *)((int)pbVar13 << 2);
          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;
        }
      }
      else {
        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;
        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;
        pbVar16 = (byte *)((int)pbVar13 * 4);
      }
      iVar6 = xrealloc(iVar6,pbVar16);
      iVar17 = xrealloc(iVar17,pbVar16);
    }
    if (iVar8 == -1) {
      pcVar19 = *(code **)(puVar18 + 0x1ae08);
      *(undefined4 *)(iVar6 + (int)pbVar9 * 4) = 0;
      *(undefined4 *)(iVar17 + (int)pbVar9 * 4) = 0;
      (*pcVar19)(local_98);
      __gp_1 = iVar6;
      if (local_54 == (int *)0x0) {
        (**(code **)(puVar18 + 0x1ae08))(iVar17);
      }
      else {
        *local_54 = iVar17;
      }
      if (local_94 != *piVar5) {
        pcVar19 = *(code **)(puVar18 + 0x1ade4);
        iVar17 = local_94;
        (*pcVar19)();
        do {
          pcVar20 = *(code **)(pcVar19 + 0x1aac0);
          while( true ) {
            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);
            if (-1 < (int)pbVar9) {
              return pbVar9;
            }
            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();
            bVar2 = puVar12 < (undefined4 *)0x7ff00001;
            if (*piVar5 == 4) break;
            puVar12 = (undefined4 *)0x7ff00000;
            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {
              return pbVar9;
            }
          }
        } while( true );
      }
      return pbVar9;
    }
    iVar10 = iVar8 + 1;
    if (iVar10 < 0) goto LAB_0001e7f0;
    iVar15 = (int)pbVar9 * 4;
    pbVar9 = pbVar9 + 1;
    uVar7 = xmalloc(iVar10);
    *(int *)(iVar17 + iVar15) = iVar8;
    uVar7 = (**(code **)(puVar18 + 0x1ae00))(uVar7,local_98,iVar10);
    *(undefined4 *)(iVar6 + iVar15) = uVar7;
  } while( true );
}


lui gp,0x2
addiu gp,gp,0x2dc4
addu gp,gp,t9
addiu sp,sp,-0x68
addiu t0,sp,0x1c
sw s2,0x4c(sp)
lw s2,-0x7d68(gp)
sw gp,0x10(sp)
sw s5,0x58(sp)
or s5,a0,zero
sw s0,0x44(sp)
or s0,a3,zero
sw ra,0x64(sp)
sw s7,0x60(sp)
sw s6,0x5c(sp)
sw s4,0x54(sp)
sw s3,0x50(sp)
sw s1,0x48(sp)
sw zero,0x1c(sp)
sw zero,0x4(t0)
sw zero,0x8(t0)
sw zero,0xc(t0)
sw zero,0x10(t0)
sw zero,0x14(t0)
sw zero,0x18(t0)
sw zero,0x1c(t0)
lw v0,0x0(s2)
sw v0,0x3c(sp)
beq a2,zero,0x0001e3b4
_nop
addu a2,a1,a2
li a3,0x1
lbu v1,0x0(a1)
addiu a1,a1,0x1
srl v0,v1,0x5
sllv v1,a3,v1
sll v0,v0,0x2
addu v0,t0,v0
lw a0,0x0(v0)
or v1,a0,v1
bne a2,a1,0x0001e38c
_sw v1,0x0(v0)
lw v1,0x4(s5)
lw v0,0x8(s5)
sltu v0,v1,v0
beq v0,zero,0x0001e51c
_addiu v0,v1,0x1
sw v0,0x4(s5)
lbu s3,0x0(v1)
srl v0,s3,0x5
addiu v1,sp,0x40
sll v0,v0,0x2
addu v0,v1,v0
lw v0,-0x24(v0)
srlv v0,v0,s3
andi v0,v0,0x1
bne v0,zero,0x0001e3b4
_nop
lui s1,0x5555
lw s7,0x4(s0)
lw s6,0x0(s0)
or s4,zero,zero
b 0x0001e45c
_addiu s1,s1,0x5554
beq s4,s6,0x0001e474
_nop
srl v0,s3,0x5
addiu a0,sp,0x40
sll v0,v0,0x2
addu v0,a0,v0
lw v0,-0x24(v0)
srlv v0,v0,s3
andi v0,v0,0x1
bne v0,zero,0x0001e550
_addu v1,s7,s4
sb s3,0x0(v1)
lw v1,0x4(s5)
lw v0,0x8(s5)
sltu v0,v1,v0
beq v0,zero,0x0001e4f4
_addiu s4,s4,0x1
addiu v0,v1,0x1
sw v0,0x4(s5)
lbu s3,0x0(v1)
bgez s3,0x0001e40c
_nop
beq s4,zero,0x0001e558
_nop
bne s4,s6,0x0001e4ac
_addu v0,s7,s4
beq s7,zero,0x0001e50c
_sltu v0,s6,s1
beq v0,zero,0x0001e544
_addiu v0,s6,0x1
srl s6,s6,0x1
addu s6,v0,s6
lw t9,-0x7fc0(gp)
or a0,s7,zero
bal 0x0001f78c
_or a1,s6,zero
lw gp,0x10(sp)
bgez s3,0x0001e414
_or s7,v0,zero
addu v0,s7,s4
sb zero,0x0(v0)
sw s7,0x4(s0)
sw s6,0x0(s0)
lw a0,0x3c(sp)
or v0,s4,zero
lw v1,0x0(s2)
bne a0,v1,0x0001e560
_lw ra,0x64(sp)
lw s7,0x60(sp)
lw s6,0x5c(sp)
lw s5,0x58(sp)
lw s4,0x54(sp)
lw s3,0x50(sp)
lw s2,0x4c(sp)
lw s1,0x48(sp)
lw s0,0x44(sp)
jr ra
_addiu sp,sp,0x68
lw t9,-0x7e44(gp)
jalr t9
_or a0,s5,zero
lw gp,0x10(sp)
b 0x0001e45c
_or s3,v0,zero
bne s6,zero,0x0001e53c
_nop
b 0x0001e48c
_li s6,0x40
lw t9,-0x7e44(gp)
jalr t9
_or a0,s5,zero
lw gp,0x10(sp)
bltz v0,0x0001e3f4
_or s3,v0,zero
b 0x0001e3d4
_srl v0,s3,0x5
bgez s6,0x0001e490
_lw t9,-0x7fc0(gp)
lw t9,-0x7f44(gp)
bal 0x0001faf0
_nop
b 0x0001e4b0
_sb zero,0x0(v1)
b 0x0001e4b8
_li s4,-0x1
lw t9,-0x7d80(gp)
jalr t9
_nop
lui gp,0x2
addiu gp,gp,0x2b64
addu gp,gp,t9
addiu sp,sp,-0x68
lw v0,-0x7d68(gp)
lw v1,0x78(sp)
sw v0,0x2c(sp)
sw gp,0x10(sp)
sw v1,0x28(sp)
sw s7,0x5c(sp)
or s7,a3,zero
sw s6,0x58(sp)
or s6,a2,zero
sw s5,0x54(sp)
or s5,a0,zero
sw ra,0x64(sp)
sw s8,0x60(sp)
sw s4,0x50(sp)
sw s3,0x4c(sp)
sw s2,0x48(sp)
sw s1,0x44(sp)
sw s0,0x40(sp)
lw v1,0x7c(sp)
lw v0,0x0(v0)
sw v1,0x24(sp)
sw v0,0x3c(sp)
beq a1,zero,0x0001e600
_li s1,0x40
addiu s1,a1,0x1
srl v0,s1,0x1e
sll v1,s1,0x2
bltz v1,0x0001e7f0
_sltu v0,zero,v0
bne v0,zero,0x0001e7f0
_or s0,v1,zero
b 0x0001e608
_lw t9,-0x7f84(gp)
li s0,0x100
lw t9,-0x7f84(gp)
addiu s3,sp,0x34
or a0,s0,zero
sw s3,0x1c(sp)
bal 0x0001f6d0
_lui s8,0x1555
or a0,s0,zero
lw gp,0x10(sp)
or s2,v0,zero
lw t9,-0x7f84(gp)
bal 0x0001f6d0
_or s0,zero,zero
or a0,s3,zero
lw gp,0x10(sp)
lw t9,-0x7f7c(gp)
bal 0x0001e300
_or s3,v0,zero
addiu v0,s8,0x5555
lw gp,0x10(sp)
b 0x0001e6b0
_sw v0,0x20(sp)
li v0,-0x1
beq s8,v0,0x0001e734
_sll v0,s0,0x2
addiu a2,s8,0x1
bltz a2,0x0001e7f0
_lw t9,-0x7f84(gp)
or a0,a2,zero
sw a2,0x18(sp)
sll s4,s0,0x2
bal 0x0001f6d0
_addiu s0,s0,0x1
addu a0,s3,s4
lw gp,0x10(sp)
lw a1,0x38(sp)
lw a2,0x18(sp)
sw s8,0x0(a0)
lw t9,-0x7d64(gp)
jalr t9
_or a0,v0,zero
addu v1,s2,s4
lw gp,0x10(sp)
sw v0,0x0(v1)
lw t9,-0x7f78(gp)
or a2,s7,zero
lw a3,0x1c(sp)
or a1,s6,zero
bal 0x0001e30c
_or a0,s5,zero
sltu v1,s0,s1
lw gp,0x10(sp)
bne v1,zero,0x0001e658
_or s8,v0,zero
beq s2,zero,0x0001e7b0
_lw v0,0x20(sp)
sltu v0,s1,v0
beq v0,zero,0x0001e7f0
_addiu v0,s1,0x1
srl s1,s1,0x1
addu s1,v0,s1
sll s4,s1,0x2
lw t9,-0x7fc0(gp)
or a0,s2,zero
bal 0x0001f78c
_or a1,s4,zero
or a0,s3,zero
lw gp,0x10(sp)
or a1,s4,zero
lw t9,-0x7fc0(gp)
bal 0x0001f78c
_or s2,v0,zero
or s3,v0,zero
li v0,-0x1
bne s8,v0,0x0001e664
_lw gp,0x10(sp)
sll v0,s0,0x2
lw t9,-0x7d5c(gp)
addu v1,s2,v0
addu v0,s3,v0
sw zero,0x0(v1)
sw zero,0x0(v0)
jalr t9
_lw a0,0x38(sp)
lw v0,0x28(sp)
lw gp,0x10(sp)
sw s2,0x0(v0)
lw v0,0x24(sp)
beq v0,zero,0x0001e7e0
_lw t9,-0x7d5c(gp)
sw s3,0x0(v0)
lw v1,0x2c(sp)
or v0,s0,zero
lw a0,0x3c(sp)
lw v1,0x0(v1)
bne a0,v1,0x0001e7fc
_lw ra,0x64(sp)
lw s8,0x60(sp)
lw s7,0x5c(sp)
lw s6,0x58(sp)
lw s5,0x54(sp)
lw s4,0x50(sp)
lw s3,0x4c(sp)
lw s2,0x48(sp)
lw s1,0x44(sp)
lw s0,0x40(sp)
jr ra
_addiu sp,sp,0x68
beq s1,zero,0x0001e7d8
_li s4,0x40
srl v0,s1,0x1e
sll v1,s1,0x2
bltz v1,0x0001e7f0
_sltu v0,zero,v0
bne v0,zero,0x0001e7f0
_or s4,v1,zero
b 0x0001e6fc
_lw t9,-0x7fc0(gp)
b 0x0001e6f8
_li s1,0x10
jalr t9
_or a0,s3,zero
b 0x0001e76c
_lw gp,0x10(sp)
lw t9,-0x7f44(gp)
bal 0x0001faf0
_nop
lw t9,-0x7d80(gp)
jalr t9
_nop
nop
nop
(translation_unit "/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n\nbyte * readtoken(int param_1,byte *param_2,byte *param_3,undefined4 *param_4)\n\n{\n  byte bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  uint uVar4;\n  int *piVar5;\n  int iVar6;\n  undefined4 uVar7;\n  int iVar8;\n  byte *pbVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  byte *pbVar13;\n  uint uVar14;\n  int iVar15;\n  byte *pbVar16;\n  int iVar17;\n  undefined *puVar18;\n  code *pcVar19;\n  code *pcVar20;\n  undefined1 auStack_9c [4];\n  undefined4 local_98;\n  int local_94;\n  undefined4 *local_90;\n  undefined4 local_8c;\n  undefined *local_88;\n  uint local_84;\n  byte *local_80;\n  int local_7c;\n  byte *local_78;\n  int local_74;\n  int *local_54;\n  uint local_4c [10];\n  \n  puVar3 = PTR___stack_chk_guard_00039368;\n  local_4c[0] = 0;\n  local_4c[1] = 0;\n  local_4c[2] = 0;\n  local_4c[3] = 0;\n  local_4c[4] = 0;\n  local_4c[5] = 0;\n  local_4c[6] = 0;\n  local_4c[7] = 0;\n  local_4c[8] = *(int *)PTR___stack_chk_guard_00039368;\n  puVar11 = param_4;\n  if (param_3 != (byte *)0x0) {\n    param_3 = param_2 + (int)param_3;\n    puVar11 = (undefined4 *)0x1;\n    do {\n      bVar1 = *param_2;\n      param_2 = param_2 + 1;\n      local_4c[bVar1 >> 5] = local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f);\n    } while (param_3 != param_2);\n  }\n  do {\n    pbVar9 = *(byte **)(param_1 + 4);\n    if (pbVar9 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar9 + 1;\n      uVar14 = (uint)*pbVar9;\n      uVar4 = (uint)(*pbVar9 >> 5);\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n      if ((int)uVar14 < 0) break;\n      uVar4 = uVar14 >> 5;\n    }\n  } while ((local_4c[uVar4] >> (uVar14 & 0x1f) & 1) != 0);\n  iVar17 = param_4[1];\n  pbVar16 = (byte *)*param_4;\n  pbVar9 = (byte *)0x0;\nLAB_0001e45c:\n  if ((int)uVar14 < 0) {\n    if (pbVar9 != (byte *)0x0) {\n      if (pbVar9 == pbVar16) goto LAB_0001e474;\nLAB_0001e4ac:\n      pbVar9[iVar17] = 0;\n      goto LAB_0001e4b0;\n    }\n    pbVar9 = (byte *)0xffffffff;\n    goto LAB_0001e4b8;\n  }\n  if (pbVar9 == pbVar16) {\nLAB_0001e474:\n    if (iVar17 == 0) {\n      if (pbVar16 == (byte *)0x0) {\n        pbVar16 = (byte *)0x40;\n      }\n      else if ((int)pbVar16 < 0) goto LAB_0001e544;\n    }\n    else {\n      if ((byte *)0x55555553 < pbVar16) {\nLAB_0001e544:\n                    /* WARNING: Subroutine does not return */\n        xalloc_die();\n      }\n      pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;\n    }\n    param_2 = pbVar16;\n    iVar17 = xrealloc(iVar17);\n    if ((int)uVar14 < 0) goto LAB_0001e4ac;\n  }\n  if ((local_4c[uVar14 >> 5] >> (uVar14 & 0x1f) & 1) == 0) {\n    pbVar9[iVar17] = (byte)uVar14;\n    pbVar13 = *(byte **)(param_1 + 4);\n    pbVar9 = pbVar9 + 1;\n    if (pbVar13 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar13 + 1;\n      uVar14 = (uint)*pbVar13;\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n    }\n    goto LAB_0001e45c;\n  }\n  pbVar9[iVar17] = 0;\nLAB_0001e4b0:\n  param_4[1] = iVar17;\n  *param_4 = pbVar16;\nLAB_0001e4b8:\n  if (local_4c[8] == *(int *)puVar3) {\n    return pbVar9;\n  }\n  uVar4 = local_4c[8];\n  puVar18 = PTR___stack_chk_fail_00039350;\n  (*(code *)PTR___stack_chk_fail_00039350)();\n  piVar5 = *(int **)(puVar18 + 0x1adfc);\n  local_88 = puVar3;\n  local_8c = 0x55555554;\n  local_94 = *piVar5;\n  pbVar13 = (byte *)0x40;\n  local_90 = param_4;\n  local_84 = uVar14;\n  local_80 = pbVar9;\n  local_7c = param_1;\n  local_78 = pbVar16;\n  local_74 = iVar17;\n  if (param_2 == (byte *)0x0) {\n    iVar17 = 0x100;\n  }\n  else {\n    pbVar13 = param_2 + 1;\n    iVar17 = (int)pbVar13 * 4;\n    if ((iVar17 < 0) || ((uint)pbVar13 >> 0x1e != 0)) {\nLAB_0001e7f0:\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }\n  iVar6 = xmalloc(iVar17);\n  pbVar9 = (byte *)0x0;\n  iVar17 = xmalloc(iVar17);\n  init_tokenbuffer(auStack_9c);\n  do {\n    pbVar16 = param_3;\n    puVar12 = puVar11;\n    iVar8 = readtoken(uVar4,param_3,puVar11,auStack_9c);\n    if (pbVar13 <= pbVar9) {\n      if (iVar6 == 0) {\n        pbVar16 = (byte *)0x40;\n        if (pbVar13 == (byte *)0x0) {\n          pbVar13 = (byte *)0x10;\n        }\n        else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;\n        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;\n        pbVar16 = (byte *)((int)pbVar13 * 4);\n      }\n      iVar6 = xrealloc(iVar6,pbVar16);\n      iVar17 = xrealloc(iVar17,pbVar16);\n    }\n    if (iVar8 == -1) {\n      pcVar19 = *(code **)(puVar18 + 0x1ae08);\n      *(undefined4 *)(iVar6 + (int)pbVar9 * 4) = 0;\n      *(undefined4 *)(iVar17 + (int)pbVar9 * 4) = 0;\n      (*pcVar19)(local_98);\n      __gp_1 = iVar6;\n      if (local_54 == (int *)0x0) {\n        (**(code **)(puVar18 + 0x1ae08))(iVar17);\n      }\n      else {\n        *local_54 = iVar17;\n      }\n      if (local_94 != *piVar5) {\n        pcVar19 = *(code **)(puVar18 + 0x1ade4);\n        iVar17 = local_94;\n        (*pcVar19)();\n        do {\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        } while( true );\n      }\n      return pbVar9;\n    }\n    iVar10 = iVar8 + 1;\n    if (iVar10 < 0) goto LAB_0001e7f0;\n    iVar15 = (int)pbVar9 * 4;\n    pbVar9 = pbVar9 + 1;\n    uVar7 = xmalloc(iVar10);\n    *(int *)(iVar17 + iVar15) = iVar8;\n    uVar7 = (**(code **)(puVar18 + 0x1ae00))(uVar7,local_98,iVar10);\n    *(undefined4 *)(iVar6 + iVar15) = uVar7;\n  } while( true );\n}\n\n" comment (function_definition "byte * readtoken(int param_1,byte *param_2,byte *param_3,undefined4 *param_4)\n\n{\n  byte bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  uint uVar4;\n  int *piVar5;\n  int iVar6;\n  undefined4 uVar7;\n  int iVar8;\n  byte *pbVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  byte *pbVar13;\n  uint uVar14;\n  int iVar15;\n  byte *pbVar16;\n  int iVar17;\n  undefined *puVar18;\n  code *pcVar19;\n  code *pcVar20;\n  undefined1 auStack_9c [4];\n  undefined4 local_98;\n  int local_94;\n  undefined4 *local_90;\n  undefined4 local_8c;\n  undefined *local_88;\n  uint local_84;\n  byte *local_80;\n  int local_7c;\n  byte *local_78;\n  int local_74;\n  int *local_54;\n  uint local_4c [10];\n  \n  puVar3 = PTR___stack_chk_guard_00039368;\n  local_4c[0] = 0;\n  local_4c[1] = 0;\n  local_4c[2] = 0;\n  local_4c[3] = 0;\n  local_4c[4] = 0;\n  local_4c[5] = 0;\n  local_4c[6] = 0;\n  local_4c[7] = 0;\n  local_4c[8] = *(int *)PTR___stack_chk_guard_00039368;\n  puVar11 = param_4;\n  if (param_3 != (byte *)0x0) {\n    param_3 = param_2 + (int)param_3;\n    puVar11 = (undefined4 *)0x1;\n    do {\n      bVar1 = *param_2;\n      param_2 = param_2 + 1;\n      local_4c[bVar1 >> 5] = local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f);\n    } while (param_3 != param_2);\n  }\n  do {\n    pbVar9 = *(byte **)(param_1 + 4);\n    if (pbVar9 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar9 + 1;\n      uVar14 = (uint)*pbVar9;\n      uVar4 = (uint)(*pbVar9 >> 5);\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n      if ((int)uVar14 < 0) break;\n      uVar4 = uVar14 >> 5;\n    }\n  } while ((local_4c[uVar4] >> (uVar14 & 0x1f) & 1) != 0);\n  iVar17 = param_4[1];\n  pbVar16 = (byte *)*param_4;\n  pbVar9 = (byte *)0x0;\nLAB_0001e45c:\n  if ((int)uVar14 < 0) {\n    if (pbVar9 != (byte *)0x0) {\n      if (pbVar9 == pbVar16) goto LAB_0001e474;\nLAB_0001e4ac:\n      pbVar9[iVar17] = 0;\n      goto LAB_0001e4b0;\n    }\n    pbVar9 = (byte *)0xffffffff;\n    goto LAB_0001e4b8;\n  }\n  if (pbVar9 == pbVar16) {\nLAB_0001e474:\n    if (iVar17 == 0) {\n      if (pbVar16 == (byte *)0x0) {\n        pbVar16 = (byte *)0x40;\n      }\n      else if ((int)pbVar16 < 0) goto LAB_0001e544;\n    }\n    else {\n      if ((byte *)0x55555553 < pbVar16) {\nLAB_0001e544:\n                    /* WARNING: Subroutine does not return */\n        xalloc_die();\n      }\n      pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;\n    }\n    param_2 = pbVar16;\n    iVar17 = xrealloc(iVar17);\n    if ((int)uVar14 < 0) goto LAB_0001e4ac;\n  }\n  if ((local_4c[uVar14 >> 5] >> (uVar14 & 0x1f) & 1) == 0) {\n    pbVar9[iVar17] = (byte)uVar14;\n    pbVar13 = *(byte **)(param_1 + 4);\n    pbVar9 = pbVar9 + 1;\n    if (pbVar13 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar13 + 1;\n      uVar14 = (uint)*pbVar13;\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n    }\n    goto LAB_0001e45c;\n  }\n  pbVar9[iVar17] = 0;\nLAB_0001e4b0:\n  param_4[1] = iVar17;\n  *param_4 = pbVar16;\nLAB_0001e4b8:\n  if (local_4c[8] == *(int *)puVar3) {\n    return pbVar9;\n  }\n  uVar4 = local_4c[8];\n  puVar18 = PTR___stack_chk_fail_00039350;\n  (*(code *)PTR___stack_chk_fail_00039350)();\n  piVar5 = *(int **)(puVar18 + 0x1adfc);\n  local_88 = puVar3;\n  local_8c = 0x55555554;\n  local_94 = *piVar5;\n  pbVar13 = (byte *)0x40;\n  local_90 = param_4;\n  local_84 = uVar14;\n  local_80 = pbVar9;\n  local_7c = param_1;\n  local_78 = pbVar16;\n  local_74 = iVar17;\n  if (param_2 == (byte *)0x0) {\n    iVar17 = 0x100;\n  }\n  else {\n    pbVar13 = param_2 + 1;\n    iVar17 = (int)pbVar13 * 4;\n    if ((iVar17 < 0) || ((uint)pbVar13 >> 0x1e != 0)) {\nLAB_0001e7f0:\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }\n  iVar6 = xmalloc(iVar17);\n  pbVar9 = (byte *)0x0;\n  iVar17 = xmalloc(iVar17);\n  init_tokenbuffer(auStack_9c);\n  do {\n    pbVar16 = param_3;\n    puVar12 = puVar11;\n    iVar8 = readtoken(uVar4,param_3,puVar11,auStack_9c);\n    if (pbVar13 <= pbVar9) {\n      if (iVar6 == 0) {\n        pbVar16 = (byte *)0x40;\n        if (pbVar13 == (byte *)0x0) {\n          pbVar13 = (byte *)0x10;\n        }\n        else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;\n        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;\n        pbVar16 = (byte *)((int)pbVar13 * 4);\n      }\n      iVar6 = xrealloc(iVar6,pbVar16);\n      iVar17 = xrealloc(iVar17,pbVar16);\n    }\n    if (iVar8 == -1) {\n      pcVar19 = *(code **)(puVar18 + 0x1ae08);\n      *(undefined4 *)(iVar6 + (int)pbVar9 * 4) = 0;\n      *(undefined4 *)(iVar17 + (int)pbVar9 * 4) = 0;\n      (*pcVar19)(local_98);\n      __gp_1 = iVar6;\n      if (local_54 == (int *)0x0) {\n        (**(code **)(puVar18 + 0x1ae08))(iVar17);\n      }\n      else {\n        *local_54 = iVar17;\n      }\n      if (local_94 != *piVar5) {\n        pcVar19 = *(code **)(puVar18 + 0x1ade4);\n        iVar17 = local_94;\n        (*pcVar19)();\n        do {\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        } while( true );\n      }\n      return pbVar9;\n    }\n    iVar10 = iVar8 + 1;\n    if (iVar10 < 0) goto LAB_0001e7f0;\n    iVar15 = (int)pbVar9 * 4;\n    pbVar9 = pbVar9 + 1;\n    uVar7 = xmalloc(iVar10);\n    *(int *)(iVar17 + iVar15) = iVar8;\n    uVar7 = (**(code **)(puVar18 + 0x1ae00))(uVar7,local_98,iVar10);\n    *(undefined4 *)(iVar6 + iVar15) = uVar7;\n  } while( true );\n}" type_identifier (pointer_declarator "* readtoken(int param_1,byte *param_2,byte *param_3,undefined4 *param_4)" * (function_declarator "readtoken(int param_1,byte *param_2,byte *param_3,undefined4 *param_4)" identifier (parameter_list "(int param_1,byte *param_2,byte *param_3,undefined4 *param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "byte *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) )))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  uint uVar4;\n  int *piVar5;\n  int iVar6;\n  undefined4 uVar7;\n  int iVar8;\n  byte *pbVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  byte *pbVar13;\n  uint uVar14;\n  int iVar15;\n  byte *pbVar16;\n  int iVar17;\n  undefined *puVar18;\n  code *pcVar19;\n  code *pcVar20;\n  undefined1 auStack_9c [4];\n  undefined4 local_98;\n  int local_94;\n  undefined4 *local_90;\n  undefined4 local_8c;\n  undefined *local_88;\n  uint local_84;\n  byte *local_80;\n  int local_7c;\n  byte *local_78;\n  int local_74;\n  int *local_54;\n  uint local_4c [10];\n  \n  puVar3 = PTR___stack_chk_guard_00039368;\n  local_4c[0] = 0;\n  local_4c[1] = 0;\n  local_4c[2] = 0;\n  local_4c[3] = 0;\n  local_4c[4] = 0;\n  local_4c[5] = 0;\n  local_4c[6] = 0;\n  local_4c[7] = 0;\n  local_4c[8] = *(int *)PTR___stack_chk_guard_00039368;\n  puVar11 = param_4;\n  if (param_3 != (byte *)0x0) {\n    param_3 = param_2 + (int)param_3;\n    puVar11 = (undefined4 *)0x1;\n    do {\n      bVar1 = *param_2;\n      param_2 = param_2 + 1;\n      local_4c[bVar1 >> 5] = local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f);\n    } while (param_3 != param_2);\n  }\n  do {\n    pbVar9 = *(byte **)(param_1 + 4);\n    if (pbVar9 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar9 + 1;\n      uVar14 = (uint)*pbVar9;\n      uVar4 = (uint)(*pbVar9 >> 5);\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n      if ((int)uVar14 < 0) break;\n      uVar4 = uVar14 >> 5;\n    }\n  } while ((local_4c[uVar4] >> (uVar14 & 0x1f) & 1) != 0);\n  iVar17 = param_4[1];\n  pbVar16 = (byte *)*param_4;\n  pbVar9 = (byte *)0x0;\nLAB_0001e45c:\n  if ((int)uVar14 < 0) {\n    if (pbVar9 != (byte *)0x0) {\n      if (pbVar9 == pbVar16) goto LAB_0001e474;\nLAB_0001e4ac:\n      pbVar9[iVar17] = 0;\n      goto LAB_0001e4b0;\n    }\n    pbVar9 = (byte *)0xffffffff;\n    goto LAB_0001e4b8;\n  }\n  if (pbVar9 == pbVar16) {\nLAB_0001e474:\n    if (iVar17 == 0) {\n      if (pbVar16 == (byte *)0x0) {\n        pbVar16 = (byte *)0x40;\n      }\n      else if ((int)pbVar16 < 0) goto LAB_0001e544;\n    }\n    else {\n      if ((byte *)0x55555553 < pbVar16) {\nLAB_0001e544:\n                    /* WARNING: Subroutine does not return */\n        xalloc_die();\n      }\n      pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;\n    }\n    param_2 = pbVar16;\n    iVar17 = xrealloc(iVar17);\n    if ((int)uVar14 < 0) goto LAB_0001e4ac;\n  }\n  if ((local_4c[uVar14 >> 5] >> (uVar14 & 0x1f) & 1) == 0) {\n    pbVar9[iVar17] = (byte)uVar14;\n    pbVar13 = *(byte **)(param_1 + 4);\n    pbVar9 = pbVar9 + 1;\n    if (pbVar13 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar13 + 1;\n      uVar14 = (uint)*pbVar13;\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n    }\n    goto LAB_0001e45c;\n  }\n  pbVar9[iVar17] = 0;\nLAB_0001e4b0:\n  param_4[1] = iVar17;\n  *param_4 = pbVar16;\nLAB_0001e4b8:\n  if (local_4c[8] == *(int *)puVar3) {\n    return pbVar9;\n  }\n  uVar4 = local_4c[8];\n  puVar18 = PTR___stack_chk_fail_00039350;\n  (*(code *)PTR___stack_chk_fail_00039350)();\n  piVar5 = *(int **)(puVar18 + 0x1adfc);\n  local_88 = puVar3;\n  local_8c = 0x55555554;\n  local_94 = *piVar5;\n  pbVar13 = (byte *)0x40;\n  local_90 = param_4;\n  local_84 = uVar14;\n  local_80 = pbVar9;\n  local_7c = param_1;\n  local_78 = pbVar16;\n  local_74 = iVar17;\n  if (param_2 == (byte *)0x0) {\n    iVar17 = 0x100;\n  }\n  else {\n    pbVar13 = param_2 + 1;\n    iVar17 = (int)pbVar13 * 4;\n    if ((iVar17 < 0) || ((uint)pbVar13 >> 0x1e != 0)) {\nLAB_0001e7f0:\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }\n  iVar6 = xmalloc(iVar17);\n  pbVar9 = (byte *)0x0;\n  iVar17 = xmalloc(iVar17);\n  init_tokenbuffer(auStack_9c);\n  do {\n    pbVar16 = param_3;\n    puVar12 = puVar11;\n    iVar8 = readtoken(uVar4,param_3,puVar11,auStack_9c);\n    if (pbVar13 <= pbVar9) {\n      if (iVar6 == 0) {\n        pbVar16 = (byte *)0x40;\n        if (pbVar13 == (byte *)0x0) {\n          pbVar13 = (byte *)0x10;\n        }\n        else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;\n        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;\n        pbVar16 = (byte *)((int)pbVar13 * 4);\n      }\n      iVar6 = xrealloc(iVar6,pbVar16);\n      iVar17 = xrealloc(iVar17,pbVar16);\n    }\n    if (iVar8 == -1) {\n      pcVar19 = *(code **)(puVar18 + 0x1ae08);\n      *(undefined4 *)(iVar6 + (int)pbVar9 * 4) = 0;\n      *(undefined4 *)(iVar17 + (int)pbVar9 * 4) = 0;\n      (*pcVar19)(local_98);\n      __gp_1 = iVar6;\n      if (local_54 == (int *)0x0) {\n        (**(code **)(puVar18 + 0x1ae08))(iVar17);\n      }\n      else {\n        *local_54 = iVar17;\n      }\n      if (local_94 != *piVar5) {\n        pcVar19 = *(code **)(puVar18 + 0x1ade4);\n        iVar17 = local_94;\n        (*pcVar19)();\n        do {\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        } while( true );\n      }\n      return pbVar9;\n    }\n    iVar10 = iVar8 + 1;\n    if (iVar10 < 0) goto LAB_0001e7f0;\n    iVar15 = (int)pbVar9 * 4;\n    pbVar9 = pbVar9 + 1;\n    uVar7 = xmalloc(iVar10);\n    *(int *)(iVar17 + iVar15) = iVar8;\n    uVar7 = (**(code **)(puVar18 + 0x1ae00))(uVar7,local_98,iVar10);\n    *(undefined4 *)(iVar6 + iVar15) = uVar7;\n  } while( true );\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "byte *pbVar16;" type_identifier (pointer_declarator "*pbVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "undefined *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "code *pcVar19;" type_identifier (pointer_declarator "*pcVar19" * identifier) ;) (declaration "code *pcVar20;" type_identifier (pointer_declarator "*pcVar20" * identifier) ;) (declaration "undefined1 auStack_9c [4];" type_identifier (array_declarator "auStack_9c [4]" identifier [ number_literal ]) ;) (declaration "undefined4 local_98;" type_identifier identifier ;) (declaration "int local_94;" primitive_type identifier ;) (declaration "undefined4 *local_90;" type_identifier (pointer_declarator "*local_90" * identifier) ;) (declaration "undefined4 local_8c;" type_identifier identifier ;) (declaration "undefined *local_88;" type_identifier (pointer_declarator "*local_88" * identifier) ;) (declaration "uint local_84;" type_identifier identifier ;) (declaration "byte *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "int local_7c;" primitive_type identifier ;) (declaration "byte *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "int local_74;" primitive_type identifier ;) (declaration "int *local_54;" primitive_type (pointer_declarator "*local_54" * identifier) ;) (declaration "uint local_4c [10];" type_identifier (array_declarator "local_4c [10]" identifier [ number_literal ]) ;) (expression_statement "puVar3 = PTR___stack_chk_guard_00039368;" (assignment_expression "puVar3 = PTR___stack_chk_guard_00039368" identifier = identifier) ;) (expression_statement "local_4c[0] = 0;" (assignment_expression "local_4c[0] = 0" (subscript_expression "local_4c[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_4c[1] = 0;" (assignment_expression "local_4c[1] = 0" (subscript_expression "local_4c[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_4c[2] = 0;" (assignment_expression "local_4c[2] = 0" (subscript_expression "local_4c[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_4c[3] = 0;" (assignment_expression "local_4c[3] = 0" (subscript_expression "local_4c[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_4c[4] = 0;" (assignment_expression "local_4c[4] = 0" (subscript_expression "local_4c[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_4c[5] = 0;" (assignment_expression "local_4c[5] = 0" (subscript_expression "local_4c[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_4c[6] = 0;" (assignment_expression "local_4c[6] = 0" (subscript_expression "local_4c[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_4c[7] = 0;" (assignment_expression "local_4c[7] = 0" (subscript_expression "local_4c[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_4c[8] = *(int *)PTR___stack_chk_guard_00039368;" (assignment_expression "local_4c[8] = *(int *)PTR___stack_chk_guard_00039368" (subscript_expression "local_4c[8]" identifier [ number_literal ]) = (pointer_expression "*(int *)PTR___stack_chk_guard_00039368" * (cast_expression "(int *)PTR___stack_chk_guard_00039368" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "puVar11 = param_4;" (assignment_expression "puVar11 = param_4" identifier = identifier) ;) (if_statement "if (param_3 != (byte *)0x0) {\n    param_3 = param_2 + (int)param_3;\n    puVar11 = (undefined4 *)0x1;\n    do {\n      bVar1 = *param_2;\n      param_2 = param_2 + 1;\n      local_4c[bVar1 >> 5] = local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f);\n    } while (param_3 != param_2);\n  }" if (parenthesized_expression "(param_3 != (byte *)0x0)" ( (binary_expression "param_3 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    param_3 = param_2 + (int)param_3;\n    puVar11 = (undefined4 *)0x1;\n    do {\n      bVar1 = *param_2;\n      param_2 = param_2 + 1;\n      local_4c[bVar1 >> 5] = local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f);\n    } while (param_3 != param_2);\n  }" { (expression_statement "param_3 = param_2 + (int)param_3;" (assignment_expression "param_3 = param_2 + (int)param_3" identifier = (binary_expression "param_2 + (int)param_3" identifier + (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar11 = (undefined4 *)0x1;" (assignment_expression "puVar11 = (undefined4 *)0x1" identifier = (cast_expression "(undefined4 *)0x1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n      bVar1 = *param_2;\n      param_2 = param_2 + 1;\n      local_4c[bVar1 >> 5] = local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f);\n    } while (param_3 != param_2);" do (compound_statement "{\n      bVar1 = *param_2;\n      param_2 = param_2 + 1;\n      local_4c[bVar1 >> 5] = local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f);\n    }" { (expression_statement "bVar1 = *param_2;" (assignment_expression "bVar1 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "local_4c[bVar1 >> 5] = local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f);" (assignment_expression "local_4c[bVar1 >> 5] = local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f)" (subscript_expression "local_4c[bVar1 >> 5]" identifier [ (binary_expression "bVar1 >> 5" identifier >> number_literal) ]) = (binary_expression "local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f)" (subscript_expression "local_4c[bVar1 >> 5]" identifier [ (binary_expression "bVar1 >> 5" identifier >> number_literal) ]) | (binary_expression "1 << (bVar1 & 0x1f)" number_literal << (parenthesized_expression "(bVar1 & 0x1f)" ( (binary_expression "bVar1 & 0x1f" identifier & number_literal) ))))) ;) }) while (parenthesized_expression "(param_3 != param_2)" ( (binary_expression "param_3 != param_2" identifier != identifier) )) ;) })) (do_statement "do {\n    pbVar9 = *(byte **)(param_1 + 4);\n    if (pbVar9 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar9 + 1;\n      uVar14 = (uint)*pbVar9;\n      uVar4 = (uint)(*pbVar9 >> 5);\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n      if ((int)uVar14 < 0) break;\n      uVar4 = uVar14 >> 5;\n    }\n  } while ((local_4c[uVar4] >> (uVar14 & 0x1f) & 1) != 0);" do (compound_statement "{\n    pbVar9 = *(byte **)(param_1 + 4);\n    if (pbVar9 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar9 + 1;\n      uVar14 = (uint)*pbVar9;\n      uVar4 = (uint)(*pbVar9 >> 5);\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n      if ((int)uVar14 < 0) break;\n      uVar4 = uVar14 >> 5;\n    }\n  }" { (expression_statement "pbVar9 = *(byte **)(param_1 + 4);" (assignment_expression "pbVar9 = *(byte **)(param_1 + 4)" identifier = (pointer_expression "*(byte **)(param_1 + 4)" * (cast_expression "(byte **)(param_1 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (if_statement "if (pbVar9 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar9 + 1;\n      uVar14 = (uint)*pbVar9;\n      uVar4 = (uint)(*pbVar9 >> 5);\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n      if ((int)uVar14 < 0) break;\n      uVar4 = uVar14 >> 5;\n    }" if (parenthesized_expression "(pbVar9 < *(byte **)(param_1 + 8))" ( (binary_expression "pbVar9 < *(byte **)(param_1 + 8)" identifier < (pointer_expression "*(byte **)(param_1 + 8)" * (cast_expression "(byte **)(param_1 + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n      *(byte **)(param_1 + 4) = pbVar9 + 1;\n      uVar14 = (uint)*pbVar9;\n      uVar4 = (uint)(*pbVar9 >> 5);\n    }" { (expression_statement "*(byte **)(param_1 + 4) = pbVar9 + 1;" (assignment_expression "*(byte **)(param_1 + 4) = pbVar9 + 1" (pointer_expression "*(byte **)(param_1 + 4)" * (cast_expression "(byte **)(param_1 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (expression_statement "uVar14 = (uint)*pbVar9;" (assignment_expression "uVar14 = (uint)*pbVar9" identifier = (binary_expression "(uint)*pbVar9" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "uVar4 = (uint)(*pbVar9 >> 5);" (assignment_expression "uVar4 = (uint)(*pbVar9 >> 5)" identifier = (call_expression "(uint)(*pbVar9 >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*pbVar9 >> 5)" ( (binary_expression "*pbVar9 >> 5" (pointer_expression "*pbVar9" * identifier) >> number_literal) )))) ;) }) (else_clause "else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n      if ((int)uVar14 < 0) break;\n      uVar4 = uVar14 >> 5;\n    }" else (compound_statement "{\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n      if ((int)uVar14 < 0) break;\n      uVar4 = uVar14 >> 5;\n    }" { (expression_statement "uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);" (assignment_expression "uVar14 = (*(code *)PTR___uflow_0003928c)(param_1)" identifier = (call_expression "(*(code *)PTR___uflow_0003928c)(param_1)" (parenthesized_expression "(*(code *)PTR___uflow_0003928c)" ( (pointer_expression "*(code *)PTR___uflow_0003928c" * (cast_expression "(code *)PTR___uflow_0003928c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if ((int)uVar14 < 0) break;" if (parenthesized_expression "((int)uVar14 < 0)" ( (binary_expression "(int)uVar14 < 0" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar4 = uVar14 >> 5;" (assignment_expression "uVar4 = uVar14 >> 5" identifier = (binary_expression "uVar14 >> 5" identifier >> number_literal)) ;) }))) }) while (parenthesized_expression "((local_4c[uVar4] >> (uVar14 & 0x1f) & 1) != 0)" ( (binary_expression "(local_4c[uVar4] >> (uVar14 & 0x1f) & 1) != 0" (parenthesized_expression "(local_4c[uVar4] >> (uVar14 & 0x1f) & 1)" ( (binary_expression "local_4c[uVar4] >> (uVar14 & 0x1f) & 1" (binary_expression "local_4c[uVar4] >> (uVar14 & 0x1f)" (subscript_expression "local_4c[uVar4]" identifier [ identifier ]) >> (parenthesized_expression "(uVar14 & 0x1f)" ( (binary_expression "uVar14 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) ;) (expression_statement "iVar17 = param_4[1];" (assignment_expression "iVar17 = param_4[1]" identifier = (subscript_expression "param_4[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar16 = (byte *)*param_4;" (assignment_expression "pbVar16 = (byte *)*param_4" identifier = (cast_expression "(byte *)*param_4" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_4" * identifier))) ;) (expression_statement "pbVar9 = (byte *)0x0;" (assignment_expression "pbVar9 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0001e45c:\n  if ((int)uVar14 < 0) {\n    if (pbVar9 != (byte *)0x0) {\n      if (pbVar9 == pbVar16) goto LAB_0001e474;\nLAB_0001e4ac:\n      pbVar9[iVar17] = 0;\n      goto LAB_0001e4b0;\n    }\n    pbVar9 = (byte *)0xffffffff;\n    goto LAB_0001e4b8;\n  }" statement_identifier : (if_statement "if ((int)uVar14 < 0) {\n    if (pbVar9 != (byte *)0x0) {\n      if (pbVar9 == pbVar16) goto LAB_0001e474;\nLAB_0001e4ac:\n      pbVar9[iVar17] = 0;\n      goto LAB_0001e4b0;\n    }\n    pbVar9 = (byte *)0xffffffff;\n    goto LAB_0001e4b8;\n  }" if (parenthesized_expression "((int)uVar14 < 0)" ( (binary_expression "(int)uVar14 < 0" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    if (pbVar9 != (byte *)0x0) {\n      if (pbVar9 == pbVar16) goto LAB_0001e474;\nLAB_0001e4ac:\n      pbVar9[iVar17] = 0;\n      goto LAB_0001e4b0;\n    }\n    pbVar9 = (byte *)0xffffffff;\n    goto LAB_0001e4b8;\n  }" { (if_statement "if (pbVar9 != (byte *)0x0) {\n      if (pbVar9 == pbVar16) goto LAB_0001e474;\nLAB_0001e4ac:\n      pbVar9[iVar17] = 0;\n      goto LAB_0001e4b0;\n    }" if (parenthesized_expression "(pbVar9 != (byte *)0x0)" ( (binary_expression "pbVar9 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (pbVar9 == pbVar16) goto LAB_0001e474;\nLAB_0001e4ac:\n      pbVar9[iVar17] = 0;\n      goto LAB_0001e4b0;\n    }" { (if_statement "if (pbVar9 == pbVar16) goto LAB_0001e474;" if (parenthesized_expression "(pbVar9 == pbVar16)" ( (binary_expression "pbVar9 == pbVar16" identifier == identifier) )) (goto_statement "goto LAB_0001e474;" goto statement_identifier ;)) (labeled_statement "LAB_0001e4ac:\n      pbVar9[iVar17] = 0;" statement_identifier : (expression_statement "pbVar9[iVar17] = 0;" (assignment_expression "pbVar9[iVar17] = 0" (subscript_expression "pbVar9[iVar17]" identifier [ identifier ]) = number_literal) ;)) (goto_statement "goto LAB_0001e4b0;" goto statement_identifier ;) })) (expression_statement "pbVar9 = (byte *)0xffffffff;" (assignment_expression "pbVar9 = (byte *)0xffffffff" identifier = (cast_expression "(byte *)0xffffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0001e4b8;" goto statement_identifier ;) }))) (if_statement "if (pbVar9 == pbVar16) {\nLAB_0001e474:\n    if (iVar17 == 0) {\n      if (pbVar16 == (byte *)0x0) {\n        pbVar16 = (byte *)0x40;\n      }\n      else if ((int)pbVar16 < 0) goto LAB_0001e544;\n    }\n    else {\n      if ((byte *)0x55555553 < pbVar16) {\nLAB_0001e544:\n                    /* WARNING: Subroutine does not return */\n        xalloc_die();\n      }\n      pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;\n    }\n    param_2 = pbVar16;\n    iVar17 = xrealloc(iVar17);\n    if ((int)uVar14 < 0) goto LAB_0001e4ac;\n  }" if (parenthesized_expression "(pbVar9 == pbVar16)" ( (binary_expression "pbVar9 == pbVar16" identifier == identifier) )) (compound_statement "{\nLAB_0001e474:\n    if (iVar17 == 0) {\n      if (pbVar16 == (byte *)0x0) {\n        pbVar16 = (byte *)0x40;\n      }\n      else if ((int)pbVar16 < 0) goto LAB_0001e544;\n    }\n    else {\n      if ((byte *)0x55555553 < pbVar16) {\nLAB_0001e544:\n                    /* WARNING: Subroutine does not return */\n        xalloc_die();\n      }\n      pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;\n    }\n    param_2 = pbVar16;\n    iVar17 = xrealloc(iVar17);\n    if ((int)uVar14 < 0) goto LAB_0001e4ac;\n  }" { (labeled_statement "LAB_0001e474:\n    if (iVar17 == 0) {\n      if (pbVar16 == (byte *)0x0) {\n        pbVar16 = (byte *)0x40;\n      }\n      else if ((int)pbVar16 < 0) goto LAB_0001e544;\n    }\n    else {\n      if ((byte *)0x55555553 < pbVar16) {\nLAB_0001e544:\n                    /* WARNING: Subroutine does not return */\n        xalloc_die();\n      }\n      pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;\n    }" statement_identifier : (if_statement "if (iVar17 == 0) {\n      if (pbVar16 == (byte *)0x0) {\n        pbVar16 = (byte *)0x40;\n      }\n      else if ((int)pbVar16 < 0) goto LAB_0001e544;\n    }\n    else {\n      if ((byte *)0x55555553 < pbVar16) {\nLAB_0001e544:\n                    /* WARNING: Subroutine does not return */\n        xalloc_die();\n      }\n      pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;\n    }" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (compound_statement "{\n      if (pbVar16 == (byte *)0x0) {\n        pbVar16 = (byte *)0x40;\n      }\n      else if ((int)pbVar16 < 0) goto LAB_0001e544;\n    }" { (if_statement "if (pbVar16 == (byte *)0x0) {\n        pbVar16 = (byte *)0x40;\n      }\n      else if ((int)pbVar16 < 0) goto LAB_0001e544;" if (parenthesized_expression "(pbVar16 == (byte *)0x0)" ( (binary_expression "pbVar16 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pbVar16 = (byte *)0x40;\n      }" { (expression_statement "pbVar16 = (byte *)0x40;" (assignment_expression "pbVar16 = (byte *)0x40" identifier = (cast_expression "(byte *)0x40" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else if ((int)pbVar16 < 0) goto LAB_0001e544;" else (if_statement "if ((int)pbVar16 < 0) goto LAB_0001e544;" if (parenthesized_expression "((int)pbVar16 < 0)" ( (binary_expression "(int)pbVar16 < 0" (cast_expression "(int)pbVar16" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0001e544;" goto statement_identifier ;)))) }) (else_clause "else {\n      if ((byte *)0x55555553 < pbVar16) {\nLAB_0001e544:\n                    /* WARNING: Subroutine does not return */\n        xalloc_die();\n      }\n      pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;\n    }" else (compound_statement "{\n      if ((byte *)0x55555553 < pbVar16) {\nLAB_0001e544:\n                    /* WARNING: Subroutine does not return */\n        xalloc_die();\n      }\n      pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;\n    }" { (if_statement "if ((byte *)0x55555553 < pbVar16) {\nLAB_0001e544:\n                    /* WARNING: Subroutine does not return */\n        xalloc_die();\n      }" if (parenthesized_expression "((byte *)0x55555553 < pbVar16)" ( (binary_expression "(byte *)0x55555553 < pbVar16" (cast_expression "(byte *)0x55555553" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < identifier) )) (compound_statement "{\nLAB_0001e544:\n                    /* WARNING: Subroutine does not return */\n        xalloc_die();\n      }" { (labeled_statement "LAB_0001e544:\n                    /* WARNING: Subroutine does not return */\n        xalloc_die();" statement_identifier : comment (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;)) })) (expression_statement "pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;" (assignment_expression "pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1" identifier = (binary_expression "pbVar16 + ((uint)pbVar16 >> 1) + 1" (binary_expression "pbVar16 + ((uint)pbVar16 >> 1)" identifier + (parenthesized_expression "((uint)pbVar16 >> 1)" ( (binary_expression "(uint)pbVar16 >> 1" (cast_expression "(uint)pbVar16" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) + number_literal)) ;) })))) (expression_statement "param_2 = pbVar16;" (assignment_expression "param_2 = pbVar16" identifier = identifier) ;) (expression_statement "iVar17 = xrealloc(iVar17);" (assignment_expression "iVar17 = xrealloc(iVar17)" identifier = (call_expression "xrealloc(iVar17)" identifier (argument_list "(iVar17)" ( identifier )))) ;) (if_statement "if ((int)uVar14 < 0) goto LAB_0001e4ac;" if (parenthesized_expression "((int)uVar14 < 0)" ( (binary_expression "(int)uVar14 < 0" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0001e4ac;" goto statement_identifier ;)) })) (if_statement "if ((local_4c[uVar14 >> 5] >> (uVar14 & 0x1f) & 1) == 0) {\n    pbVar9[iVar17] = (byte)uVar14;\n    pbVar13 = *(byte **)(param_1 + 4);\n    pbVar9 = pbVar9 + 1;\n    if (pbVar13 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar13 + 1;\n      uVar14 = (uint)*pbVar13;\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n    }\n    goto LAB_0001e45c;\n  }" if (parenthesized_expression "((local_4c[uVar14 >> 5] >> (uVar14 & 0x1f) & 1) == 0)" ( (binary_expression "(local_4c[uVar14 >> 5] >> (uVar14 & 0x1f) & 1) == 0" (parenthesized_expression "(local_4c[uVar14 >> 5] >> (uVar14 & 0x1f) & 1)" ( (binary_expression "local_4c[uVar14 >> 5] >> (uVar14 & 0x1f) & 1" (binary_expression "local_4c[uVar14 >> 5] >> (uVar14 & 0x1f)" (subscript_expression "local_4c[uVar14 >> 5]" identifier [ (binary_expression "uVar14 >> 5" identifier >> number_literal) ]) >> (parenthesized_expression "(uVar14 & 0x1f)" ( (binary_expression "uVar14 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n    pbVar9[iVar17] = (byte)uVar14;\n    pbVar13 = *(byte **)(param_1 + 4);\n    pbVar9 = pbVar9 + 1;\n    if (pbVar13 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar13 + 1;\n      uVar14 = (uint)*pbVar13;\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n    }\n    goto LAB_0001e45c;\n  }" { (expression_statement "pbVar9[iVar17] = (byte)uVar14;" (assignment_expression "pbVar9[iVar17] = (byte)uVar14" (subscript_expression "pbVar9[iVar17]" identifier [ identifier ]) = (cast_expression "(byte)uVar14" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "pbVar13 = *(byte **)(param_1 + 4);" (assignment_expression "pbVar13 = *(byte **)(param_1 + 4)" identifier = (pointer_expression "*(byte **)(param_1 + 4)" * (cast_expression "(byte **)(param_1 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (if_statement "if (pbVar13 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar13 + 1;\n      uVar14 = (uint)*pbVar13;\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n    }" if (parenthesized_expression "(pbVar13 < *(byte **)(param_1 + 8))" ( (binary_expression "pbVar13 < *(byte **)(param_1 + 8)" identifier < (pointer_expression "*(byte **)(param_1 + 8)" * (cast_expression "(byte **)(param_1 + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n      *(byte **)(param_1 + 4) = pbVar13 + 1;\n      uVar14 = (uint)*pbVar13;\n    }" { (expression_statement "*(byte **)(param_1 + 4) = pbVar13 + 1;" (assignment_expression "*(byte **)(param_1 + 4) = pbVar13 + 1" (pointer_expression "*(byte **)(param_1 + 4)" * (cast_expression "(byte **)(param_1 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (expression_statement "uVar14 = (uint)*pbVar13;" (assignment_expression "uVar14 = (uint)*pbVar13" identifier = (binary_expression "(uint)*pbVar13" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) }) (else_clause "else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n    }" else (compound_statement "{\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n    }" { (expression_statement "uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);" (assignment_expression "uVar14 = (*(code *)PTR___uflow_0003928c)(param_1)" identifier = (call_expression "(*(code *)PTR___uflow_0003928c)(param_1)" (parenthesized_expression "(*(code *)PTR___uflow_0003928c)" ( (pointer_expression "*(code *)PTR___uflow_0003928c" * (cast_expression "(code *)PTR___uflow_0003928c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) ;) }))) (goto_statement "goto LAB_0001e45c;" goto statement_identifier ;) })) (expression_statement "pbVar9[iVar17] = 0;" (assignment_expression "pbVar9[iVar17] = 0" (subscript_expression "pbVar9[iVar17]" identifier [ identifier ]) = number_literal) ;) (labeled_statement "LAB_0001e4b0:\n  param_4[1] = iVar17;" statement_identifier : (expression_statement "param_4[1] = iVar17;" (assignment_expression "param_4[1] = iVar17" (subscript_expression "param_4[1]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "*param_4 = pbVar16;" (assignment_expression "*param_4 = pbVar16" (pointer_expression "*param_4" * identifier) = identifier) ;) (labeled_statement "LAB_0001e4b8:\n  if (local_4c[8] == *(int *)puVar3) {\n    return pbVar9;\n  }" statement_identifier : (if_statement "if (local_4c[8] == *(int *)puVar3) {\n    return pbVar9;\n  }" if (parenthesized_expression "(local_4c[8] == *(int *)puVar3)" ( (binary_expression "local_4c[8] == *(int *)puVar3" (subscript_expression "local_4c[8]" identifier [ number_literal ]) == (pointer_expression "*(int *)puVar3" * (cast_expression "(int *)puVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return pbVar9;\n  }" { (return_statement "return pbVar9;" return identifier ;) }))) (expression_statement "uVar4 = local_4c[8];" (assignment_expression "uVar4 = local_4c[8]" identifier = (subscript_expression "local_4c[8]" identifier [ number_literal ])) ;) (expression_statement "puVar18 = PTR___stack_chk_fail_00039350;" (assignment_expression "puVar18 = PTR___stack_chk_fail_00039350" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00039350)();" (call_expression "(*(code *)PTR___stack_chk_fail_00039350)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00039350)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00039350" * (cast_expression "(code *)PTR___stack_chk_fail_00039350" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar5 = *(int **)(puVar18 + 0x1adfc);" (assignment_expression "piVar5 = *(int **)(puVar18 + 0x1adfc)" identifier = (pointer_expression "*(int **)(puVar18 + 0x1adfc)" * (cast_expression "(int **)(puVar18 + 0x1adfc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x1adfc)" ( (binary_expression "puVar18 + 0x1adfc" identifier + number_literal) ))))) ;) (expression_statement "local_88 = puVar3;" (assignment_expression "local_88 = puVar3" identifier = identifier) ;) (expression_statement "local_8c = 0x55555554;" (assignment_expression "local_8c = 0x55555554" identifier = number_literal) ;) (expression_statement "local_94 = *piVar5;" (assignment_expression "local_94 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "pbVar13 = (byte *)0x40;" (assignment_expression "pbVar13 = (byte *)0x40" identifier = (cast_expression "(byte *)0x40" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_90 = param_4;" (assignment_expression "local_90 = param_4" identifier = identifier) ;) (expression_statement "local_84 = uVar14;" (assignment_expression "local_84 = uVar14" identifier = identifier) ;) (expression_statement "local_80 = pbVar9;" (assignment_expression "local_80 = pbVar9" identifier = identifier) ;) (expression_statement "local_7c = param_1;" (assignment_expression "local_7c = param_1" identifier = identifier) ;) (expression_statement "local_78 = pbVar16;" (assignment_expression "local_78 = pbVar16" identifier = identifier) ;) (expression_statement "local_74 = iVar17;" (assignment_expression "local_74 = iVar17" identifier = identifier) ;) (if_statement "if (param_2 == (byte *)0x0) {\n    iVar17 = 0x100;\n  }\n  else {\n    pbVar13 = param_2 + 1;\n    iVar17 = (int)pbVar13 * 4;\n    if ((iVar17 < 0) || ((uint)pbVar13 >> 0x1e != 0)) {\nLAB_0001e7f0:\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }" if (parenthesized_expression "(param_2 == (byte *)0x0)" ( (binary_expression "param_2 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar17 = 0x100;\n  }" { (expression_statement "iVar17 = 0x100;" (assignment_expression "iVar17 = 0x100" identifier = number_literal) ;) }) (else_clause "else {\n    pbVar13 = param_2 + 1;\n    iVar17 = (int)pbVar13 * 4;\n    if ((iVar17 < 0) || ((uint)pbVar13 >> 0x1e != 0)) {\nLAB_0001e7f0:\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }" else (compound_statement "{\n    pbVar13 = param_2 + 1;\n    iVar17 = (int)pbVar13 * 4;\n    if ((iVar17 < 0) || ((uint)pbVar13 >> 0x1e != 0)) {\nLAB_0001e7f0:\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }" { (expression_statement "pbVar13 = param_2 + 1;" (assignment_expression "pbVar13 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "iVar17 = (int)pbVar13 * 4;" (assignment_expression "iVar17 = (int)pbVar13 * 4" identifier = (binary_expression "(int)pbVar13 * 4" (cast_expression "(int)pbVar13" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (if_statement "if ((iVar17 < 0) || ((uint)pbVar13 >> 0x1e != 0)) {\nLAB_0001e7f0:\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }" if (parenthesized_expression "((iVar17 < 0) || ((uint)pbVar13 >> 0x1e != 0))" ( (binary_expression "(iVar17 < 0) || ((uint)pbVar13 >> 0x1e != 0)" (parenthesized_expression "(iVar17 < 0)" ( (binary_expression "iVar17 < 0" identifier < number_literal) )) || (parenthesized_expression "((uint)pbVar13 >> 0x1e != 0)" ( (binary_expression "(uint)pbVar13 >> 0x1e != 0" (binary_expression "(uint)pbVar13 >> 0x1e" (cast_expression "(uint)pbVar13" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) != number_literal) ))) )) (compound_statement "{\nLAB_0001e7f0:\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }" { (labeled_statement "LAB_0001e7f0:\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();" statement_identifier : comment (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;)) })) }))) (expression_statement "iVar6 = xmalloc(iVar17);" (assignment_expression "iVar6 = xmalloc(iVar17)" identifier = (call_expression "xmalloc(iVar17)" identifier (argument_list "(iVar17)" ( identifier )))) ;) (expression_statement "pbVar9 = (byte *)0x0;" (assignment_expression "pbVar9 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar17 = xmalloc(iVar17);" (assignment_expression "iVar17 = xmalloc(iVar17)" identifier = (call_expression "xmalloc(iVar17)" identifier (argument_list "(iVar17)" ( identifier )))) ;) (expression_statement "init_tokenbuffer(auStack_9c);" (call_expression "init_tokenbuffer(auStack_9c)" identifier (argument_list "(auStack_9c)" ( identifier ))) ;) (do_statement "do {\n    pbVar16 = param_3;\n    puVar12 = puVar11;\n    iVar8 = readtoken(uVar4,param_3,puVar11,auStack_9c);\n    if (pbVar13 <= pbVar9) {\n      if (iVar6 == 0) {\n        pbVar16 = (byte *)0x40;\n        if (pbVar13 == (byte *)0x0) {\n          pbVar13 = (byte *)0x10;\n        }\n        else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;\n        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;\n        pbVar16 = (byte *)((int)pbVar13 * 4);\n      }\n      iVar6 = xrealloc(iVar6,pbVar16);\n      iVar17 = xrealloc(iVar17,pbVar16);\n    }\n    if (iVar8 == -1) {\n      pcVar19 = *(code **)(puVar18 + 0x1ae08);\n      *(undefined4 *)(iVar6 + (int)pbVar9 * 4) = 0;\n      *(undefined4 *)(iVar17 + (int)pbVar9 * 4) = 0;\n      (*pcVar19)(local_98);\n      __gp_1 = iVar6;\n      if (local_54 == (int *)0x0) {\n        (**(code **)(puVar18 + 0x1ae08))(iVar17);\n      }\n      else {\n        *local_54 = iVar17;\n      }\n      if (local_94 != *piVar5) {\n        pcVar19 = *(code **)(puVar18 + 0x1ade4);\n        iVar17 = local_94;\n        (*pcVar19)();\n        do {\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        } while( true );\n      }\n      return pbVar9;\n    }\n    iVar10 = iVar8 + 1;\n    if (iVar10 < 0) goto LAB_0001e7f0;\n    iVar15 = (int)pbVar9 * 4;\n    pbVar9 = pbVar9 + 1;\n    uVar7 = xmalloc(iVar10);\n    *(int *)(iVar17 + iVar15) = iVar8;\n    uVar7 = (**(code **)(puVar18 + 0x1ae00))(uVar7,local_98,iVar10);\n    *(undefined4 *)(iVar6 + iVar15) = uVar7;\n  } while( true );" do (compound_statement "{\n    pbVar16 = param_3;\n    puVar12 = puVar11;\n    iVar8 = readtoken(uVar4,param_3,puVar11,auStack_9c);\n    if (pbVar13 <= pbVar9) {\n      if (iVar6 == 0) {\n        pbVar16 = (byte *)0x40;\n        if (pbVar13 == (byte *)0x0) {\n          pbVar13 = (byte *)0x10;\n        }\n        else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;\n        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;\n        pbVar16 = (byte *)((int)pbVar13 * 4);\n      }\n      iVar6 = xrealloc(iVar6,pbVar16);\n      iVar17 = xrealloc(iVar17,pbVar16);\n    }\n    if (iVar8 == -1) {\n      pcVar19 = *(code **)(puVar18 + 0x1ae08);\n      *(undefined4 *)(iVar6 + (int)pbVar9 * 4) = 0;\n      *(undefined4 *)(iVar17 + (int)pbVar9 * 4) = 0;\n      (*pcVar19)(local_98);\n      __gp_1 = iVar6;\n      if (local_54 == (int *)0x0) {\n        (**(code **)(puVar18 + 0x1ae08))(iVar17);\n      }\n      else {\n        *local_54 = iVar17;\n      }\n      if (local_94 != *piVar5) {\n        pcVar19 = *(code **)(puVar18 + 0x1ade4);\n        iVar17 = local_94;\n        (*pcVar19)();\n        do {\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        } while( true );\n      }\n      return pbVar9;\n    }\n    iVar10 = iVar8 + 1;\n    if (iVar10 < 0) goto LAB_0001e7f0;\n    iVar15 = (int)pbVar9 * 4;\n    pbVar9 = pbVar9 + 1;\n    uVar7 = xmalloc(iVar10);\n    *(int *)(iVar17 + iVar15) = iVar8;\n    uVar7 = (**(code **)(puVar18 + 0x1ae00))(uVar7,local_98,iVar10);\n    *(undefined4 *)(iVar6 + iVar15) = uVar7;\n  }" { (expression_statement "pbVar16 = param_3;" (assignment_expression "pbVar16 = param_3" identifier = identifier) ;) (expression_statement "puVar12 = puVar11;" (assignment_expression "puVar12 = puVar11" identifier = identifier) ;) (expression_statement "iVar8 = readtoken(uVar4,param_3,puVar11,auStack_9c);" (assignment_expression "iVar8 = readtoken(uVar4,param_3,puVar11,auStack_9c)" identifier = (call_expression "readtoken(uVar4,param_3,puVar11,auStack_9c)" identifier (argument_list "(uVar4,param_3,puVar11,auStack_9c)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (pbVar13 <= pbVar9) {\n      if (iVar6 == 0) {\n        pbVar16 = (byte *)0x40;\n        if (pbVar13 == (byte *)0x0) {\n          pbVar13 = (byte *)0x10;\n        }\n        else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;\n        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;\n        pbVar16 = (byte *)((int)pbVar13 * 4);\n      }\n      iVar6 = xrealloc(iVar6,pbVar16);\n      iVar17 = xrealloc(iVar17,pbVar16);\n    }" if (parenthesized_expression "(pbVar13 <= pbVar9)" ( (binary_expression "pbVar13 <= pbVar9" identifier <= identifier) )) (compound_statement "{\n      if (iVar6 == 0) {\n        pbVar16 = (byte *)0x40;\n        if (pbVar13 == (byte *)0x0) {\n          pbVar13 = (byte *)0x10;\n        }\n        else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;\n        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;\n        pbVar16 = (byte *)((int)pbVar13 * 4);\n      }\n      iVar6 = xrealloc(iVar6,pbVar16);\n      iVar17 = xrealloc(iVar17,pbVar16);\n    }" { (if_statement "if (iVar6 == 0) {\n        pbVar16 = (byte *)0x40;\n        if (pbVar13 == (byte *)0x0) {\n          pbVar13 = (byte *)0x10;\n        }\n        else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;\n        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;\n        pbVar16 = (byte *)((int)pbVar13 * 4);\n      }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n        pbVar16 = (byte *)0x40;\n        if (pbVar13 == (byte *)0x0) {\n          pbVar13 = (byte *)0x10;\n        }\n        else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }" { (expression_statement "pbVar16 = (byte *)0x40;" (assignment_expression "pbVar16 = (byte *)0x40" identifier = (cast_expression "(byte *)0x40" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (pbVar13 == (byte *)0x0) {\n          pbVar13 = (byte *)0x10;\n        }\n        else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }" if (parenthesized_expression "(pbVar13 == (byte *)0x0)" ( (binary_expression "pbVar13 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pbVar13 = (byte *)0x10;\n        }" { (expression_statement "pbVar13 = (byte *)0x10;" (assignment_expression "pbVar13 = (byte *)0x10" identifier = (cast_expression "(byte *)0x10" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }" else (compound_statement "{\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }" { (expression_statement "pbVar16 = (byte *)((int)pbVar13 << 2);" (assignment_expression "pbVar16 = (byte *)((int)pbVar13 << 2)" identifier = (cast_expression "(byte *)((int)pbVar13 << 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pbVar13 << 2)" ( (binary_expression "(int)pbVar13 << 2" (cast_expression "(int)pbVar13" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) )))) ;) (if_statement "if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;" if (parenthesized_expression "(((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0))" ( (binary_expression "((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)" (parenthesized_expression "((int)pbVar16 < 0)" ( (binary_expression "(int)pbVar16 < 0" (cast_expression "(int)pbVar16" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) || (parenthesized_expression "((uint)pbVar13 >> 0x1e != 0)" ( (binary_expression "(uint)pbVar13 >> 0x1e != 0" (binary_expression "(uint)pbVar13 >> 0x1e" (cast_expression "(uint)pbVar13" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) != number_literal) ))) )) (goto_statement "goto LAB_0001e7f0;" goto statement_identifier ;)) }))) }) (else_clause "else {\n        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;\n        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;\n        pbVar16 = (byte *)((int)pbVar13 * 4);\n      }" else (compound_statement "{\n        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;\n        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;\n        pbVar16 = (byte *)((int)pbVar13 * 4);\n      }" { (if_statement "if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;" if (parenthesized_expression "((byte *)0x15555554 < pbVar13)" ( (binary_expression "(byte *)0x15555554 < pbVar13" (cast_expression "(byte *)0x15555554" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < identifier) )) (goto_statement "goto LAB_0001e7f0;" goto statement_identifier ;)) (expression_statement "pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;" (assignment_expression "pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1" identifier = (binary_expression "pbVar13 + ((uint)pbVar13 >> 1) + 1" (binary_expression "pbVar13 + ((uint)pbVar13 >> 1)" identifier + (parenthesized_expression "((uint)pbVar13 >> 1)" ( (binary_expression "(uint)pbVar13 >> 1" (cast_expression "(uint)pbVar13" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) + number_literal)) ;) (expression_statement "pbVar16 = (byte *)((int)pbVar13 * 4);" (assignment_expression "pbVar16 = (byte *)((int)pbVar13 * 4)" identifier = (cast_expression "(byte *)((int)pbVar13 * 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pbVar13 * 4)" ( (binary_expression "(int)pbVar13 * 4" (cast_expression "(int)pbVar13" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) }))) (expression_statement "iVar6 = xrealloc(iVar6,pbVar16);" (assignment_expression "iVar6 = xrealloc(iVar6,pbVar16)" identifier = (call_expression "xrealloc(iVar6,pbVar16)" identifier (argument_list "(iVar6,pbVar16)" ( identifier , identifier )))) ;) (expression_statement "iVar17 = xrealloc(iVar17,pbVar16);" (assignment_expression "iVar17 = xrealloc(iVar17,pbVar16)" identifier = (call_expression "xrealloc(iVar17,pbVar16)" identifier (argument_list "(iVar17,pbVar16)" ( identifier , identifier )))) ;) })) (if_statement "if (iVar8 == -1) {\n      pcVar19 = *(code **)(puVar18 + 0x1ae08);\n      *(undefined4 *)(iVar6 + (int)pbVar9 * 4) = 0;\n      *(undefined4 *)(iVar17 + (int)pbVar9 * 4) = 0;\n      (*pcVar19)(local_98);\n      __gp_1 = iVar6;\n      if (local_54 == (int *)0x0) {\n        (**(code **)(puVar18 + 0x1ae08))(iVar17);\n      }\n      else {\n        *local_54 = iVar17;\n      }\n      if (local_94 != *piVar5) {\n        pcVar19 = *(code **)(puVar18 + 0x1ade4);\n        iVar17 = local_94;\n        (*pcVar19)();\n        do {\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        } while( true );\n      }\n      return pbVar9;\n    }" if (parenthesized_expression "(iVar8 == -1)" ( (binary_expression "iVar8 == -1" identifier == number_literal) )) (compound_statement "{\n      pcVar19 = *(code **)(puVar18 + 0x1ae08);\n      *(undefined4 *)(iVar6 + (int)pbVar9 * 4) = 0;\n      *(undefined4 *)(iVar17 + (int)pbVar9 * 4) = 0;\n      (*pcVar19)(local_98);\n      __gp_1 = iVar6;\n      if (local_54 == (int *)0x0) {\n        (**(code **)(puVar18 + 0x1ae08))(iVar17);\n      }\n      else {\n        *local_54 = iVar17;\n      }\n      if (local_94 != *piVar5) {\n        pcVar19 = *(code **)(puVar18 + 0x1ade4);\n        iVar17 = local_94;\n        (*pcVar19)();\n        do {\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        } while( true );\n      }\n      return pbVar9;\n    }" { (expression_statement "pcVar19 = *(code **)(puVar18 + 0x1ae08);" (assignment_expression "pcVar19 = *(code **)(puVar18 + 0x1ae08)" identifier = (pointer_expression "*(code **)(puVar18 + 0x1ae08)" * (cast_expression "(code **)(puVar18 + 0x1ae08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x1ae08)" ( (binary_expression "puVar18 + 0x1ae08" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar6 + (int)pbVar9 * 4) = 0;" (assignment_expression "*(undefined4 *)(iVar6 + (int)pbVar9 * 4) = 0" (pointer_expression "*(undefined4 *)(iVar6 + (int)pbVar9 * 4)" * (cast_expression "(undefined4 *)(iVar6 + (int)pbVar9 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + (int)pbVar9 * 4)" ( (binary_expression "iVar6 + (int)pbVar9 * 4" identifier + (binary_expression "(int)pbVar9 * 4" (cast_expression "(int)pbVar9" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar17 + (int)pbVar9 * 4) = 0;" (assignment_expression "*(undefined4 *)(iVar17 + (int)pbVar9 * 4) = 0" (pointer_expression "*(undefined4 *)(iVar17 + (int)pbVar9 * 4)" * (cast_expression "(undefined4 *)(iVar17 + (int)pbVar9 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + (int)pbVar9 * 4)" ( (binary_expression "iVar17 + (int)pbVar9 * 4" identifier + (binary_expression "(int)pbVar9 * 4" (cast_expression "(int)pbVar9" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) = number_literal) ;) (expression_statement "(*pcVar19)(local_98);" (call_expression "(*pcVar19)(local_98)" (parenthesized_expression "(*pcVar19)" ( (pointer_expression "*pcVar19" * identifier) )) (argument_list "(local_98)" ( identifier ))) ;) (expression_statement "__gp_1 = iVar6;" (assignment_expression "__gp_1 = iVar6" identifier = identifier) ;) (if_statement "if (local_54 == (int *)0x0) {\n        (**(code **)(puVar18 + 0x1ae08))(iVar17);\n      }\n      else {\n        *local_54 = iVar17;\n      }" if (parenthesized_expression "(local_54 == (int *)0x0)" ( (binary_expression "local_54 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        (**(code **)(puVar18 + 0x1ae08))(iVar17);\n      }" { (expression_statement "(**(code **)(puVar18 + 0x1ae08))(iVar17);" (call_expression "(**(code **)(puVar18 + 0x1ae08))(iVar17)" (parenthesized_expression "(**(code **)(puVar18 + 0x1ae08))" ( (pointer_expression "**(code **)(puVar18 + 0x1ae08)" * (pointer_expression "*(code **)(puVar18 + 0x1ae08)" * (cast_expression "(code **)(puVar18 + 0x1ae08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x1ae08)" ( (binary_expression "puVar18 + 0x1ae08" identifier + number_literal) ))))) )) (argument_list "(iVar17)" ( identifier ))) ;) }) (else_clause "else {\n        *local_54 = iVar17;\n      }" else (compound_statement "{\n        *local_54 = iVar17;\n      }" { (expression_statement "*local_54 = iVar17;" (assignment_expression "*local_54 = iVar17" (pointer_expression "*local_54" * identifier) = identifier) ;) }))) (if_statement "if (local_94 != *piVar5) {\n        pcVar19 = *(code **)(puVar18 + 0x1ade4);\n        iVar17 = local_94;\n        (*pcVar19)();\n        do {\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        } while( true );\n      }" if (parenthesized_expression "(local_94 != *piVar5)" ( (binary_expression "local_94 != *piVar5" identifier != (pointer_expression "*piVar5" * identifier)) )) (compound_statement "{\n        pcVar19 = *(code **)(puVar18 + 0x1ade4);\n        iVar17 = local_94;\n        (*pcVar19)();\n        do {\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        } while( true );\n      }" { (expression_statement "pcVar19 = *(code **)(puVar18 + 0x1ade4);" (assignment_expression "pcVar19 = *(code **)(puVar18 + 0x1ade4)" identifier = (pointer_expression "*(code **)(puVar18 + 0x1ade4)" * (cast_expression "(code **)(puVar18 + 0x1ade4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x1ade4)" ( (binary_expression "puVar18 + 0x1ade4" identifier + number_literal) ))))) ;) (expression_statement "iVar17 = local_94;" (assignment_expression "iVar17 = local_94" identifier = identifier) ;) (expression_statement "(*pcVar19)();" (call_expression "(*pcVar19)()" (parenthesized_expression "(*pcVar19)" ( (pointer_expression "*pcVar19" * identifier) )) (argument_list "()" ( ))) ;) (do_statement "do {\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        } while( true );" do (compound_statement "{\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        }" { (expression_statement "pcVar20 = *(code **)(pcVar19 + 0x1aac0);" (assignment_expression "pcVar20 = *(code **)(pcVar19 + 0x1aac0)" identifier = (pointer_expression "*(code **)(pcVar19 + 0x1aac0)" * (cast_expression "(code **)(pcVar19 + 0x1aac0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x1aac0)" ( (binary_expression "pcVar19 + 0x1aac0" identifier + number_literal) ))))) ;) (while_statement "while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }" { (expression_statement "pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);" (assignment_expression "pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12)" identifier = (cast_expression "(byte *)(*pcVar20)(iVar17,pbVar16,puVar12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar20)(iVar17,pbVar16,puVar12)" (parenthesized_expression "(*pcVar20)" ( (pointer_expression "*pcVar20" * identifier) )) (argument_list "(iVar17,pbVar16,puVar12)" ( identifier , identifier , identifier ))))) ;) (if_statement "if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }" if (parenthesized_expression "(-1 < (int)pbVar9)" ( (binary_expression "-1 < (int)pbVar9" number_literal < (cast_expression "(int)pbVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              return pbVar9;\n            }" { (return_statement "return pbVar9;" return identifier ;) })) (expression_statement "piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();" (assignment_expression "piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))()" identifier = (cast_expression "(int *)(**(code **)(pcVar19 + 0x1aaa4))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar19 + 0x1aaa4))()" (parenthesized_expression "(**(code **)(pcVar19 + 0x1aaa4))" ( (pointer_expression "**(code **)(pcVar19 + 0x1aaa4)" * (pointer_expression "*(code **)(pcVar19 + 0x1aaa4)" * (cast_expression "(code **)(pcVar19 + 0x1aaa4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x1aaa4)" ( (binary_expression "pcVar19 + 0x1aaa4" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "bVar2 = puVar12 < (undefined4 *)0x7ff00001;" (assignment_expression "bVar2 = puVar12 < (undefined4 *)0x7ff00001" identifier = (binary_expression "puVar12 < (undefined4 *)0x7ff00001" identifier < (cast_expression "(undefined4 *)0x7ff00001" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (*piVar5 == 4) break;" if (parenthesized_expression "(*piVar5 == 4)" ( (binary_expression "*piVar5 == 4" (pointer_expression "*piVar5" * identifier) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar12 = (undefined4 *)0x7ff00000;" (assignment_expression "puVar12 = (undefined4 *)0x7ff00000" identifier = (cast_expression "(undefined4 *)0x7ff00000" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }" if (parenthesized_expression "((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2))" ( (binary_expression "(*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)" (parenthesized_expression "(*piVar5 != 0x16)" ( (binary_expression "*piVar5 != 0x16" (pointer_expression "*piVar5" * identifier) != number_literal) )) || (parenthesized_expression "(pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)" ( (comma_expression "pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2" (assignment_expression "pcVar20 = *(code **)(pcVar19 + 0x1aac0)" identifier = (pointer_expression "*(code **)(pcVar19 + 0x1aac0)" * (cast_expression "(code **)(pcVar19 + 0x1aac0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x1aac0)" ( (binary_expression "pcVar19 + 0x1aac0" identifier + number_literal) ))))) , identifier) ))) )) (compound_statement "{\n              return pbVar9;\n            }" { (return_statement "return pbVar9;" return identifier ;) })) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (return_statement "return pbVar9;" return identifier ;) })) (expression_statement "iVar10 = iVar8 + 1;" (assignment_expression "iVar10 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (if_statement "if (iVar10 < 0) goto LAB_0001e7f0;" if (parenthesized_expression "(iVar10 < 0)" ( (binary_expression "iVar10 < 0" identifier < number_literal) )) (goto_statement "goto LAB_0001e7f0;" goto statement_identifier ;)) (expression_statement "iVar15 = (int)pbVar9 * 4;" (assignment_expression "iVar15 = (int)pbVar9 * 4" identifier = (binary_expression "(int)pbVar9 * 4" (cast_expression "(int)pbVar9" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (expression_statement "uVar7 = xmalloc(iVar10);" (assignment_expression "uVar7 = xmalloc(iVar10)" identifier = (call_expression "xmalloc(iVar10)" identifier (argument_list "(iVar10)" ( identifier )))) ;) (expression_statement "*(int *)(iVar17 + iVar15) = iVar8;" (assignment_expression "*(int *)(iVar17 + iVar15) = iVar8" (pointer_expression "*(int *)(iVar17 + iVar15)" * (cast_expression "(int *)(iVar17 + iVar15)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + iVar15)" ( (binary_expression "iVar17 + iVar15" identifier + identifier) )))) = identifier) ;) (expression_statement "uVar7 = (**(code **)(puVar18 + 0x1ae00))(uVar7,local_98,iVar10);" (assignment_expression "uVar7 = (**(code **)(puVar18 + 0x1ae00))(uVar7,local_98,iVar10)" identifier = (call_expression "(**(code **)(puVar18 + 0x1ae00))(uVar7,local_98,iVar10)" (parenthesized_expression "(**(code **)(puVar18 + 0x1ae00))" ( (pointer_expression "**(code **)(puVar18 + 0x1ae00)" * (pointer_expression "*(code **)(puVar18 + 0x1ae00)" * (cast_expression "(code **)(puVar18 + 0x1ae00)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x1ae00)" ( (binary_expression "puVar18 + 0x1ae00" identifier + number_literal) ))))) )) (argument_list "(uVar7,local_98,iVar10)" ( identifier , identifier , identifier )))) ;) (expression_statement "*(undefined4 *)(iVar6 + iVar15) = uVar7;" (assignment_expression "*(undefined4 *)(iVar6 + iVar15) = uVar7" (pointer_expression "*(undefined4 *)(iVar6 + iVar15)" * (cast_expression "(undefined4 *)(iVar6 + iVar15)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + iVar15)" ( (binary_expression "iVar6 + iVar15" identifier + identifier) )))) = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n\nsize_t readtoken(FILE *stream,char *delim,size_t n_delim,token_buffer *tokenbuffer)\n\n{\n  byte bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  FILE *stream_00;\n  uint uVar4;\n  int *piVar5;\n  void *p;\n  void *p_00;\n  void *pvVar6;\n  undefined4 uVar7;\n  byte *pbVar8;\n  size_t sVar9;\n  size_t n;\n  token_buffer *n_delim_00;\n  token_buffer *ptVar10;\n  byte *pbVar11;\n  uint uVar12;\n  int iVar13;\n  byte *pbVar14;\n  char *p_01;\n  undefined *puVar15;\n  code *pcVar16;\n  code *pcVar17;\n  token_buffer tStack_9c;\n  int iStack_94;\n  token_buffer *ptStack_90;\n  undefined4 uStack_8c;\n  undefined *puStack_88;\n  uint uStack_84;\n  byte *pbStack_80;\n  FILE *pFStack_7c;\n  byte *pbStack_78;\n  char *pcStack_74;\n  int *piStack_54;\n  word isdelim [8];\n  \n  puVar3 = PTR___stack_chk_guard_00039368;\n  isdelim[0] = 0;\n  isdelim[1] = 0;\n  isdelim[2] = 0;\n  isdelim[3] = 0;\n  isdelim[4] = 0;\n  isdelim[5] = 0;\n  isdelim[6] = 0;\n  isdelim[7] = 0;\n  stream_00 = *(FILE **)PTR___stack_chk_guard_00039368;\n  n_delim_00 = tokenbuffer;\n  if (n_delim != 0) {\n    n_delim = (size_t)(delim + n_delim);\n    n_delim_00 = (token_buffer *)0x1;\n    do {\n      bVar1 = *delim;\n      delim = (char *)((byte *)delim + 1);\n      isdelim[bVar1 >> 5] = isdelim[bVar1 >> 5] | 1 << (bVar1 & 0x1f);\n    } while ((char *)n_delim != delim);\n  }\n  do {\n    pbVar8 = (byte *)stream->_IO_read_ptr;\n    if (pbVar8 < stream->_IO_read_end) {\n      stream->_IO_read_ptr = (char *)(pbVar8 + 1);\n      uVar12 = (uint)*pbVar8;\n      uVar4 = (uint)(*pbVar8 >> 5);\n    }\n    else {\n      uVar12 = (*(code *)PTR___uflow_0003928c)(stream);\n      if ((int)uVar12 < 0) break;\n      uVar4 = uVar12 >> 5;\n    }\n  } while ((isdelim[uVar4] >> (uVar12 & 0x1f) & 1) != 0);\n  p_01 = tokenbuffer->buffer;\n  pbVar14 = (byte *)tokenbuffer->size;\n  pbVar8 = (byte *)0x0;\nLAB_0001e45c:\n  if ((int)uVar12 < 0) {\n    if (pbVar8 != (byte *)0x0) {\n      if (pbVar8 == pbVar14) goto LAB_0001e474;\nLAB_0001e4ac:\n      p_01[(int)pbVar8] = '\0';\n      goto LAB_0001e4b0;\n    }\n    pbVar8 = (byte *)0xffffffff;\n    goto LAB_0001e4b8;\n  }\n  if (pbVar8 == pbVar14) {\nLAB_0001e474:\n    if (p_01 == (char *)0x0) {\n      if (pbVar14 == (byte *)0x0) {\n        pbVar14 = (byte *)0x40;\n      }\n      else if ((int)pbVar14 < 0) goto LAB_0001e544;\n    }\n    else {\n      if ((byte *)0x55555553 < pbVar14) {\nLAB_0001e544:\n                    /* WARNING: Subroutine does not return */\n        xalloc_die();\n      }\n      pbVar14 = pbVar14 + ((uint)pbVar14 >> 1) + 1;\n    }\n    delim = (char *)pbVar14;\n    p_01 = (char *)xrealloc(p_01,(size_t)pbVar14);\n    if ((int)uVar12 < 0) goto LAB_0001e4ac;\n  }\n  if ((isdelim[uVar12 >> 5] >> (uVar12 & 0x1f) & 1) == 0) {\n    p_01[(int)pbVar8] = (char)uVar12;\n    pbVar11 = (byte *)stream->_IO_read_ptr;\n    pbVar8 = pbVar8 + 1;\n    if (pbVar11 < stream->_IO_read_end) {\n      stream->_IO_read_ptr = (char *)(pbVar11 + 1);\n      uVar12 = (uint)*pbVar11;\n    }\n    else {\n      uVar12 = (*(code *)PTR___uflow_0003928c)(stream);\n    }\n    goto LAB_0001e45c;\n  }\n  p_01[(int)pbVar8] = '\0';\nLAB_0001e4b0:\n  tokenbuffer->buffer = p_01;\n  tokenbuffer->size = (size_t)pbVar14;\nLAB_0001e4b8:\n  if (stream_00 == *(FILE **)puVar3) {\n    return (size_t)pbVar8;\n  }\n  puVar15 = PTR___stack_chk_fail_00039350;\n  (*(code *)PTR___stack_chk_fail_00039350)();\n  piVar5 = *(int **)(puVar15 + 0x1adfc);\n  puStack_88 = puVar3;\n  uStack_8c = 0x55555554;\n  iStack_94 = *piVar5;\n  pbVar11 = (byte *)0x40;\n  ptStack_90 = tokenbuffer;\n  uStack_84 = uVar12;\n  pbStack_80 = pbVar8;\n  pFStack_7c = stream;\n  pbStack_78 = pbVar14;\n  pcStack_74 = p_01;\n  if ((byte *)delim == (byte *)0x0) {\n    sVar9 = 0x100;\n  }\n  else {\n    pbVar11 = (byte *)delim + 1;\n    sVar9 = (int)pbVar11 * 4;\n    if (((int)sVar9 < 0) || ((uint)pbVar11 >> 0x1e != 0)) {\nLAB_0001e7f0:\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }\n  p = xmalloc(sVar9);\n  pbVar8 = (byte *)0x0;\n  p_00 = xmalloc(sVar9);\n  init_tokenbuffer(&tStack_9c);\n  do {\n    pbVar14 = (byte *)n_delim;\n    ptVar10 = n_delim_00;\n    sVar9 = readtoken(stream_00,(char *)n_delim,(size_t)n_delim_00,&tStack_9c);\n    if (pbVar11 <= pbVar8) {\n      if (p == (void *)0x0) {\n        pbVar14 = (byte *)0x40;\n        if (pbVar11 == (byte *)0x0) {\n          pbVar11 = (byte *)0x10;\n        }\n        else {\n          pbVar14 = (byte *)((int)pbVar11 << 2);\n          if (((int)pbVar14 < 0) || ((uint)pbVar11 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar11) goto LAB_0001e7f0;\n        pbVar11 = pbVar11 + ((uint)pbVar11 >> 1) + 1;\n        pbVar14 = (byte *)((int)pbVar11 * 4);\n      }\n      p = xrealloc(p,(size_t)pbVar14);\n      p_00 = xrealloc(p_00,(size_t)pbVar14);\n    }\n    if (sVar9 == 0xffffffff) {\n      pcVar16 = *(code **)(puVar15 + 0x1ae08);\n      *(undefined4 *)((int)p + (int)pbVar8 * 4) = 0;\n      *(undefined4 *)((int)p_00 + (int)pbVar8 * 4) = 0;\n      (*pcVar16)(tStack_9c.buffer);\n      __gp = p;\n      if (piStack_54 == (int *)0x0) {\n        (**(code **)(puVar15 + 0x1ae08))(p_00);\n      }\n      else {\n        *piStack_54 = (int)p_00;\n      }\n      if (iStack_94 != *piVar5) {\n        pcVar16 = *(code **)(puVar15 + 0x1ade4);\n        iVar13 = iStack_94;\n        (*pcVar16)();\n        do {\n          pcVar17 = *(code **)(pcVar16 + 0x1aac0);\n          while( true ) {\n            sVar9 = (*pcVar17)(iVar13,pbVar14,ptVar10);\n            if (-1 < (int)sVar9) {\n              return sVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar16 + 0x1aaa4))();\n            bVar2 = ptVar10 < (token_buffer *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            ptVar10 = (token_buffer *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar17 = *(code **)(pcVar16 + 0x1aac0), bVar2)) {\n              return sVar9;\n            }\n          }\n        } while( true );\n      }\n      return (size_t)pbVar8;\n    }\n    n = sVar9 + 1;\n    if ((int)n < 0) goto LAB_0001e7f0;\n    iVar13 = (int)pbVar8 * 4;\n    pbVar8 = pbVar8 + 1;\n    pvVar6 = xmalloc(n);\n    *(size_t *)((int)p_00 + iVar13) = sVar9;\n    uVar7 = (**(code **)(puVar15 + 0x1ae00))(pvVar6,tStack_9c.buffer,n);\n    *(undefined4 *)((int)p + iVar13) = uVar7;\n  } while( true );\n}\n\n" comment (function_definition "size_t readtoken(FILE *stream,char *delim,size_t n_delim,token_buffer *tokenbuffer)\n\n{\n  byte bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  FILE *stream_00;\n  uint uVar4;\n  int *piVar5;\n  void *p;\n  void *p_00;\n  void *pvVar6;\n  undefined4 uVar7;\n  byte *pbVar8;\n  size_t sVar9;\n  size_t n;\n  token_buffer *n_delim_00;\n  token_buffer *ptVar10;\n  byte *pbVar11;\n  uint uVar12;\n  int iVar13;\n  byte *pbVar14;\n  char *p_01;\n  undefined *puVar15;\n  code *pcVar16;\n  code *pcVar17;\n  token_buffer tStack_9c;\n  int iStack_94;\n  token_buffer *ptStack_90;\n  undefined4 uStack_8c;\n  undefined *puStack_88;\n  uint uStack_84;\n  byte *pbStack_80;\n  FILE *pFStack_7c;\n  byte *pbStack_78;\n  char *pcStack_74;\n  int *piStack_54;\n  word isdelim [8];\n  \n  puVar3 = PTR___stack_chk_guard_00039368;\n  isdelim[0] = 0;\n  isdelim[1] = 0;\n  isdelim[2] = 0;\n  isdelim[3] = 0;\n  isdelim[4] = 0;\n  isdelim[5] = 0;\n  isdelim[6] = 0;\n  isdelim[7] = 0;\n  stream_00 = *(FILE **)PTR___stack_chk_guard_00039368;\n  n_delim_00 = tokenbuffer;\n  if (n_delim != 0) {\n    n_delim = (size_t)(delim + n_delim);\n    n_delim_00 = (token_buffer *)0x1;\n    do {\n      bVar1 = *delim;\n      delim = (char *)((byte *)delim + 1);\n      isdelim[bVar1 >> 5] = isdelim[bVar1 >> 5] | 1 << (bVar1 & 0x1f);\n    } while ((char *)n_delim != delim);\n  }\n  do {\n    pbVar8 = (byte *)stream->_IO_read_ptr;\n    if (pbVar8 < stream->_IO_read_end) {\n      stream->_IO_read_ptr = (char *)(pbVar8 + 1);\n      uVar12 = (uint)*pbVar8;\n      uVar4 = (uint)(*pbVar8 >> 5);\n    }\n    else {\n      uVar12 = (*(code *)PTR___uflow_0003928c)(stream);\n      if ((int)uVar12 < 0) break;\n      uVar4 = uVar12 >> 5;\n    }\n  } while ((isdelim[uVar4] >> (uVar12 & 0x1f) & 1) != 0);\n  p_01 = tokenbuffer->buffer;\n  pbVar14 = (byte *)tokenbuffer->size;\n  pbVar8 = (byte *)0x0;\nLAB_0001e45c:\n  if ((int)uVar12 < 0) {\n    if (pbVar8 != (byte *)0x0) {\n      if (pbVar8 == pbVar14) goto LAB_0001e474;\nLAB_0001e4ac:\n      p_01[(int)pbVar8] = '\0';\n      goto LAB_0001e4b0;\n    }\n    pbVar8 = (byte *)0xffffffff;\n    goto LAB_0001e4b8;\n  }\n  if (pbVar8 == pbVar14) {\nLAB_0001e474:\n    if (p_01 == (char *)0x0) {\n      if (pbVar14 == (byte *)0x0) {\n        pbVar14 = (byte *)0x40;\n      }\n      else if ((int)pbVar14 < 0) goto LAB_0001e544;\n    }\n    else {\n      if ((byte *)0x55555553 < pbVar14) {\nLAB_0001e544:\n                    /* WARNING: Subroutine does not return */\n        xalloc_die();\n      }\n      pbVar14 = pbVar14 + ((uint)pbVar14 >> 1) + 1;\n    }\n    delim = (char *)pbVar14;\n    p_01 = (char *)xrealloc(p_01,(size_t)pbVar14);\n    if ((int)uVar12 < 0) goto LAB_0001e4ac;\n  }\n  if ((isdelim[uVar12 >> 5] >> (uVar12 & 0x1f) & 1) == 0) {\n    p_01[(int)pbVar8] = (char)uVar12;\n    pbVar11 = (byte *)stream->_IO_read_ptr;\n    pbVar8 = pbVar8 + 1;\n    if (pbVar11 < stream->_IO_read_end) {\n      stream->_IO_read_ptr = (char *)(pbVar11 + 1);\n      uVar12 = (uint)*pbVar11;\n    }\n    else {\n      uVar12 = (*(code *)PTR___uflow_0003928c)(stream);\n    }\n    goto LAB_0001e45c;\n  }\n  p_01[(int)pbVar8] = '\0';\nLAB_0001e4b0:\n  tokenbuffer->buffer = p_01;\n  tokenbuffer->size = (size_t)pbVar14;\nLAB_0001e4b8:\n  if (stream_00 == *(FILE **)puVar3) {\n    return (size_t)pbVar8;\n  }\n  puVar15 = PTR___stack_chk_fail_00039350;\n  (*(code *)PTR___stack_chk_fail_00039350)();\n  piVar5 = *(int **)(puVar15 + 0x1adfc);\n  puStack_88 = puVar3;\n  uStack_8c = 0x55555554;\n  iStack_94 = *piVar5;\n  pbVar11 = (byte *)0x40;\n  ptStack_90 = tokenbuffer;\n  uStack_84 = uVar12;\n  pbStack_80 = pbVar8;\n  pFStack_7c = stream;\n  pbStack_78 = pbVar14;\n  pcStack_74 = p_01;\n  if ((byte *)delim == (byte *)0x0) {\n    sVar9 = 0x100;\n  }\n  else {\n    pbVar11 = (byte *)delim + 1;\n    sVar9 = (int)pbVar11 * 4;\n    if (((int)sVar9 < 0) || ((uint)pbVar11 >> 0x1e != 0)) {\nLAB_0001e7f0:\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }\n  p = xmalloc(sVar9);\n  pbVar8 = (byte *)0x0;\n  p_00 = xmalloc(sVar9);\n  init_tokenbuffer(&tStack_9c);\n  do {\n    pbVar14 = (byte *)n_delim;\n    ptVar10 = n_delim_00;\n    sVar9 = readtoken(stream_00,(char *)n_delim,(size_t)n_delim_00,&tStack_9c);\n    if (pbVar11 <= pbVar8) {\n      if (p == (void *)0x0) {\n        pbVar14 = (byte *)0x40;\n        if (pbVar11 == (byte *)0x0) {\n          pbVar11 = (byte *)0x10;\n        }\n        else {\n          pbVar14 = (byte *)((int)pbVar11 << 2);\n          if (((int)pbVar14 < 0) || ((uint)pbVar11 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar11) goto LAB_0001e7f0;\n        pbVar11 = pbVar11 + ((uint)pbVar11 >> 1) + 1;\n        pbVar14 = (byte *)((int)pbVar11 * 4);\n      }\n      p = xrealloc(p,(size_t)pbVar14);\n      p_00 = xrealloc(p_00,(size_t)pbVar14);\n    }\n    if (sVar9 == 0xffffffff) {\n      pcVar16 = *(code **)(puVar15 + 0x1ae08);\n      *(undefined4 *)((int)p + (int)pbVar8 * 4) = 0;\n      *(undefined4 *)((int)p_00 + (int)pbVar8 * 4) = 0;\n      (*pcVar16)(tStack_9c.buffer);\n      __gp = p;\n      if (piStack_54 == (int *)0x0) {\n        (**(code **)(puVar15 + 0x1ae08))(p_00);\n      }\n      else {\n        *piStack_54 = (int)p_00;\n      }\n      if (iStack_94 != *piVar5) {\n        pcVar16 = *(code **)(puVar15 + 0x1ade4);\n        iVar13 = iStack_94;\n        (*pcVar16)();\n        do {\n          pcVar17 = *(code **)(pcVar16 + 0x1aac0);\n          while( true ) {\n            sVar9 = (*pcVar17)(iVar13,pbVar14,ptVar10);\n            if (-1 < (int)sVar9) {\n              return sVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar16 + 0x1aaa4))();\n            bVar2 = ptVar10 < (token_buffer *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            ptVar10 = (token_buffer *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar17 = *(code **)(pcVar16 + 0x1aac0), bVar2)) {\n              return sVar9;\n            }\n          }\n        } while( true );\n      }\n      return (size_t)pbVar8;\n    }\n    n = sVar9 + 1;\n    if ((int)n < 0) goto LAB_0001e7f0;\n    iVar13 = (int)pbVar8 * 4;\n    pbVar8 = pbVar8 + 1;\n    pvVar6 = xmalloc(n);\n    *(size_t *)((int)p_00 + iVar13) = sVar9;\n    uVar7 = (**(code **)(puVar15 + 0x1ae00))(pvVar6,tStack_9c.buffer,n);\n    *(undefined4 *)((int)p + iVar13) = uVar7;\n  } while( true );\n}" primitive_type (function_declarator "readtoken(FILE *stream,char *delim,size_t n_delim,token_buffer *tokenbuffer)" identifier (parameter_list "(FILE *stream,char *delim,size_t n_delim,token_buffer *tokenbuffer)" ( (parameter_declaration "FILE *stream" type_identifier (pointer_declarator "*stream" * identifier)) , (parameter_declaration "char *delim" primitive_type (pointer_declarator "*delim" * identifier)) , (parameter_declaration "size_t n_delim" primitive_type identifier) , (parameter_declaration "token_buffer *tokenbuffer" type_identifier (pointer_declarator "*tokenbuffer" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  FILE *stream_00;\n  uint uVar4;\n  int *piVar5;\n  void *p;\n  void *p_00;\n  void *pvVar6;\n  undefined4 uVar7;\n  byte *pbVar8;\n  size_t sVar9;\n  size_t n;\n  token_buffer *n_delim_00;\n  token_buffer *ptVar10;\n  byte *pbVar11;\n  uint uVar12;\n  int iVar13;\n  byte *pbVar14;\n  char *p_01;\n  undefined *puVar15;\n  code *pcVar16;\n  code *pcVar17;\n  token_buffer tStack_9c;\n  int iStack_94;\n  token_buffer *ptStack_90;\n  undefined4 uStack_8c;\n  undefined *puStack_88;\n  uint uStack_84;\n  byte *pbStack_80;\n  FILE *pFStack_7c;\n  byte *pbStack_78;\n  char *pcStack_74;\n  int *piStack_54;\n  word isdelim [8];\n  \n  puVar3 = PTR___stack_chk_guard_00039368;\n  isdelim[0] = 0;\n  isdelim[1] = 0;\n  isdelim[2] = 0;\n  isdelim[3] = 0;\n  isdelim[4] = 0;\n  isdelim[5] = 0;\n  isdelim[6] = 0;\n  isdelim[7] = 0;\n  stream_00 = *(FILE **)PTR___stack_chk_guard_00039368;\n  n_delim_00 = tokenbuffer;\n  if (n_delim != 0) {\n    n_delim = (size_t)(delim + n_delim);\n    n_delim_00 = (token_buffer *)0x1;\n    do {\n      bVar1 = *delim;\n      delim = (char *)((byte *)delim + 1);\n      isdelim[bVar1 >> 5] = isdelim[bVar1 >> 5] | 1 << (bVar1 & 0x1f);\n    } while ((char *)n_delim != delim);\n  }\n  do {\n    pbVar8 = (byte *)stream->_IO_read_ptr;\n    if (pbVar8 < stream->_IO_read_end) {\n      stream->_IO_read_ptr = (char *)(pbVar8 + 1);\n      uVar12 = (uint)*pbVar8;\n      uVar4 = (uint)(*pbVar8 >> 5);\n    }\n    else {\n      uVar12 = (*(code *)PTR___uflow_0003928c)(stream);\n      if ((int)uVar12 < 0) break;\n      uVar4 = uVar12 >> 5;\n    }\n  } while ((isdelim[uVar4] >> (uVar12 & 0x1f) & 1) != 0);\n  p_01 = tokenbuffer->buffer;\n  pbVar14 = (byte *)tokenbuffer->size;\n  pbVar8 = (byte *)0x0;\nLAB_0001e45c:\n  if ((int)uVar12 < 0) {\n    if (pbVar8 != (byte *)0x0) {\n      if (pbVar8 == pbVar14) goto LAB_0001e474;\nLAB_0001e4ac:\n      p_01[(int)pbVar8] = '\0';\n      goto LAB_0001e4b0;\n    }\n    pbVar8 = (byte *)0xffffffff;\n    goto LAB_0001e4b8;\n  }\n  if (pbVar8 == pbVar14) {\nLAB_0001e474:\n    if (p_01 == (char *)0x0) {\n      if (pbVar14 == (byte *)0x0) {\n        pbVar14 = (byte *)0x40;\n      }\n      else if ((int)pbVar14 < 0) goto LAB_0001e544;\n    }\n    else {\n      if ((byte *)0x55555553 < pbVar14) {\nLAB_0001e544:\n                    /* WARNING: Subroutine does not return */\n        xalloc_die();\n      }\n      pbVar14 = pbVar14 + ((uint)pbVar14 >> 1) + 1;\n    }\n    delim = (char *)pbVar14;\n    p_01 = (char *)xrealloc(p_01,(size_t)pbVar14);\n    if ((int)uVar12 < 0) goto LAB_0001e4ac;\n  }\n  if ((isdelim[uVar12 >> 5] >> (uVar12 & 0x1f) & 1) == 0) {\n    p_01[(int)pbVar8] = (char)uVar12;\n    pbVar11 = (byte *)stream->_IO_read_ptr;\n    pbVar8 = pbVar8 + 1;\n    if (pbVar11 < stream->_IO_read_end) {\n      stream->_IO_read_ptr = (char *)(pbVar11 + 1);\n      uVar12 = (uint)*pbVar11;\n    }\n    else {\n      uVar12 = (*(code *)PTR___uflow_0003928c)(stream);\n    }\n    goto LAB_0001e45c;\n  }\n  p_01[(int)pbVar8] = '\0';\nLAB_0001e4b0:\n  tokenbuffer->buffer = p_01;\n  tokenbuffer->size = (size_t)pbVar14;\nLAB_0001e4b8:\n  if (stream_00 == *(FILE **)puVar3) {\n    return (size_t)pbVar8;\n  }\n  puVar15 = PTR___stack_chk_fail_00039350;\n  (*(code *)PTR___stack_chk_fail_00039350)();\n  piVar5 = *(int **)(puVar15 + 0x1adfc);\n  puStack_88 = puVar3;\n  uStack_8c = 0x55555554;\n  iStack_94 = *piVar5;\n  pbVar11 = (byte *)0x40;\n  ptStack_90 = tokenbuffer;\n  uStack_84 = uVar12;\n  pbStack_80 = pbVar8;\n  pFStack_7c = stream;\n  pbStack_78 = pbVar14;\n  pcStack_74 = p_01;\n  if ((byte *)delim == (byte *)0x0) {\n    sVar9 = 0x100;\n  }\n  else {\n    pbVar11 = (byte *)delim + 1;\n    sVar9 = (int)pbVar11 * 4;\n    if (((int)sVar9 < 0) || ((uint)pbVar11 >> 0x1e != 0)) {\nLAB_0001e7f0:\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }\n  p = xmalloc(sVar9);\n  pbVar8 = (byte *)0x0;\n  p_00 = xmalloc(sVar9);\n  init_tokenbuffer(&tStack_9c);\n  do {\n    pbVar14 = (byte *)n_delim;\n    ptVar10 = n_delim_00;\n    sVar9 = readtoken(stream_00,(char *)n_delim,(size_t)n_delim_00,&tStack_9c);\n    if (pbVar11 <= pbVar8) {\n      if (p == (void *)0x0) {\n        pbVar14 = (byte *)0x40;\n        if (pbVar11 == (byte *)0x0) {\n          pbVar11 = (byte *)0x10;\n        }\n        else {\n          pbVar14 = (byte *)((int)pbVar11 << 2);\n          if (((int)pbVar14 < 0) || ((uint)pbVar11 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar11) goto LAB_0001e7f0;\n        pbVar11 = pbVar11 + ((uint)pbVar11 >> 1) + 1;\n        pbVar14 = (byte *)((int)pbVar11 * 4);\n      }\n      p = xrealloc(p,(size_t)pbVar14);\n      p_00 = xrealloc(p_00,(size_t)pbVar14);\n    }\n    if (sVar9 == 0xffffffff) {\n      pcVar16 = *(code **)(puVar15 + 0x1ae08);\n      *(undefined4 *)((int)p + (int)pbVar8 * 4) = 0;\n      *(undefined4 *)((int)p_00 + (int)pbVar8 * 4) = 0;\n      (*pcVar16)(tStack_9c.buffer);\n      __gp = p;\n      if (piStack_54 == (int *)0x0) {\n        (**(code **)(puVar15 + 0x1ae08))(p_00);\n      }\n      else {\n        *piStack_54 = (int)p_00;\n      }\n      if (iStack_94 != *piVar5) {\n        pcVar16 = *(code **)(puVar15 + 0x1ade4);\n        iVar13 = iStack_94;\n        (*pcVar16)();\n        do {\n          pcVar17 = *(code **)(pcVar16 + 0x1aac0);\n          while( true ) {\n            sVar9 = (*pcVar17)(iVar13,pbVar14,ptVar10);\n            if (-1 < (int)sVar9) {\n              return sVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar16 + 0x1aaa4))();\n            bVar2 = ptVar10 < (token_buffer *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            ptVar10 = (token_buffer *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar17 = *(code **)(pcVar16 + 0x1aac0), bVar2)) {\n              return sVar9;\n            }\n          }\n        } while( true );\n      }\n      return (size_t)pbVar8;\n    }\n    n = sVar9 + 1;\n    if ((int)n < 0) goto LAB_0001e7f0;\n    iVar13 = (int)pbVar8 * 4;\n    pbVar8 = pbVar8 + 1;\n    pvVar6 = xmalloc(n);\n    *(size_t *)((int)p_00 + iVar13) = sVar9;\n    uVar7 = (**(code **)(puVar15 + 0x1ae00))(pvVar6,tStack_9c.buffer,n);\n    *(undefined4 *)((int)p + iVar13) = uVar7;\n  } while( true );\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "FILE *stream_00;" type_identifier (pointer_declarator "*stream_00" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "void *p;" primitive_type (pointer_declarator "*p" * identifier) ;) (declaration "void *p_00;" primitive_type (pointer_declarator "*p_00" * identifier) ;) (declaration "void *pvVar6;" primitive_type (pointer_declarator "*pvVar6" * identifier) ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "size_t sVar9;" primitive_type identifier ;) (declaration "size_t n;" primitive_type identifier ;) (declaration "token_buffer *n_delim_00;" type_identifier (pointer_declarator "*n_delim_00" * identifier) ;) (declaration "token_buffer *ptVar10;" type_identifier (pointer_declarator "*ptVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "char *p_01;" primitive_type (pointer_declarator "*p_01" * identifier) ;) (declaration "undefined *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "code *pcVar16;" type_identifier (pointer_declarator "*pcVar16" * identifier) ;) (declaration "code *pcVar17;" type_identifier (pointer_declarator "*pcVar17" * identifier) ;) (declaration "token_buffer tStack_9c;" type_identifier identifier ;) (declaration "int iStack_94;" primitive_type identifier ;) (declaration "token_buffer *ptStack_90;" type_identifier (pointer_declarator "*ptStack_90" * identifier) ;) (declaration "undefined4 uStack_8c;" type_identifier identifier ;) (declaration "undefined *puStack_88;" type_identifier (pointer_declarator "*puStack_88" * identifier) ;) (declaration "uint uStack_84;" type_identifier identifier ;) (declaration "byte *pbStack_80;" type_identifier (pointer_declarator "*pbStack_80" * identifier) ;) (declaration "FILE *pFStack_7c;" type_identifier (pointer_declarator "*pFStack_7c" * identifier) ;) (declaration "byte *pbStack_78;" type_identifier (pointer_declarator "*pbStack_78" * identifier) ;) (declaration "char *pcStack_74;" primitive_type (pointer_declarator "*pcStack_74" * identifier) ;) (declaration "int *piStack_54;" primitive_type (pointer_declarator "*piStack_54" * identifier) ;) (declaration "word isdelim [8];" type_identifier (array_declarator "isdelim [8]" identifier [ number_literal ]) ;) (expression_statement "puVar3 = PTR___stack_chk_guard_00039368;" (assignment_expression "puVar3 = PTR___stack_chk_guard_00039368" identifier = identifier) ;) (expression_statement "isdelim[0] = 0;" (assignment_expression "isdelim[0] = 0" (subscript_expression "isdelim[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "isdelim[1] = 0;" (assignment_expression "isdelim[1] = 0" (subscript_expression "isdelim[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "isdelim[2] = 0;" (assignment_expression "isdelim[2] = 0" (subscript_expression "isdelim[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "isdelim[3] = 0;" (assignment_expression "isdelim[3] = 0" (subscript_expression "isdelim[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "isdelim[4] = 0;" (assignment_expression "isdelim[4] = 0" (subscript_expression "isdelim[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "isdelim[5] = 0;" (assignment_expression "isdelim[5] = 0" (subscript_expression "isdelim[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "isdelim[6] = 0;" (assignment_expression "isdelim[6] = 0" (subscript_expression "isdelim[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "isdelim[7] = 0;" (assignment_expression "isdelim[7] = 0" (subscript_expression "isdelim[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "stream_00 = *(FILE **)PTR___stack_chk_guard_00039368;" (assignment_expression "stream_00 = *(FILE **)PTR___stack_chk_guard_00039368" identifier = (pointer_expression "*(FILE **)PTR___stack_chk_guard_00039368" * (cast_expression "(FILE **)PTR___stack_chk_guard_00039368" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "n_delim_00 = tokenbuffer;" (assignment_expression "n_delim_00 = tokenbuffer" identifier = identifier) ;) (if_statement "if (n_delim != 0) {\n    n_delim = (size_t)(delim + n_delim);\n    n_delim_00 = (token_buffer *)0x1;\n    do {\n      bVar1 = *delim;\n      delim = (char *)((byte *)delim + 1);\n      isdelim[bVar1 >> 5] = isdelim[bVar1 >> 5] | 1 << (bVar1 & 0x1f);\n    } while ((char *)n_delim != delim);\n  }" if (parenthesized_expression "(n_delim != 0)" ( (binary_expression "n_delim != 0" identifier != number_literal) )) (compound_statement "{\n    n_delim = (size_t)(delim + n_delim);\n    n_delim_00 = (token_buffer *)0x1;\n    do {\n      bVar1 = *delim;\n      delim = (char *)((byte *)delim + 1);\n      isdelim[bVar1 >> 5] = isdelim[bVar1 >> 5] | 1 << (bVar1 & 0x1f);\n    } while ((char *)n_delim != delim);\n  }" { (expression_statement "n_delim = (size_t)(delim + n_delim);" (assignment_expression "n_delim = (size_t)(delim + n_delim)" identifier = (cast_expression "(size_t)(delim + n_delim)" ( (type_descriptor "size_t" primitive_type) ) (parenthesized_expression "(delim + n_delim)" ( (binary_expression "delim + n_delim" identifier + identifier) )))) ;) (expression_statement "n_delim_00 = (token_buffer *)0x1;" (assignment_expression "n_delim_00 = (token_buffer *)0x1" identifier = (cast_expression "(token_buffer *)0x1" ( (type_descriptor "token_buffer *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n      bVar1 = *delim;\n      delim = (char *)((byte *)delim + 1);\n      isdelim[bVar1 >> 5] = isdelim[bVar1 >> 5] | 1 << (bVar1 & 0x1f);\n    } while ((char *)n_delim != delim);" do (compound_statement "{\n      bVar1 = *delim;\n      delim = (char *)((byte *)delim + 1);\n      isdelim[bVar1 >> 5] = isdelim[bVar1 >> 5] | 1 << (bVar1 & 0x1f);\n    }" { (expression_statement "bVar1 = *delim;" (assignment_expression "bVar1 = *delim" identifier = (pointer_expression "*delim" * identifier)) ;) (expression_statement "delim = (char *)((byte *)delim + 1);" (assignment_expression "delim = (char *)((byte *)delim + 1)" identifier = (cast_expression "(char *)((byte *)delim + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((byte *)delim + 1)" ( (binary_expression "(byte *)delim + 1" (cast_expression "(byte *)delim" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;) (expression_statement "isdelim[bVar1 >> 5] = isdelim[bVar1 >> 5] | 1 << (bVar1 & 0x1f);" (assignment_expression "isdelim[bVar1 >> 5] = isdelim[bVar1 >> 5] | 1 << (bVar1 & 0x1f)" (subscript_expression "isdelim[bVar1 >> 5]" identifier [ (binary_expression "bVar1 >> 5" identifier >> number_literal) ]) = (binary_expression "isdelim[bVar1 >> 5] | 1 << (bVar1 & 0x1f)" (subscript_expression "isdelim[bVar1 >> 5]" identifier [ (binary_expression "bVar1 >> 5" identifier >> number_literal) ]) | (binary_expression "1 << (bVar1 & 0x1f)" number_literal << (parenthesized_expression "(bVar1 & 0x1f)" ( (binary_expression "bVar1 & 0x1f" identifier & number_literal) ))))) ;) }) while (parenthesized_expression "((char *)n_delim != delim)" ( (binary_expression "(char *)n_delim != delim" (cast_expression "(char *)n_delim" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) != identifier) )) ;) })) (do_statement "do {\n    pbVar8 = (byte *)stream->_IO_read_ptr;\n    if (pbVar8 < stream->_IO_read_end) {\n      stream->_IO_read_ptr = (char *)(pbVar8 + 1);\n      uVar12 = (uint)*pbVar8;\n      uVar4 = (uint)(*pbVar8 >> 5);\n    }\n    else {\n      uVar12 = (*(code *)PTR___uflow_0003928c)(stream);\n      if ((int)uVar12 < 0) break;\n      uVar4 = uVar12 >> 5;\n    }\n  } while ((isdelim[uVar4] >> (uVar12 & 0x1f) & 1) != 0);" do (compound_statement "{\n    pbVar8 = (byte *)stream->_IO_read_ptr;\n    if (pbVar8 < stream->_IO_read_end) {\n      stream->_IO_read_ptr = (char *)(pbVar8 + 1);\n      uVar12 = (uint)*pbVar8;\n      uVar4 = (uint)(*pbVar8 >> 5);\n    }\n    else {\n      uVar12 = (*(code *)PTR___uflow_0003928c)(stream);\n      if ((int)uVar12 < 0) break;\n      uVar4 = uVar12 >> 5;\n    }\n  }" { (expression_statement "pbVar8 = (byte *)stream->_IO_read_ptr;" (assignment_expression "pbVar8 = (byte *)stream->_IO_read_ptr" identifier = (cast_expression "(byte *)stream->_IO_read_ptr" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "stream->_IO_read_ptr" identifier -> field_identifier))) ;) (if_statement "if (pbVar8 < stream->_IO_read_end) {\n      stream->_IO_read_ptr = (char *)(pbVar8 + 1);\n      uVar12 = (uint)*pbVar8;\n      uVar4 = (uint)(*pbVar8 >> 5);\n    }\n    else {\n      uVar12 = (*(code *)PTR___uflow_0003928c)(stream);\n      if ((int)uVar12 < 0) break;\n      uVar4 = uVar12 >> 5;\n    }" if (parenthesized_expression "(pbVar8 < stream->_IO_read_end)" ( (binary_expression "pbVar8 < stream->_IO_read_end" identifier < (field_expression "stream->_IO_read_end" identifier -> field_identifier)) )) (compound_statement "{\n      stream->_IO_read_ptr = (char *)(pbVar8 + 1);\n      uVar12 = (uint)*pbVar8;\n      uVar4 = (uint)(*pbVar8 >> 5);\n    }" { (expression_statement "stream->_IO_read_ptr = (char *)(pbVar8 + 1);" (assignment_expression "stream->_IO_read_ptr = (char *)(pbVar8 + 1)" (field_expression "stream->_IO_read_ptr" identifier -> field_identifier) = (cast_expression "(char *)(pbVar8 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar8 + 1)" ( (binary_expression "pbVar8 + 1" identifier + number_literal) )))) ;) (expression_statement "uVar12 = (uint)*pbVar8;" (assignment_expression "uVar12 = (uint)*pbVar8" identifier = (binary_expression "(uint)*pbVar8" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "uVar4 = (uint)(*pbVar8 >> 5);" (assignment_expression "uVar4 = (uint)(*pbVar8 >> 5)" identifier = (call_expression "(uint)(*pbVar8 >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*pbVar8 >> 5)" ( (binary_expression "*pbVar8 >> 5" (pointer_expression "*pbVar8" * identifier) >> number_literal) )))) ;) }) (else_clause "else {\n      uVar12 = (*(code *)PTR___uflow_0003928c)(stream);\n      if ((int)uVar12 < 0) break;\n      uVar4 = uVar12 >> 5;\n    }" else (compound_statement "{\n      uVar12 = (*(code *)PTR___uflow_0003928c)(stream);\n      if ((int)uVar12 < 0) break;\n      uVar4 = uVar12 >> 5;\n    }" { (expression_statement "uVar12 = (*(code *)PTR___uflow_0003928c)(stream);" (assignment_expression "uVar12 = (*(code *)PTR___uflow_0003928c)(stream)" identifier = (call_expression "(*(code *)PTR___uflow_0003928c)(stream)" (parenthesized_expression "(*(code *)PTR___uflow_0003928c)" ( (pointer_expression "*(code *)PTR___uflow_0003928c" * (cast_expression "(code *)PTR___uflow_0003928c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(stream)" ( identifier )))) ;) (if_statement "if ((int)uVar12 < 0) break;" if (parenthesized_expression "((int)uVar12 < 0)" ( (binary_expression "(int)uVar12 < 0" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar4 = uVar12 >> 5;" (assignment_expression "uVar4 = uVar12 >> 5" identifier = (binary_expression "uVar12 >> 5" identifier >> number_literal)) ;) }))) }) while (parenthesized_expression "((isdelim[uVar4] >> (uVar12 & 0x1f) & 1) != 0)" ( (binary_expression "(isdelim[uVar4] >> (uVar12 & 0x1f) & 1) != 0" (parenthesized_expression "(isdelim[uVar4] >> (uVar12 & 0x1f) & 1)" ( (binary_expression "isdelim[uVar4] >> (uVar12 & 0x1f) & 1" (binary_expression "isdelim[uVar4] >> (uVar12 & 0x1f)" (subscript_expression "isdelim[uVar4]" identifier [ identifier ]) >> (parenthesized_expression "(uVar12 & 0x1f)" ( (binary_expression "uVar12 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) ;) (expression_statement "p_01 = tokenbuffer->buffer;" (assignment_expression "p_01 = tokenbuffer->buffer" identifier = (field_expression "tokenbuffer->buffer" identifier -> field_identifier)) ;) (expression_statement "pbVar14 = (byte *)tokenbuffer->size;" (assignment_expression "pbVar14 = (byte *)tokenbuffer->size" identifier = (cast_expression "(byte *)tokenbuffer->size" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "tokenbuffer->size" identifier -> field_identifier))) ;) (expression_statement "pbVar8 = (byte *)0x0;" (assignment_expression "pbVar8 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0001e45c:\n  if ((int)uVar12 < 0) {\n    if (pbVar8 != (byte *)0x0) {\n      if (pbVar8 == pbVar14) goto LAB_0001e474;\nLAB_0001e4ac:\n      p_01[(int)pbVar8] = '\0';\n      goto LAB_0001e4b0;\n    }\n    pbVar8 = (byte *)0xffffffff;\n    goto LAB_0001e4b8;\n  }" statement_identifier : (if_statement "if ((int)uVar12 < 0) {\n    if (pbVar8 != (byte *)0x0) {\n      if (pbVar8 == pbVar14) goto LAB_0001e474;\nLAB_0001e4ac:\n      p_01[(int)pbVar8] = '\0';\n      goto LAB_0001e4b0;\n    }\n    pbVar8 = (byte *)0xffffffff;\n    goto LAB_0001e4b8;\n  }" if (parenthesized_expression "((int)uVar12 < 0)" ( (binary_expression "(int)uVar12 < 0" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    if (pbVar8 != (byte *)0x0) {\n      if (pbVar8 == pbVar14) goto LAB_0001e474;\nLAB_0001e4ac:\n      p_01[(int)pbVar8] = '\0';\n      goto LAB_0001e4b0;\n    }\n    pbVar8 = (byte *)0xffffffff;\n    goto LAB_0001e4b8;\n  }" { (if_statement "if (pbVar8 != (byte *)0x0) {\n      if (pbVar8 == pbVar14) goto LAB_0001e474;\nLAB_0001e4ac:\n      p_01[(int)pbVar8] = '\0';\n      goto LAB_0001e4b0;\n    }" if (parenthesized_expression "(pbVar8 != (byte *)0x0)" ( (binary_expression "pbVar8 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (pbVar8 == pbVar14) goto LAB_0001e474;\nLAB_0001e4ac:\n      p_01[(int)pbVar8] = '\0';\n      goto LAB_0001e4b0;\n    }" { (if_statement "if (pbVar8 == pbVar14) goto LAB_0001e474;" if (parenthesized_expression "(pbVar8 == pbVar14)" ( (binary_expression "pbVar8 == pbVar14" identifier == identifier) )) (goto_statement "goto LAB_0001e474;" goto statement_identifier ;)) (labeled_statement "LAB_0001e4ac:\n      p_01[(int)pbVar8] = '\0';" statement_identifier : (expression_statement "p_01[(int)pbVar8] = '\0';" (assignment_expression "p_01[(int)pbVar8] = '\0'" (subscript_expression "p_01[(int)pbVar8]" identifier [ (cast_expression "(int)pbVar8" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (char_literal "'\0'" ' escape_sequence ')) ;)) (goto_statement "goto LAB_0001e4b0;" goto statement_identifier ;) })) (expression_statement "pbVar8 = (byte *)0xffffffff;" (assignment_expression "pbVar8 = (byte *)0xffffffff" identifier = (cast_expression "(byte *)0xffffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0001e4b8;" goto statement_identifier ;) }))) (if_statement "if (pbVar8 == pbVar14) {\nLAB_0001e474:\n    if (p_01 == (char *)0x0) {\n      if (pbVar14 == (byte *)0x0) {\n        pbVar14 = (byte *)0x40;\n      }\n      else if ((int)pbVar14 < 0) goto LAB_0001e544;\n    }\n    else {\n      if ((byte *)0x55555553 < pbVar14) {\nLAB_0001e544:\n                    /* WARNING: Subroutine does not return */\n        xalloc_die();\n      }\n      pbVar14 = pbVar14 + ((uint)pbVar14 >> 1) + 1;\n    }\n    delim = (char *)pbVar14;\n    p_01 = (char *)xrealloc(p_01,(size_t)pbVar14);\n    if ((int)uVar12 < 0) goto LAB_0001e4ac;\n  }" if (parenthesized_expression "(pbVar8 == pbVar14)" ( (binary_expression "pbVar8 == pbVar14" identifier == identifier) )) (compound_statement "{\nLAB_0001e474:\n    if (p_01 == (char *)0x0) {\n      if (pbVar14 == (byte *)0x0) {\n        pbVar14 = (byte *)0x40;\n      }\n      else if ((int)pbVar14 < 0) goto LAB_0001e544;\n    }\n    else {\n      if ((byte *)0x55555553 < pbVar14) {\nLAB_0001e544:\n                    /* WARNING: Subroutine does not return */\n        xalloc_die();\n      }\n      pbVar14 = pbVar14 + ((uint)pbVar14 >> 1) + 1;\n    }\n    delim = (char *)pbVar14;\n    p_01 = (char *)xrealloc(p_01,(size_t)pbVar14);\n    if ((int)uVar12 < 0) goto LAB_0001e4ac;\n  }" { (labeled_statement "LAB_0001e474:\n    if (p_01 == (char *)0x0) {\n      if (pbVar14 == (byte *)0x0) {\n        pbVar14 = (byte *)0x40;\n      }\n      else if ((int)pbVar14 < 0) goto LAB_0001e544;\n    }\n    else {\n      if ((byte *)0x55555553 < pbVar14) {\nLAB_0001e544:\n                    /* WARNING: Subroutine does not return */\n        xalloc_die();\n      }\n      pbVar14 = pbVar14 + ((uint)pbVar14 >> 1) + 1;\n    }" statement_identifier : (if_statement "if (p_01 == (char *)0x0) {\n      if (pbVar14 == (byte *)0x0) {\n        pbVar14 = (byte *)0x40;\n      }\n      else if ((int)pbVar14 < 0) goto LAB_0001e544;\n    }\n    else {\n      if ((byte *)0x55555553 < pbVar14) {\nLAB_0001e544:\n                    /* WARNING: Subroutine does not return */\n        xalloc_die();\n      }\n      pbVar14 = pbVar14 + ((uint)pbVar14 >> 1) + 1;\n    }" if (parenthesized_expression "(p_01 == (char *)0x0)" ( (binary_expression "p_01 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (pbVar14 == (byte *)0x0) {\n        pbVar14 = (byte *)0x40;\n      }\n      else if ((int)pbVar14 < 0) goto LAB_0001e544;\n    }" { (if_statement "if (pbVar14 == (byte *)0x0) {\n        pbVar14 = (byte *)0x40;\n      }\n      else if ((int)pbVar14 < 0) goto LAB_0001e544;" if (parenthesized_expression "(pbVar14 == (byte *)0x0)" ( (binary_expression "pbVar14 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pbVar14 = (byte *)0x40;\n      }" { (expression_statement "pbVar14 = (byte *)0x40;" (assignment_expression "pbVar14 = (byte *)0x40" identifier = (cast_expression "(byte *)0x40" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else if ((int)pbVar14 < 0) goto LAB_0001e544;" else (if_statement "if ((int)pbVar14 < 0) goto LAB_0001e544;" if (parenthesized_expression "((int)pbVar14 < 0)" ( (binary_expression "(int)pbVar14 < 0" (cast_expression "(int)pbVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0001e544;" goto statement_identifier ;)))) }) (else_clause "else {\n      if ((byte *)0x55555553 < pbVar14) {\nLAB_0001e544:\n                    /* WARNING: Subroutine does not return */\n        xalloc_die();\n      }\n      pbVar14 = pbVar14 + ((uint)pbVar14 >> 1) + 1;\n    }" else (compound_statement "{\n      if ((byte *)0x55555553 < pbVar14) {\nLAB_0001e544:\n                    /* WARNING: Subroutine does not return */\n        xalloc_die();\n      }\n      pbVar14 = pbVar14 + ((uint)pbVar14 >> 1) + 1;\n    }" { (if_statement "if ((byte *)0x55555553 < pbVar14) {\nLAB_0001e544:\n                    /* WARNING: Subroutine does not return */\n        xalloc_die();\n      }" if (parenthesized_expression "((byte *)0x55555553 < pbVar14)" ( (binary_expression "(byte *)0x55555553 < pbVar14" (cast_expression "(byte *)0x55555553" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < identifier) )) (compound_statement "{\nLAB_0001e544:\n                    /* WARNING: Subroutine does not return */\n        xalloc_die();\n      }" { (labeled_statement "LAB_0001e544:\n                    /* WARNING: Subroutine does not return */\n        xalloc_die();" statement_identifier : comment (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;)) })) (expression_statement "pbVar14 = pbVar14 + ((uint)pbVar14 >> 1) + 1;" (assignment_expression "pbVar14 = pbVar14 + ((uint)pbVar14 >> 1) + 1" identifier = (binary_expression "pbVar14 + ((uint)pbVar14 >> 1) + 1" (binary_expression "pbVar14 + ((uint)pbVar14 >> 1)" identifier + (parenthesized_expression "((uint)pbVar14 >> 1)" ( (binary_expression "(uint)pbVar14 >> 1" (cast_expression "(uint)pbVar14" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) + number_literal)) ;) })))) (expression_statement "delim = (char *)pbVar14;" (assignment_expression "delim = (char *)pbVar14" identifier = (cast_expression "(char *)pbVar14" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "p_01 = (char *)xrealloc(p_01,(size_t)pbVar14);" (assignment_expression "p_01 = (char *)xrealloc(p_01,(size_t)pbVar14)" identifier = (cast_expression "(char *)xrealloc(p_01,(size_t)pbVar14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xrealloc(p_01,(size_t)pbVar14)" identifier (argument_list "(p_01,(size_t)pbVar14)" ( identifier , (cast_expression "(size_t)pbVar14" ( (type_descriptor "size_t" primitive_type) ) identifier) ))))) ;) (if_statement "if ((int)uVar12 < 0) goto LAB_0001e4ac;" if (parenthesized_expression "((int)uVar12 < 0)" ( (binary_expression "(int)uVar12 < 0" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0001e4ac;" goto statement_identifier ;)) })) (if_statement "if ((isdelim[uVar12 >> 5] >> (uVar12 & 0x1f) & 1) == 0) {\n    p_01[(int)pbVar8] = (char)uVar12;\n    pbVar11 = (byte *)stream->_IO_read_ptr;\n    pbVar8 = pbVar8 + 1;\n    if (pbVar11 < stream->_IO_read_end) {\n      stream->_IO_read_ptr = (char *)(pbVar11 + 1);\n      uVar12 = (uint)*pbVar11;\n    }\n    else {\n      uVar12 = (*(code *)PTR___uflow_0003928c)(stream);\n    }\n    goto LAB_0001e45c;\n  }" if (parenthesized_expression "((isdelim[uVar12 >> 5] >> (uVar12 & 0x1f) & 1) == 0)" ( (binary_expression "(isdelim[uVar12 >> 5] >> (uVar12 & 0x1f) & 1) == 0" (parenthesized_expression "(isdelim[uVar12 >> 5] >> (uVar12 & 0x1f) & 1)" ( (binary_expression "isdelim[uVar12 >> 5] >> (uVar12 & 0x1f) & 1" (binary_expression "isdelim[uVar12 >> 5] >> (uVar12 & 0x1f)" (subscript_expression "isdelim[uVar12 >> 5]" identifier [ (binary_expression "uVar12 >> 5" identifier >> number_literal) ]) >> (parenthesized_expression "(uVar12 & 0x1f)" ( (binary_expression "uVar12 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n    p_01[(int)pbVar8] = (char)uVar12;\n    pbVar11 = (byte *)stream->_IO_read_ptr;\n    pbVar8 = pbVar8 + 1;\n    if (pbVar11 < stream->_IO_read_end) {\n      stream->_IO_read_ptr = (char *)(pbVar11 + 1);\n      uVar12 = (uint)*pbVar11;\n    }\n    else {\n      uVar12 = (*(code *)PTR___uflow_0003928c)(stream);\n    }\n    goto LAB_0001e45c;\n  }" { (expression_statement "p_01[(int)pbVar8] = (char)uVar12;" (assignment_expression "p_01[(int)pbVar8] = (char)uVar12" (subscript_expression "p_01[(int)pbVar8]" identifier [ (cast_expression "(int)pbVar8" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (cast_expression "(char)uVar12" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "pbVar11 = (byte *)stream->_IO_read_ptr;" (assignment_expression "pbVar11 = (byte *)stream->_IO_read_ptr" identifier = (cast_expression "(byte *)stream->_IO_read_ptr" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "stream->_IO_read_ptr" identifier -> field_identifier))) ;) (expression_statement "pbVar8 = pbVar8 + 1;" (assignment_expression "pbVar8 = pbVar8 + 1" identifier = (binary_expression "pbVar8 + 1" identifier + number_literal)) ;) (if_statement "if (pbVar11 < stream->_IO_read_end) {\n      stream->_IO_read_ptr = (char *)(pbVar11 + 1);\n      uVar12 = (uint)*pbVar11;\n    }\n    else {\n      uVar12 = (*(code *)PTR___uflow_0003928c)(stream);\n    }" if (parenthesized_expression "(pbVar11 < stream->_IO_read_end)" ( (binary_expression "pbVar11 < stream->_IO_read_end" identifier < (field_expression "stream->_IO_read_end" identifier -> field_identifier)) )) (compound_statement "{\n      stream->_IO_read_ptr = (char *)(pbVar11 + 1);\n      uVar12 = (uint)*pbVar11;\n    }" { (expression_statement "stream->_IO_read_ptr = (char *)(pbVar11 + 1);" (assignment_expression "stream->_IO_read_ptr = (char *)(pbVar11 + 1)" (field_expression "stream->_IO_read_ptr" identifier -> field_identifier) = (cast_expression "(char *)(pbVar11 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar11 + 1)" ( (binary_expression "pbVar11 + 1" identifier + number_literal) )))) ;) (expression_statement "uVar12 = (uint)*pbVar11;" (assignment_expression "uVar12 = (uint)*pbVar11" identifier = (binary_expression "(uint)*pbVar11" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) }) (else_clause "else {\n      uVar12 = (*(code *)PTR___uflow_0003928c)(stream);\n    }" else (compound_statement "{\n      uVar12 = (*(code *)PTR___uflow_0003928c)(stream);\n    }" { (expression_statement "uVar12 = (*(code *)PTR___uflow_0003928c)(stream);" (assignment_expression "uVar12 = (*(code *)PTR___uflow_0003928c)(stream)" identifier = (call_expression "(*(code *)PTR___uflow_0003928c)(stream)" (parenthesized_expression "(*(code *)PTR___uflow_0003928c)" ( (pointer_expression "*(code *)PTR___uflow_0003928c" * (cast_expression "(code *)PTR___uflow_0003928c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(stream)" ( identifier )))) ;) }))) (goto_statement "goto LAB_0001e45c;" goto statement_identifier ;) })) (expression_statement "p_01[(int)pbVar8] = '\0';" (assignment_expression "p_01[(int)pbVar8] = '\0'" (subscript_expression "p_01[(int)pbVar8]" identifier [ (cast_expression "(int)pbVar8" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (labeled_statement "LAB_0001e4b0:\n  tokenbuffer->buffer = p_01;" statement_identifier : (expression_statement "tokenbuffer->buffer = p_01;" (assignment_expression "tokenbuffer->buffer = p_01" (field_expression "tokenbuffer->buffer" identifier -> field_identifier) = identifier) ;)) (expression_statement "tokenbuffer->size = (size_t)pbVar14;" (assignment_expression "tokenbuffer->size = (size_t)pbVar14" (field_expression "tokenbuffer->size" identifier -> field_identifier) = (cast_expression "(size_t)pbVar14" ( (type_descriptor "size_t" primitive_type) ) identifier)) ;) (labeled_statement "LAB_0001e4b8:\n  if (stream_00 == *(FILE **)puVar3) {\n    return (size_t)pbVar8;\n  }" statement_identifier : (if_statement "if (stream_00 == *(FILE **)puVar3) {\n    return (size_t)pbVar8;\n  }" if (parenthesized_expression "(stream_00 == *(FILE **)puVar3)" ( (binary_expression "stream_00 == *(FILE **)puVar3" identifier == (pointer_expression "*(FILE **)puVar3" * (cast_expression "(FILE **)puVar3" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return (size_t)pbVar8;\n  }" { (return_statement "return (size_t)pbVar8;" return (cast_expression "(size_t)pbVar8" ( (type_descriptor "size_t" primitive_type) ) identifier) ;) }))) (expression_statement "puVar15 = PTR___stack_chk_fail_00039350;" (assignment_expression "puVar15 = PTR___stack_chk_fail_00039350" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00039350)();" (call_expression "(*(code *)PTR___stack_chk_fail_00039350)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00039350)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00039350" * (cast_expression "(code *)PTR___stack_chk_fail_00039350" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar5 = *(int **)(puVar15 + 0x1adfc);" (assignment_expression "piVar5 = *(int **)(puVar15 + 0x1adfc)" identifier = (pointer_expression "*(int **)(puVar15 + 0x1adfc)" * (cast_expression "(int **)(puVar15 + 0x1adfc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + 0x1adfc)" ( (binary_expression "puVar15 + 0x1adfc" identifier + number_literal) ))))) ;) (expression_statement "puStack_88 = puVar3;" (assignment_expression "puStack_88 = puVar3" identifier = identifier) ;) (expression_statement "uStack_8c = 0x55555554;" (assignment_expression "uStack_8c = 0x55555554" identifier = number_literal) ;) (expression_statement "iStack_94 = *piVar5;" (assignment_expression "iStack_94 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "pbVar11 = (byte *)0x40;" (assignment_expression "pbVar11 = (byte *)0x40" identifier = (cast_expression "(byte *)0x40" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "ptStack_90 = tokenbuffer;" (assignment_expression "ptStack_90 = tokenbuffer" identifier = identifier) ;) (expression_statement "uStack_84 = uVar12;" (assignment_expression "uStack_84 = uVar12" identifier = identifier) ;) (expression_statement "pbStack_80 = pbVar8;" (assignment_expression "pbStack_80 = pbVar8" identifier = identifier) ;) (expression_statement "pFStack_7c = stream;" (assignment_expression "pFStack_7c = stream" identifier = identifier) ;) (expression_statement "pbStack_78 = pbVar14;" (assignment_expression "pbStack_78 = pbVar14" identifier = identifier) ;) (expression_statement "pcStack_74 = p_01;" (assignment_expression "pcStack_74 = p_01" identifier = identifier) ;) (if_statement "if ((byte *)delim == (byte *)0x0) {\n    sVar9 = 0x100;\n  }\n  else {\n    pbVar11 = (byte *)delim + 1;\n    sVar9 = (int)pbVar11 * 4;\n    if (((int)sVar9 < 0) || ((uint)pbVar11 >> 0x1e != 0)) {\nLAB_0001e7f0:\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }" if (parenthesized_expression "((byte *)delim == (byte *)0x0)" ( (binary_expression "(byte *)delim == (byte *)0x0" (cast_expression "(byte *)delim" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar9 = 0x100;\n  }" { (expression_statement "sVar9 = 0x100;" (assignment_expression "sVar9 = 0x100" identifier = number_literal) ;) }) (else_clause "else {\n    pbVar11 = (byte *)delim + 1;\n    sVar9 = (int)pbVar11 * 4;\n    if (((int)sVar9 < 0) || ((uint)pbVar11 >> 0x1e != 0)) {\nLAB_0001e7f0:\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }" else (compound_statement "{\n    pbVar11 = (byte *)delim + 1;\n    sVar9 = (int)pbVar11 * 4;\n    if (((int)sVar9 < 0) || ((uint)pbVar11 >> 0x1e != 0)) {\nLAB_0001e7f0:\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }" { (expression_statement "pbVar11 = (byte *)delim + 1;" (assignment_expression "pbVar11 = (byte *)delim + 1" identifier = (binary_expression "(byte *)delim + 1" (cast_expression "(byte *)delim" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + number_literal)) ;) (expression_statement "sVar9 = (int)pbVar11 * 4;" (assignment_expression "sVar9 = (int)pbVar11 * 4" identifier = (binary_expression "(int)pbVar11 * 4" (cast_expression "(int)pbVar11" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (if_statement "if (((int)sVar9 < 0) || ((uint)pbVar11 >> 0x1e != 0)) {\nLAB_0001e7f0:\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }" if (parenthesized_expression "(((int)sVar9 < 0) || ((uint)pbVar11 >> 0x1e != 0))" ( (binary_expression "((int)sVar9 < 0) || ((uint)pbVar11 >> 0x1e != 0)" (parenthesized_expression "((int)sVar9 < 0)" ( (binary_expression "(int)sVar9 < 0" (cast_expression "(int)sVar9" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) || (parenthesized_expression "((uint)pbVar11 >> 0x1e != 0)" ( (binary_expression "(uint)pbVar11 >> 0x1e != 0" (binary_expression "(uint)pbVar11 >> 0x1e" (cast_expression "(uint)pbVar11" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) != number_literal) ))) )) (compound_statement "{\nLAB_0001e7f0:\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }" { (labeled_statement "LAB_0001e7f0:\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();" statement_identifier : comment (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;)) })) }))) (expression_statement "p = xmalloc(sVar9);" (assignment_expression "p = xmalloc(sVar9)" identifier = (call_expression "xmalloc(sVar9)" identifier (argument_list "(sVar9)" ( identifier )))) ;) (expression_statement "pbVar8 = (byte *)0x0;" (assignment_expression "pbVar8 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "p_00 = xmalloc(sVar9);" (assignment_expression "p_00 = xmalloc(sVar9)" identifier = (call_expression "xmalloc(sVar9)" identifier (argument_list "(sVar9)" ( identifier )))) ;) (expression_statement "init_tokenbuffer(&tStack_9c);" (call_expression "init_tokenbuffer(&tStack_9c)" identifier (argument_list "(&tStack_9c)" ( (pointer_expression "&tStack_9c" & identifier) ))) ;) (do_statement "do {\n    pbVar14 = (byte *)n_delim;\n    ptVar10 = n_delim_00;\n    sVar9 = readtoken(stream_00,(char *)n_delim,(size_t)n_delim_00,&tStack_9c);\n    if (pbVar11 <= pbVar8) {\n      if (p == (void *)0x0) {\n        pbVar14 = (byte *)0x40;\n        if (pbVar11 == (byte *)0x0) {\n          pbVar11 = (byte *)0x10;\n        }\n        else {\n          pbVar14 = (byte *)((int)pbVar11 << 2);\n          if (((int)pbVar14 < 0) || ((uint)pbVar11 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar11) goto LAB_0001e7f0;\n        pbVar11 = pbVar11 + ((uint)pbVar11 >> 1) + 1;\n        pbVar14 = (byte *)((int)pbVar11 * 4);\n      }\n      p = xrealloc(p,(size_t)pbVar14);\n      p_00 = xrealloc(p_00,(size_t)pbVar14);\n    }\n    if (sVar9 == 0xffffffff) {\n      pcVar16 = *(code **)(puVar15 + 0x1ae08);\n      *(undefined4 *)((int)p + (int)pbVar8 * 4) = 0;\n      *(undefined4 *)((int)p_00 + (int)pbVar8 * 4) = 0;\n      (*pcVar16)(tStack_9c.buffer);\n      __gp = p;\n      if (piStack_54 == (int *)0x0) {\n        (**(code **)(puVar15 + 0x1ae08))(p_00);\n      }\n      else {\n        *piStack_54 = (int)p_00;\n      }\n      if (iStack_94 != *piVar5) {\n        pcVar16 = *(code **)(puVar15 + 0x1ade4);\n        iVar13 = iStack_94;\n        (*pcVar16)();\n        do {\n          pcVar17 = *(code **)(pcVar16 + 0x1aac0);\n          while( true ) {\n            sVar9 = (*pcVar17)(iVar13,pbVar14,ptVar10);\n            if (-1 < (int)sVar9) {\n              return sVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar16 + 0x1aaa4))();\n            bVar2 = ptVar10 < (token_buffer *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            ptVar10 = (token_buffer *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar17 = *(code **)(pcVar16 + 0x1aac0), bVar2)) {\n              return sVar9;\n            }\n          }\n        } while( true );\n      }\n      return (size_t)pbVar8;\n    }\n    n = sVar9 + 1;\n    if ((int)n < 0) goto LAB_0001e7f0;\n    iVar13 = (int)pbVar8 * 4;\n    pbVar8 = pbVar8 + 1;\n    pvVar6 = xmalloc(n);\n    *(size_t *)((int)p_00 + iVar13) = sVar9;\n    uVar7 = (**(code **)(puVar15 + 0x1ae00))(pvVar6,tStack_9c.buffer,n);\n    *(undefined4 *)((int)p + iVar13) = uVar7;\n  } while( true );" do (compound_statement "{\n    pbVar14 = (byte *)n_delim;\n    ptVar10 = n_delim_00;\n    sVar9 = readtoken(stream_00,(char *)n_delim,(size_t)n_delim_00,&tStack_9c);\n    if (pbVar11 <= pbVar8) {\n      if (p == (void *)0x0) {\n        pbVar14 = (byte *)0x40;\n        if (pbVar11 == (byte *)0x0) {\n          pbVar11 = (byte *)0x10;\n        }\n        else {\n          pbVar14 = (byte *)((int)pbVar11 << 2);\n          if (((int)pbVar14 < 0) || ((uint)pbVar11 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar11) goto LAB_0001e7f0;\n        pbVar11 = pbVar11 + ((uint)pbVar11 >> 1) + 1;\n        pbVar14 = (byte *)((int)pbVar11 * 4);\n      }\n      p = xrealloc(p,(size_t)pbVar14);\n      p_00 = xrealloc(p_00,(size_t)pbVar14);\n    }\n    if (sVar9 == 0xffffffff) {\n      pcVar16 = *(code **)(puVar15 + 0x1ae08);\n      *(undefined4 *)((int)p + (int)pbVar8 * 4) = 0;\n      *(undefined4 *)((int)p_00 + (int)pbVar8 * 4) = 0;\n      (*pcVar16)(tStack_9c.buffer);\n      __gp = p;\n      if (piStack_54 == (int *)0x0) {\n        (**(code **)(puVar15 + 0x1ae08))(p_00);\n      }\n      else {\n        *piStack_54 = (int)p_00;\n      }\n      if (iStack_94 != *piVar5) {\n        pcVar16 = *(code **)(puVar15 + 0x1ade4);\n        iVar13 = iStack_94;\n        (*pcVar16)();\n        do {\n          pcVar17 = *(code **)(pcVar16 + 0x1aac0);\n          while( true ) {\n            sVar9 = (*pcVar17)(iVar13,pbVar14,ptVar10);\n            if (-1 < (int)sVar9) {\n              return sVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar16 + 0x1aaa4))();\n            bVar2 = ptVar10 < (token_buffer *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            ptVar10 = (token_buffer *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar17 = *(code **)(pcVar16 + 0x1aac0), bVar2)) {\n              return sVar9;\n            }\n          }\n        } while( true );\n      }\n      return (size_t)pbVar8;\n    }\n    n = sVar9 + 1;\n    if ((int)n < 0) goto LAB_0001e7f0;\n    iVar13 = (int)pbVar8 * 4;\n    pbVar8 = pbVar8 + 1;\n    pvVar6 = xmalloc(n);\n    *(size_t *)((int)p_00 + iVar13) = sVar9;\n    uVar7 = (**(code **)(puVar15 + 0x1ae00))(pvVar6,tStack_9c.buffer,n);\n    *(undefined4 *)((int)p + iVar13) = uVar7;\n  }" { (expression_statement "pbVar14 = (byte *)n_delim;" (assignment_expression "pbVar14 = (byte *)n_delim" identifier = (cast_expression "(byte *)n_delim" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "ptVar10 = n_delim_00;" (assignment_expression "ptVar10 = n_delim_00" identifier = identifier) ;) (expression_statement "sVar9 = readtoken(stream_00,(char *)n_delim,(size_t)n_delim_00,&tStack_9c);" (assignment_expression "sVar9 = readtoken(stream_00,(char *)n_delim,(size_t)n_delim_00,&tStack_9c)" identifier = (call_expression "readtoken(stream_00,(char *)n_delim,(size_t)n_delim_00,&tStack_9c)" identifier (argument_list "(stream_00,(char *)n_delim,(size_t)n_delim_00,&tStack_9c)" ( identifier , (cast_expression "(char *)n_delim" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(size_t)n_delim_00" ( (type_descriptor "size_t" primitive_type) ) identifier) , (pointer_expression "&tStack_9c" & identifier) )))) ;) (if_statement "if (pbVar11 <= pbVar8) {\n      if (p == (void *)0x0) {\n        pbVar14 = (byte *)0x40;\n        if (pbVar11 == (byte *)0x0) {\n          pbVar11 = (byte *)0x10;\n        }\n        else {\n          pbVar14 = (byte *)((int)pbVar11 << 2);\n          if (((int)pbVar14 < 0) || ((uint)pbVar11 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar11) goto LAB_0001e7f0;\n        pbVar11 = pbVar11 + ((uint)pbVar11 >> 1) + 1;\n        pbVar14 = (byte *)((int)pbVar11 * 4);\n      }\n      p = xrealloc(p,(size_t)pbVar14);\n      p_00 = xrealloc(p_00,(size_t)pbVar14);\n    }" if (parenthesized_expression "(pbVar11 <= pbVar8)" ( (binary_expression "pbVar11 <= pbVar8" identifier <= identifier) )) (compound_statement "{\n      if (p == (void *)0x0) {\n        pbVar14 = (byte *)0x40;\n        if (pbVar11 == (byte *)0x0) {\n          pbVar11 = (byte *)0x10;\n        }\n        else {\n          pbVar14 = (byte *)((int)pbVar11 << 2);\n          if (((int)pbVar14 < 0) || ((uint)pbVar11 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar11) goto LAB_0001e7f0;\n        pbVar11 = pbVar11 + ((uint)pbVar11 >> 1) + 1;\n        pbVar14 = (byte *)((int)pbVar11 * 4);\n      }\n      p = xrealloc(p,(size_t)pbVar14);\n      p_00 = xrealloc(p_00,(size_t)pbVar14);\n    }" { (if_statement "if (p == (void *)0x0) {\n        pbVar14 = (byte *)0x40;\n        if (pbVar11 == (byte *)0x0) {\n          pbVar11 = (byte *)0x10;\n        }\n        else {\n          pbVar14 = (byte *)((int)pbVar11 << 2);\n          if (((int)pbVar14 < 0) || ((uint)pbVar11 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar11) goto LAB_0001e7f0;\n        pbVar11 = pbVar11 + ((uint)pbVar11 >> 1) + 1;\n        pbVar14 = (byte *)((int)pbVar11 * 4);\n      }" if (parenthesized_expression "(p == (void *)0x0)" ( (binary_expression "p == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pbVar14 = (byte *)0x40;\n        if (pbVar11 == (byte *)0x0) {\n          pbVar11 = (byte *)0x10;\n        }\n        else {\n          pbVar14 = (byte *)((int)pbVar11 << 2);\n          if (((int)pbVar14 < 0) || ((uint)pbVar11 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }" { (expression_statement "pbVar14 = (byte *)0x40;" (assignment_expression "pbVar14 = (byte *)0x40" identifier = (cast_expression "(byte *)0x40" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (pbVar11 == (byte *)0x0) {\n          pbVar11 = (byte *)0x10;\n        }\n        else {\n          pbVar14 = (byte *)((int)pbVar11 << 2);\n          if (((int)pbVar14 < 0) || ((uint)pbVar11 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }" if (parenthesized_expression "(pbVar11 == (byte *)0x0)" ( (binary_expression "pbVar11 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pbVar11 = (byte *)0x10;\n        }" { (expression_statement "pbVar11 = (byte *)0x10;" (assignment_expression "pbVar11 = (byte *)0x10" identifier = (cast_expression "(byte *)0x10" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n          pbVar14 = (byte *)((int)pbVar11 << 2);\n          if (((int)pbVar14 < 0) || ((uint)pbVar11 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }" else (compound_statement "{\n          pbVar14 = (byte *)((int)pbVar11 << 2);\n          if (((int)pbVar14 < 0) || ((uint)pbVar11 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }" { (expression_statement "pbVar14 = (byte *)((int)pbVar11 << 2);" (assignment_expression "pbVar14 = (byte *)((int)pbVar11 << 2)" identifier = (cast_expression "(byte *)((int)pbVar11 << 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pbVar11 << 2)" ( (binary_expression "(int)pbVar11 << 2" (cast_expression "(int)pbVar11" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) )))) ;) (if_statement "if (((int)pbVar14 < 0) || ((uint)pbVar11 >> 0x1e != 0)) goto LAB_0001e7f0;" if (parenthesized_expression "(((int)pbVar14 < 0) || ((uint)pbVar11 >> 0x1e != 0))" ( (binary_expression "((int)pbVar14 < 0) || ((uint)pbVar11 >> 0x1e != 0)" (parenthesized_expression "((int)pbVar14 < 0)" ( (binary_expression "(int)pbVar14 < 0" (cast_expression "(int)pbVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) || (parenthesized_expression "((uint)pbVar11 >> 0x1e != 0)" ( (binary_expression "(uint)pbVar11 >> 0x1e != 0" (binary_expression "(uint)pbVar11 >> 0x1e" (cast_expression "(uint)pbVar11" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) != number_literal) ))) )) (goto_statement "goto LAB_0001e7f0;" goto statement_identifier ;)) }))) }) (else_clause "else {\n        if ((byte *)0x15555554 < pbVar11) goto LAB_0001e7f0;\n        pbVar11 = pbVar11 + ((uint)pbVar11 >> 1) + 1;\n        pbVar14 = (byte *)((int)pbVar11 * 4);\n      }" else (compound_statement "{\n        if ((byte *)0x15555554 < pbVar11) goto LAB_0001e7f0;\n        pbVar11 = pbVar11 + ((uint)pbVar11 >> 1) + 1;\n        pbVar14 = (byte *)((int)pbVar11 * 4);\n      }" { (if_statement "if ((byte *)0x15555554 < pbVar11) goto LAB_0001e7f0;" if (parenthesized_expression "((byte *)0x15555554 < pbVar11)" ( (binary_expression "(byte *)0x15555554 < pbVar11" (cast_expression "(byte *)0x15555554" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < identifier) )) (goto_statement "goto LAB_0001e7f0;" goto statement_identifier ;)) (expression_statement "pbVar11 = pbVar11 + ((uint)pbVar11 >> 1) + 1;" (assignment_expression "pbVar11 = pbVar11 + ((uint)pbVar11 >> 1) + 1" identifier = (binary_expression "pbVar11 + ((uint)pbVar11 >> 1) + 1" (binary_expression "pbVar11 + ((uint)pbVar11 >> 1)" identifier + (parenthesized_expression "((uint)pbVar11 >> 1)" ( (binary_expression "(uint)pbVar11 >> 1" (cast_expression "(uint)pbVar11" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) + number_literal)) ;) (expression_statement "pbVar14 = (byte *)((int)pbVar11 * 4);" (assignment_expression "pbVar14 = (byte *)((int)pbVar11 * 4)" identifier = (cast_expression "(byte *)((int)pbVar11 * 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pbVar11 * 4)" ( (binary_expression "(int)pbVar11 * 4" (cast_expression "(int)pbVar11" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) }))) (expression_statement "p = xrealloc(p,(size_t)pbVar14);" (assignment_expression "p = xrealloc(p,(size_t)pbVar14)" identifier = (call_expression "xrealloc(p,(size_t)pbVar14)" identifier (argument_list "(p,(size_t)pbVar14)" ( identifier , (cast_expression "(size_t)pbVar14" ( (type_descriptor "size_t" primitive_type) ) identifier) )))) ;) (expression_statement "p_00 = xrealloc(p_00,(size_t)pbVar14);" (assignment_expression "p_00 = xrealloc(p_00,(size_t)pbVar14)" identifier = (call_expression "xrealloc(p_00,(size_t)pbVar14)" identifier (argument_list "(p_00,(size_t)pbVar14)" ( identifier , (cast_expression "(size_t)pbVar14" ( (type_descriptor "size_t" primitive_type) ) identifier) )))) ;) })) (if_statement "if (sVar9 == 0xffffffff) {\n      pcVar16 = *(code **)(puVar15 + 0x1ae08);\n      *(undefined4 *)((int)p + (int)pbVar8 * 4) = 0;\n      *(undefined4 *)((int)p_00 + (int)pbVar8 * 4) = 0;\n      (*pcVar16)(tStack_9c.buffer);\n      __gp = p;\n      if (piStack_54 == (int *)0x0) {\n        (**(code **)(puVar15 + 0x1ae08))(p_00);\n      }\n      else {\n        *piStack_54 = (int)p_00;\n      }\n      if (iStack_94 != *piVar5) {\n        pcVar16 = *(code **)(puVar15 + 0x1ade4);\n        iVar13 = iStack_94;\n        (*pcVar16)();\n        do {\n          pcVar17 = *(code **)(pcVar16 + 0x1aac0);\n          while( true ) {\n            sVar9 = (*pcVar17)(iVar13,pbVar14,ptVar10);\n            if (-1 < (int)sVar9) {\n              return sVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar16 + 0x1aaa4))();\n            bVar2 = ptVar10 < (token_buffer *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            ptVar10 = (token_buffer *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar17 = *(code **)(pcVar16 + 0x1aac0), bVar2)) {\n              return sVar9;\n            }\n          }\n        } while( true );\n      }\n      return (size_t)pbVar8;\n    }" if (parenthesized_expression "(sVar9 == 0xffffffff)" ( (binary_expression "sVar9 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n      pcVar16 = *(code **)(puVar15 + 0x1ae08);\n      *(undefined4 *)((int)p + (int)pbVar8 * 4) = 0;\n      *(undefined4 *)((int)p_00 + (int)pbVar8 * 4) = 0;\n      (*pcVar16)(tStack_9c.buffer);\n      __gp = p;\n      if (piStack_54 == (int *)0x0) {\n        (**(code **)(puVar15 + 0x1ae08))(p_00);\n      }\n      else {\n        *piStack_54 = (int)p_00;\n      }\n      if (iStack_94 != *piVar5) {\n        pcVar16 = *(code **)(puVar15 + 0x1ade4);\n        iVar13 = iStack_94;\n        (*pcVar16)();\n        do {\n          pcVar17 = *(code **)(pcVar16 + 0x1aac0);\n          while( true ) {\n            sVar9 = (*pcVar17)(iVar13,pbVar14,ptVar10);\n            if (-1 < (int)sVar9) {\n              return sVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar16 + 0x1aaa4))();\n            bVar2 = ptVar10 < (token_buffer *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            ptVar10 = (token_buffer *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar17 = *(code **)(pcVar16 + 0x1aac0), bVar2)) {\n              return sVar9;\n            }\n          }\n        } while( true );\n      }\n      return (size_t)pbVar8;\n    }" { (expression_statement "pcVar16 = *(code **)(puVar15 + 0x1ae08);" (assignment_expression "pcVar16 = *(code **)(puVar15 + 0x1ae08)" identifier = (pointer_expression "*(code **)(puVar15 + 0x1ae08)" * (cast_expression "(code **)(puVar15 + 0x1ae08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + 0x1ae08)" ( (binary_expression "puVar15 + 0x1ae08" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)p + (int)pbVar8 * 4) = 0;" (assignment_expression "*(undefined4 *)((int)p + (int)pbVar8 * 4) = 0" (pointer_expression "*(undefined4 *)((int)p + (int)pbVar8 * 4)" * (cast_expression "(undefined4 *)((int)p + (int)pbVar8 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + (int)pbVar8 * 4)" ( (binary_expression "(int)p + (int)pbVar8 * 4" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(int)pbVar8 * 4" (cast_expression "(int)pbVar8" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)p_00 + (int)pbVar8 * 4) = 0;" (assignment_expression "*(undefined4 *)((int)p_00 + (int)pbVar8 * 4) = 0" (pointer_expression "*(undefined4 *)((int)p_00 + (int)pbVar8 * 4)" * (cast_expression "(undefined4 *)((int)p_00 + (int)pbVar8 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p_00 + (int)pbVar8 * 4)" ( (binary_expression "(int)p_00 + (int)pbVar8 * 4" (cast_expression "(int)p_00" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(int)pbVar8 * 4" (cast_expression "(int)pbVar8" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) = number_literal) ;) (expression_statement "(*pcVar16)(tStack_9c.buffer);" (call_expression "(*pcVar16)(tStack_9c.buffer)" (parenthesized_expression "(*pcVar16)" ( (pointer_expression "*pcVar16" * identifier) )) (argument_list "(tStack_9c.buffer)" ( (field_expression "tStack_9c.buffer" identifier . field_identifier) ))) ;) (expression_statement "__gp = p;" (assignment_expression "__gp = p" identifier = identifier) ;) (if_statement "if (piStack_54 == (int *)0x0) {\n        (**(code **)(puVar15 + 0x1ae08))(p_00);\n      }\n      else {\n        *piStack_54 = (int)p_00;\n      }" if (parenthesized_expression "(piStack_54 == (int *)0x0)" ( (binary_expression "piStack_54 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        (**(code **)(puVar15 + 0x1ae08))(p_00);\n      }" { (expression_statement "(**(code **)(puVar15 + 0x1ae08))(p_00);" (call_expression "(**(code **)(puVar15 + 0x1ae08))(p_00)" (parenthesized_expression "(**(code **)(puVar15 + 0x1ae08))" ( (pointer_expression "**(code **)(puVar15 + 0x1ae08)" * (pointer_expression "*(code **)(puVar15 + 0x1ae08)" * (cast_expression "(code **)(puVar15 + 0x1ae08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + 0x1ae08)" ( (binary_expression "puVar15 + 0x1ae08" identifier + number_literal) ))))) )) (argument_list "(p_00)" ( identifier ))) ;) }) (else_clause "else {\n        *piStack_54 = (int)p_00;\n      }" else (compound_statement "{\n        *piStack_54 = (int)p_00;\n      }" { (expression_statement "*piStack_54 = (int)p_00;" (assignment_expression "*piStack_54 = (int)p_00" (pointer_expression "*piStack_54" * identifier) = (cast_expression "(int)p_00" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }))) (if_statement "if (iStack_94 != *piVar5) {\n        pcVar16 = *(code **)(puVar15 + 0x1ade4);\n        iVar13 = iStack_94;\n        (*pcVar16)();\n        do {\n          pcVar17 = *(code **)(pcVar16 + 0x1aac0);\n          while( true ) {\n            sVar9 = (*pcVar17)(iVar13,pbVar14,ptVar10);\n            if (-1 < (int)sVar9) {\n              return sVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar16 + 0x1aaa4))();\n            bVar2 = ptVar10 < (token_buffer *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            ptVar10 = (token_buffer *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar17 = *(code **)(pcVar16 + 0x1aac0), bVar2)) {\n              return sVar9;\n            }\n          }\n        } while( true );\n      }" if (parenthesized_expression "(iStack_94 != *piVar5)" ( (binary_expression "iStack_94 != *piVar5" identifier != (pointer_expression "*piVar5" * identifier)) )) (compound_statement "{\n        pcVar16 = *(code **)(puVar15 + 0x1ade4);\n        iVar13 = iStack_94;\n        (*pcVar16)();\n        do {\n          pcVar17 = *(code **)(pcVar16 + 0x1aac0);\n          while( true ) {\n            sVar9 = (*pcVar17)(iVar13,pbVar14,ptVar10);\n            if (-1 < (int)sVar9) {\n              return sVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar16 + 0x1aaa4))();\n            bVar2 = ptVar10 < (token_buffer *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            ptVar10 = (token_buffer *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar17 = *(code **)(pcVar16 + 0x1aac0), bVar2)) {\n              return sVar9;\n            }\n          }\n        } while( true );\n      }" { (expression_statement "pcVar16 = *(code **)(puVar15 + 0x1ade4);" (assignment_expression "pcVar16 = *(code **)(puVar15 + 0x1ade4)" identifier = (pointer_expression "*(code **)(puVar15 + 0x1ade4)" * (cast_expression "(code **)(puVar15 + 0x1ade4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + 0x1ade4)" ( (binary_expression "puVar15 + 0x1ade4" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = iStack_94;" (assignment_expression "iVar13 = iStack_94" identifier = identifier) ;) (expression_statement "(*pcVar16)();" (call_expression "(*pcVar16)()" (parenthesized_expression "(*pcVar16)" ( (pointer_expression "*pcVar16" * identifier) )) (argument_list "()" ( ))) ;) (do_statement "do {\n          pcVar17 = *(code **)(pcVar16 + 0x1aac0);\n          while( true ) {\n            sVar9 = (*pcVar17)(iVar13,pbVar14,ptVar10);\n            if (-1 < (int)sVar9) {\n              return sVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar16 + 0x1aaa4))();\n            bVar2 = ptVar10 < (token_buffer *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            ptVar10 = (token_buffer *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar17 = *(code **)(pcVar16 + 0x1aac0), bVar2)) {\n              return sVar9;\n            }\n          }\n        } while( true );" do (compound_statement "{\n          pcVar17 = *(code **)(pcVar16 + 0x1aac0);\n          while( true ) {\n            sVar9 = (*pcVar17)(iVar13,pbVar14,ptVar10);\n            if (-1 < (int)sVar9) {\n              return sVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar16 + 0x1aaa4))();\n            bVar2 = ptVar10 < (token_buffer *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            ptVar10 = (token_buffer *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar17 = *(code **)(pcVar16 + 0x1aac0), bVar2)) {\n              return sVar9;\n            }\n          }\n        }" { (expression_statement "pcVar17 = *(code **)(pcVar16 + 0x1aac0);" (assignment_expression "pcVar17 = *(code **)(pcVar16 + 0x1aac0)" identifier = (pointer_expression "*(code **)(pcVar16 + 0x1aac0)" * (cast_expression "(code **)(pcVar16 + 0x1aac0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar16 + 0x1aac0)" ( (binary_expression "pcVar16 + 0x1aac0" identifier + number_literal) ))))) ;) (while_statement "while( true ) {\n            sVar9 = (*pcVar17)(iVar13,pbVar14,ptVar10);\n            if (-1 < (int)sVar9) {\n              return sVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar16 + 0x1aaa4))();\n            bVar2 = ptVar10 < (token_buffer *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            ptVar10 = (token_buffer *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar17 = *(code **)(pcVar16 + 0x1aac0), bVar2)) {\n              return sVar9;\n            }\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            sVar9 = (*pcVar17)(iVar13,pbVar14,ptVar10);\n            if (-1 < (int)sVar9) {\n              return sVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar16 + 0x1aaa4))();\n            bVar2 = ptVar10 < (token_buffer *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            ptVar10 = (token_buffer *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar17 = *(code **)(pcVar16 + 0x1aac0), bVar2)) {\n              return sVar9;\n            }\n          }" { (expression_statement "sVar9 = (*pcVar17)(iVar13,pbVar14,ptVar10);" (assignment_expression "sVar9 = (*pcVar17)(iVar13,pbVar14,ptVar10)" identifier = (call_expression "(*pcVar17)(iVar13,pbVar14,ptVar10)" (parenthesized_expression "(*pcVar17)" ( (pointer_expression "*pcVar17" * identifier) )) (argument_list "(iVar13,pbVar14,ptVar10)" ( identifier , identifier , identifier )))) ;) (if_statement "if (-1 < (int)sVar9) {\n              return sVar9;\n            }" if (parenthesized_expression "(-1 < (int)sVar9)" ( (binary_expression "-1 < (int)sVar9" number_literal < (cast_expression "(int)sVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              return sVar9;\n            }" { (return_statement "return sVar9;" return identifier ;) })) (expression_statement "piVar5 = (int *)(**(code **)(pcVar16 + 0x1aaa4))();" (assignment_expression "piVar5 = (int *)(**(code **)(pcVar16 + 0x1aaa4))()" identifier = (cast_expression "(int *)(**(code **)(pcVar16 + 0x1aaa4))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar16 + 0x1aaa4))()" (parenthesized_expression "(**(code **)(pcVar16 + 0x1aaa4))" ( (pointer_expression "**(code **)(pcVar16 + 0x1aaa4)" * (pointer_expression "*(code **)(pcVar16 + 0x1aaa4)" * (cast_expression "(code **)(pcVar16 + 0x1aaa4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar16 + 0x1aaa4)" ( (binary_expression "pcVar16 + 0x1aaa4" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "bVar2 = ptVar10 < (token_buffer *)0x7ff00001;" (assignment_expression "bVar2 = ptVar10 < (token_buffer *)0x7ff00001" identifier = (binary_expression "ptVar10 < (token_buffer *)0x7ff00001" identifier < (cast_expression "(token_buffer *)0x7ff00001" ( (type_descriptor "token_buffer *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (*piVar5 == 4) break;" if (parenthesized_expression "(*piVar5 == 4)" ( (binary_expression "*piVar5 == 4" (pointer_expression "*piVar5" * identifier) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "ptVar10 = (token_buffer *)0x7ff00000;" (assignment_expression "ptVar10 = (token_buffer *)0x7ff00000" identifier = (cast_expression "(token_buffer *)0x7ff00000" ( (type_descriptor "token_buffer *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((*piVar5 != 0x16) || (pcVar17 = *(code **)(pcVar16 + 0x1aac0), bVar2)) {\n              return sVar9;\n            }" if (parenthesized_expression "((*piVar5 != 0x16) || (pcVar17 = *(code **)(pcVar16 + 0x1aac0), bVar2))" ( (binary_expression "(*piVar5 != 0x16) || (pcVar17 = *(code **)(pcVar16 + 0x1aac0), bVar2)" (parenthesized_expression "(*piVar5 != 0x16)" ( (binary_expression "*piVar5 != 0x16" (pointer_expression "*piVar5" * identifier) != number_literal) )) || (parenthesized_expression "(pcVar17 = *(code **)(pcVar16 + 0x1aac0), bVar2)" ( (comma_expression "pcVar17 = *(code **)(pcVar16 + 0x1aac0), bVar2" (assignment_expression "pcVar17 = *(code **)(pcVar16 + 0x1aac0)" identifier = (pointer_expression "*(code **)(pcVar16 + 0x1aac0)" * (cast_expression "(code **)(pcVar16 + 0x1aac0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar16 + 0x1aac0)" ( (binary_expression "pcVar16 + 0x1aac0" identifier + number_literal) ))))) , identifier) ))) )) (compound_statement "{\n              return sVar9;\n            }" { (return_statement "return sVar9;" return identifier ;) })) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (return_statement "return (size_t)pbVar8;" return (cast_expression "(size_t)pbVar8" ( (type_descriptor "size_t" primitive_type) ) identifier) ;) })) (expression_statement "n = sVar9 + 1;" (assignment_expression "n = sVar9 + 1" identifier = (binary_expression "sVar9 + 1" identifier + number_literal)) ;) (if_statement "if ((int)n < 0) goto LAB_0001e7f0;" if (parenthesized_expression "((int)n < 0)" ( (binary_expression "(int)n < 0" (cast_expression "(int)n" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0001e7f0;" goto statement_identifier ;)) (expression_statement "iVar13 = (int)pbVar8 * 4;" (assignment_expression "iVar13 = (int)pbVar8 * 4" identifier = (binary_expression "(int)pbVar8 * 4" (cast_expression "(int)pbVar8" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "pbVar8 = pbVar8 + 1;" (assignment_expression "pbVar8 = pbVar8 + 1" identifier = (binary_expression "pbVar8 + 1" identifier + number_literal)) ;) (expression_statement "pvVar6 = xmalloc(n);" (assignment_expression "pvVar6 = xmalloc(n)" identifier = (call_expression "xmalloc(n)" identifier (argument_list "(n)" ( identifier )))) ;) (expression_statement "*(size_t *)((int)p_00 + iVar13) = sVar9;" (assignment_expression "*(size_t *)((int)p_00 + iVar13) = sVar9" (pointer_expression "*(size_t *)((int)p_00 + iVar13)" * (cast_expression "(size_t *)((int)p_00 + iVar13)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p_00 + iVar13)" ( (binary_expression "(int)p_00 + iVar13" (cast_expression "(int)p_00" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) (expression_statement "uVar7 = (**(code **)(puVar15 + 0x1ae00))(pvVar6,tStack_9c.buffer,n);" (assignment_expression "uVar7 = (**(code **)(puVar15 + 0x1ae00))(pvVar6,tStack_9c.buffer,n)" identifier = (call_expression "(**(code **)(puVar15 + 0x1ae00))(pvVar6,tStack_9c.buffer,n)" (parenthesized_expression "(**(code **)(puVar15 + 0x1ae00))" ( (pointer_expression "**(code **)(puVar15 + 0x1ae00)" * (pointer_expression "*(code **)(puVar15 + 0x1ae00)" * (cast_expression "(code **)(puVar15 + 0x1ae00)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + 0x1ae00)" ( (binary_expression "puVar15 + 0x1ae00" identifier + number_literal) ))))) )) (argument_list "(pvVar6,tStack_9c.buffer,n)" ( identifier , (field_expression "tStack_9c.buffer" identifier . field_identifier) , identifier )))) ;) (expression_statement "*(undefined4 *)((int)p + iVar13) = uVar7;" (assignment_expression "*(undefined4 *)((int)p + iVar13) = uVar7" (pointer_expression "*(undefined4 *)((int)p + iVar13)" * (cast_expression "(undefined4 *)((int)p + iVar13)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + iVar13)" ( (binary_expression "(int)p + iVar13" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "byte * readtoken(int param_1,byte *param_2,byte *param_3,undefined4 *param_4)\n\n{\n  byte bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  uint uVar4;\n  int *piVar5;\n  int iVar6;\n  undefined4 uVar7;\n  int iVar8;\n  byte *pbVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  byte *pbVar13;\n  uint uVar14;\n  int iVar15;\n  byte *pbVar16;\n  int iVar17;\n  undefined *puVar18;\n  code *pcVar19;\n  code *pcVar20;\n  undefined1 auStack_9c [4];\n  undefined4 local_98;\n  int local_94;\n  undefined4 *local_90;\n  undefined4 local_8c;\n  undefined *local_88;\n  uint local_84;\n  byte *local_80;\n  int local_7c;\n  byte *local_78;\n  int local_74;\n  int *local_54;\n  uint local_4c [10];\n  \n  puVar3 = PTR___stack_chk_guard_00039368;\n  local_4c[0] = 0;\n  local_4c[1] = 0;\n  local_4c[2] = 0;\n  local_4c[3] = 0;\n  local_4c[4] = 0;\n  local_4c[5] = 0;\n  local_4c[6] = 0;\n  local_4c[7] = 0;\n  local_4c[8] = *(int *)PTR___stack_chk_guard_00039368;\n  puVar11 = param_4;\n  if (param_3 != (byte *)0x0) {\n    param_3 = param_2 + (int)param_3;\n    puVar11 = (undefined4 *)0x1;\n    do {\n      bVar1 = *param_2;\n      param_2 = param_2 + 1;\n      local_4c[bVar1 >> 5] = local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f);\n    } while (param_3 != param_2);\n  }\n  do {\n    pbVar9 = *(byte **)(param_1 + 4);\n    if (pbVar9 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar9 + 1;\n      uVar14 = (uint)*pbVar9;\n      uVar4 = (uint)(*pbVar9 >> 5);\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n      if ((int)uVar14 < 0) break;\n      uVar4 = uVar14 >> 5;\n    }\n  } while ((local_4c[uVar4] >> (uVar14 & 0x1f) & 1) != 0);\n  iVar17 = param_4[1];\n  pbVar16 = (byte *)*param_4;\n  pbVar9 = (byte *)0x0;\nLAB_0001e45c:\n  if ((int)uVar14 < 0) {\n    if (pbVar9 != (byte *)0x0) {\n      if (pbVar9 == pbVar16) goto LAB_0001e474;\nLAB_0001e4ac:\n      pbVar9[iVar17] = 0;\n      goto LAB_0001e4b0;\n    }\n    pbVar9 = (byte *)0xffffffff;\n    goto LAB_0001e4b8;\n  }\n  if (pbVar9 == pbVar16) {\nLAB_0001e474:\n    if (iVar17 == 0) {\n      if (pbVar16 == (byte *)0x0) {\n        pbVar16 = (byte *)0x40;\n      }\n      else if ((int)pbVar16 < 0) goto LAB_0001e544;\n    }\n    else {\n      if ((byte *)0x55555553 < pbVar16) {\nLAB_0001e544:\n                    \n        xalloc_die();\n      }\n      pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;\n    }\n    param_2 = pbVar16;\n    iVar17 = xrealloc(iVar17);\n    if ((int)uVar14 < 0) goto LAB_0001e4ac;\n  }\n  if ((local_4c[uVar14 >> 5] >> (uVar14 & 0x1f) & 1) == 0) {\n    pbVar9[iVar17] = (byte)uVar14;\n    pbVar13 = *(byte **)(param_1 + 4);\n    pbVar9 = pbVar9 + 1;\n    if (pbVar13 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar13 + 1;\n      uVar14 = (uint)*pbVar13;\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n    }\n    goto LAB_0001e45c;\n  }\n  pbVar9[iVar17] = 0;\nLAB_0001e4b0:\n  param_4[1] = iVar17;\n  *param_4 = pbVar16;\nLAB_0001e4b8:\n  if (local_4c[8] == *(int *)puVar3) {\n    return pbVar9;\n  }\n  uVar4 = local_4c[8];\n  puVar18 = PTR___stack_chk_fail_00039350;\n  (*(code *)PTR___stack_chk_fail_00039350)();\n  piVar5 = *(int **)(puVar18 + 0x1adfc);\n  local_88 = puVar3;\n  local_8c = 0x55555554;\n  local_94 = *piVar5;\n  pbVar13 = (byte *)0x40;\n  local_90 = param_4;\n  local_84 = uVar14;\n  local_80 = pbVar9;\n  local_7c = param_1;\n  local_78 = pbVar16;\n  local_74 = iVar17;\n  if (param_2 == (byte *)0x0) {\n    iVar17 = 0x100;\n  }\n  else {\n    pbVar13 = param_2 + 1;\n    iVar17 = (int)pbVar13 * 4;\n    if ((iVar17 < 0) || ((uint)pbVar13 >> 0x1e != 0)) {\nLAB_0001e7f0:\n                    \n      xalloc_die();\n    }\n  }\n  iVar6 = xmalloc(iVar17);\n  pbVar9 = (byte *)0x0;\n  iVar17 = xmalloc(iVar17);\n  init_tokenbuffer(auStack_9c);\n  do {\n    pbVar16 = param_3;\n    puVar12 = puVar11;\n    iVar8 = readtoken(uVar4,param_3,puVar11,auStack_9c);\n    if (pbVar13 <= pbVar9) {\n      if (iVar6 == 0) {\n        pbVar16 = (byte *)0x40;\n        if (pbVar13 == (byte *)0x0) {\n          pbVar13 = (byte *)0x10;\n        }\n        else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;\n        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;\n        pbVar16 = (byte *)((int)pbVar13 * 4);\n      }\n      iVar6 = xrealloc(iVar6,pbVar16);\n      iVar17 = xrealloc(iVar17,pbVar16);\n    }\n    if (iVar8 == -1) {\n      pcVar19 = *(code **)(puVar18 + 0x1ae08);\n      *(undefined4 *)(iVar6 + (int)pbVar9 * 4) = 0;\n      *(undefined4 *)(iVar17 + (int)pbVar9 * 4) = 0;\n      (*pcVar19)(local_98);\n      __gp_1 = iVar6;\n      if (local_54 == (int *)0x0) {\n        (**(code **)(puVar18 + 0x1ae08))(iVar17);\n      }\n      else {\n        *local_54 = iVar17;\n      }\n      if (local_94 != *piVar5) {\n        pcVar19 = *(code **)(puVar18 + 0x1ade4);\n        iVar17 = local_94;\n        (*pcVar19)();\n        do {\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        } while( true );\n      }\n      return pbVar9;\n    }\n    iVar10 = iVar8 + 1;\n    if (iVar10 < 0) goto LAB_0001e7f0;\n    iVar15 = (int)pbVar9 * 4;\n    pbVar9 = pbVar9 + 1;\n    uVar7 = xmalloc(iVar10);\n    *(int *)(iVar17 + iVar15) = iVar8;\n    uVar7 = (**(code **)(puVar18 + 0x1ae00))(uVar7,local_98,iVar10);\n    *(undefined4 *)(iVar6 + iVar15) = uVar7;\n  } while( true );\n}\n\n" (function_definition "byte * readtoken(int param_1,byte *param_2,byte *param_3,undefined4 *param_4)\n\n{\n  byte bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  uint uVar4;\n  int *piVar5;\n  int iVar6;\n  undefined4 uVar7;\n  int iVar8;\n  byte *pbVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  byte *pbVar13;\n  uint uVar14;\n  int iVar15;\n  byte *pbVar16;\n  int iVar17;\n  undefined *puVar18;\n  code *pcVar19;\n  code *pcVar20;\n  undefined1 auStack_9c [4];\n  undefined4 local_98;\n  int local_94;\n  undefined4 *local_90;\n  undefined4 local_8c;\n  undefined *local_88;\n  uint local_84;\n  byte *local_80;\n  int local_7c;\n  byte *local_78;\n  int local_74;\n  int *local_54;\n  uint local_4c [10];\n  \n  puVar3 = PTR___stack_chk_guard_00039368;\n  local_4c[0] = 0;\n  local_4c[1] = 0;\n  local_4c[2] = 0;\n  local_4c[3] = 0;\n  local_4c[4] = 0;\n  local_4c[5] = 0;\n  local_4c[6] = 0;\n  local_4c[7] = 0;\n  local_4c[8] = *(int *)PTR___stack_chk_guard_00039368;\n  puVar11 = param_4;\n  if (param_3 != (byte *)0x0) {\n    param_3 = param_2 + (int)param_3;\n    puVar11 = (undefined4 *)0x1;\n    do {\n      bVar1 = *param_2;\n      param_2 = param_2 + 1;\n      local_4c[bVar1 >> 5] = local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f);\n    } while (param_3 != param_2);\n  }\n  do {\n    pbVar9 = *(byte **)(param_1 + 4);\n    if (pbVar9 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar9 + 1;\n      uVar14 = (uint)*pbVar9;\n      uVar4 = (uint)(*pbVar9 >> 5);\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n      if ((int)uVar14 < 0) break;\n      uVar4 = uVar14 >> 5;\n    }\n  } while ((local_4c[uVar4] >> (uVar14 & 0x1f) & 1) != 0);\n  iVar17 = param_4[1];\n  pbVar16 = (byte *)*param_4;\n  pbVar9 = (byte *)0x0;\nLAB_0001e45c:\n  if ((int)uVar14 < 0) {\n    if (pbVar9 != (byte *)0x0) {\n      if (pbVar9 == pbVar16) goto LAB_0001e474;\nLAB_0001e4ac:\n      pbVar9[iVar17] = 0;\n      goto LAB_0001e4b0;\n    }\n    pbVar9 = (byte *)0xffffffff;\n    goto LAB_0001e4b8;\n  }\n  if (pbVar9 == pbVar16) {\nLAB_0001e474:\n    if (iVar17 == 0) {\n      if (pbVar16 == (byte *)0x0) {\n        pbVar16 = (byte *)0x40;\n      }\n      else if ((int)pbVar16 < 0) goto LAB_0001e544;\n    }\n    else {\n      if ((byte *)0x55555553 < pbVar16) {\nLAB_0001e544:\n                    \n        xalloc_die();\n      }\n      pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;\n    }\n    param_2 = pbVar16;\n    iVar17 = xrealloc(iVar17);\n    if ((int)uVar14 < 0) goto LAB_0001e4ac;\n  }\n  if ((local_4c[uVar14 >> 5] >> (uVar14 & 0x1f) & 1) == 0) {\n    pbVar9[iVar17] = (byte)uVar14;\n    pbVar13 = *(byte **)(param_1 + 4);\n    pbVar9 = pbVar9 + 1;\n    if (pbVar13 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar13 + 1;\n      uVar14 = (uint)*pbVar13;\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n    }\n    goto LAB_0001e45c;\n  }\n  pbVar9[iVar17] = 0;\nLAB_0001e4b0:\n  param_4[1] = iVar17;\n  *param_4 = pbVar16;\nLAB_0001e4b8:\n  if (local_4c[8] == *(int *)puVar3) {\n    return pbVar9;\n  }\n  uVar4 = local_4c[8];\n  puVar18 = PTR___stack_chk_fail_00039350;\n  (*(code *)PTR___stack_chk_fail_00039350)();\n  piVar5 = *(int **)(puVar18 + 0x1adfc);\n  local_88 = puVar3;\n  local_8c = 0x55555554;\n  local_94 = *piVar5;\n  pbVar13 = (byte *)0x40;\n  local_90 = param_4;\n  local_84 = uVar14;\n  local_80 = pbVar9;\n  local_7c = param_1;\n  local_78 = pbVar16;\n  local_74 = iVar17;\n  if (param_2 == (byte *)0x0) {\n    iVar17 = 0x100;\n  }\n  else {\n    pbVar13 = param_2 + 1;\n    iVar17 = (int)pbVar13 * 4;\n    if ((iVar17 < 0) || ((uint)pbVar13 >> 0x1e != 0)) {\nLAB_0001e7f0:\n                    \n      xalloc_die();\n    }\n  }\n  iVar6 = xmalloc(iVar17);\n  pbVar9 = (byte *)0x0;\n  iVar17 = xmalloc(iVar17);\n  init_tokenbuffer(auStack_9c);\n  do {\n    pbVar16 = param_3;\n    puVar12 = puVar11;\n    iVar8 = readtoken(uVar4,param_3,puVar11,auStack_9c);\n    if (pbVar13 <= pbVar9) {\n      if (iVar6 == 0) {\n        pbVar16 = (byte *)0x40;\n        if (pbVar13 == (byte *)0x0) {\n          pbVar13 = (byte *)0x10;\n        }\n        else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;\n        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;\n        pbVar16 = (byte *)((int)pbVar13 * 4);\n      }\n      iVar6 = xrealloc(iVar6,pbVar16);\n      iVar17 = xrealloc(iVar17,pbVar16);\n    }\n    if (iVar8 == -1) {\n      pcVar19 = *(code **)(puVar18 + 0x1ae08);\n      *(undefined4 *)(iVar6 + (int)pbVar9 * 4) = 0;\n      *(undefined4 *)(iVar17 + (int)pbVar9 * 4) = 0;\n      (*pcVar19)(local_98);\n      __gp_1 = iVar6;\n      if (local_54 == (int *)0x0) {\n        (**(code **)(puVar18 + 0x1ae08))(iVar17);\n      }\n      else {\n        *local_54 = iVar17;\n      }\n      if (local_94 != *piVar5) {\n        pcVar19 = *(code **)(puVar18 + 0x1ade4);\n        iVar17 = local_94;\n        (*pcVar19)();\n        do {\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        } while( true );\n      }\n      return pbVar9;\n    }\n    iVar10 = iVar8 + 1;\n    if (iVar10 < 0) goto LAB_0001e7f0;\n    iVar15 = (int)pbVar9 * 4;\n    pbVar9 = pbVar9 + 1;\n    uVar7 = xmalloc(iVar10);\n    *(int *)(iVar17 + iVar15) = iVar8;\n    uVar7 = (**(code **)(puVar18 + 0x1ae00))(uVar7,local_98,iVar10);\n    *(undefined4 *)(iVar6 + iVar15) = uVar7;\n  } while( true );\n}" type_identifier (pointer_declarator "* readtoken(int param_1,byte *param_2,byte *param_3,undefined4 *param_4)" * (function_declarator "readtoken(int param_1,byte *param_2,byte *param_3,undefined4 *param_4)" identifier (parameter_list "(int param_1,byte *param_2,byte *param_3,undefined4 *param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "byte *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) )))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  uint uVar4;\n  int *piVar5;\n  int iVar6;\n  undefined4 uVar7;\n  int iVar8;\n  byte *pbVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  byte *pbVar13;\n  uint uVar14;\n  int iVar15;\n  byte *pbVar16;\n  int iVar17;\n  undefined *puVar18;\n  code *pcVar19;\n  code *pcVar20;\n  undefined1 auStack_9c [4];\n  undefined4 local_98;\n  int local_94;\n  undefined4 *local_90;\n  undefined4 local_8c;\n  undefined *local_88;\n  uint local_84;\n  byte *local_80;\n  int local_7c;\n  byte *local_78;\n  int local_74;\n  int *local_54;\n  uint local_4c [10];\n  \n  puVar3 = PTR___stack_chk_guard_00039368;\n  local_4c[0] = 0;\n  local_4c[1] = 0;\n  local_4c[2] = 0;\n  local_4c[3] = 0;\n  local_4c[4] = 0;\n  local_4c[5] = 0;\n  local_4c[6] = 0;\n  local_4c[7] = 0;\n  local_4c[8] = *(int *)PTR___stack_chk_guard_00039368;\n  puVar11 = param_4;\n  if (param_3 != (byte *)0x0) {\n    param_3 = param_2 + (int)param_3;\n    puVar11 = (undefined4 *)0x1;\n    do {\n      bVar1 = *param_2;\n      param_2 = param_2 + 1;\n      local_4c[bVar1 >> 5] = local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f);\n    } while (param_3 != param_2);\n  }\n  do {\n    pbVar9 = *(byte **)(param_1 + 4);\n    if (pbVar9 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar9 + 1;\n      uVar14 = (uint)*pbVar9;\n      uVar4 = (uint)(*pbVar9 >> 5);\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n      if ((int)uVar14 < 0) break;\n      uVar4 = uVar14 >> 5;\n    }\n  } while ((local_4c[uVar4] >> (uVar14 & 0x1f) & 1) != 0);\n  iVar17 = param_4[1];\n  pbVar16 = (byte *)*param_4;\n  pbVar9 = (byte *)0x0;\nLAB_0001e45c:\n  if ((int)uVar14 < 0) {\n    if (pbVar9 != (byte *)0x0) {\n      if (pbVar9 == pbVar16) goto LAB_0001e474;\nLAB_0001e4ac:\n      pbVar9[iVar17] = 0;\n      goto LAB_0001e4b0;\n    }\n    pbVar9 = (byte *)0xffffffff;\n    goto LAB_0001e4b8;\n  }\n  if (pbVar9 == pbVar16) {\nLAB_0001e474:\n    if (iVar17 == 0) {\n      if (pbVar16 == (byte *)0x0) {\n        pbVar16 = (byte *)0x40;\n      }\n      else if ((int)pbVar16 < 0) goto LAB_0001e544;\n    }\n    else {\n      if ((byte *)0x55555553 < pbVar16) {\nLAB_0001e544:\n                    \n        xalloc_die();\n      }\n      pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;\n    }\n    param_2 = pbVar16;\n    iVar17 = xrealloc(iVar17);\n    if ((int)uVar14 < 0) goto LAB_0001e4ac;\n  }\n  if ((local_4c[uVar14 >> 5] >> (uVar14 & 0x1f) & 1) == 0) {\n    pbVar9[iVar17] = (byte)uVar14;\n    pbVar13 = *(byte **)(param_1 + 4);\n    pbVar9 = pbVar9 + 1;\n    if (pbVar13 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar13 + 1;\n      uVar14 = (uint)*pbVar13;\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n    }\n    goto LAB_0001e45c;\n  }\n  pbVar9[iVar17] = 0;\nLAB_0001e4b0:\n  param_4[1] = iVar17;\n  *param_4 = pbVar16;\nLAB_0001e4b8:\n  if (local_4c[8] == *(int *)puVar3) {\n    return pbVar9;\n  }\n  uVar4 = local_4c[8];\n  puVar18 = PTR___stack_chk_fail_00039350;\n  (*(code *)PTR___stack_chk_fail_00039350)();\n  piVar5 = *(int **)(puVar18 + 0x1adfc);\n  local_88 = puVar3;\n  local_8c = 0x55555554;\n  local_94 = *piVar5;\n  pbVar13 = (byte *)0x40;\n  local_90 = param_4;\n  local_84 = uVar14;\n  local_80 = pbVar9;\n  local_7c = param_1;\n  local_78 = pbVar16;\n  local_74 = iVar17;\n  if (param_2 == (byte *)0x0) {\n    iVar17 = 0x100;\n  }\n  else {\n    pbVar13 = param_2 + 1;\n    iVar17 = (int)pbVar13 * 4;\n    if ((iVar17 < 0) || ((uint)pbVar13 >> 0x1e != 0)) {\nLAB_0001e7f0:\n                    \n      xalloc_die();\n    }\n  }\n  iVar6 = xmalloc(iVar17);\n  pbVar9 = (byte *)0x0;\n  iVar17 = xmalloc(iVar17);\n  init_tokenbuffer(auStack_9c);\n  do {\n    pbVar16 = param_3;\n    puVar12 = puVar11;\n    iVar8 = readtoken(uVar4,param_3,puVar11,auStack_9c);\n    if (pbVar13 <= pbVar9) {\n      if (iVar6 == 0) {\n        pbVar16 = (byte *)0x40;\n        if (pbVar13 == (byte *)0x0) {\n          pbVar13 = (byte *)0x10;\n        }\n        else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;\n        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;\n        pbVar16 = (byte *)((int)pbVar13 * 4);\n      }\n      iVar6 = xrealloc(iVar6,pbVar16);\n      iVar17 = xrealloc(iVar17,pbVar16);\n    }\n    if (iVar8 == -1) {\n      pcVar19 = *(code **)(puVar18 + 0x1ae08);\n      *(undefined4 *)(iVar6 + (int)pbVar9 * 4) = 0;\n      *(undefined4 *)(iVar17 + (int)pbVar9 * 4) = 0;\n      (*pcVar19)(local_98);\n      __gp_1 = iVar6;\n      if (local_54 == (int *)0x0) {\n        (**(code **)(puVar18 + 0x1ae08))(iVar17);\n      }\n      else {\n        *local_54 = iVar17;\n      }\n      if (local_94 != *piVar5) {\n        pcVar19 = *(code **)(puVar18 + 0x1ade4);\n        iVar17 = local_94;\n        (*pcVar19)();\n        do {\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        } while( true );\n      }\n      return pbVar9;\n    }\n    iVar10 = iVar8 + 1;\n    if (iVar10 < 0) goto LAB_0001e7f0;\n    iVar15 = (int)pbVar9 * 4;\n    pbVar9 = pbVar9 + 1;\n    uVar7 = xmalloc(iVar10);\n    *(int *)(iVar17 + iVar15) = iVar8;\n    uVar7 = (**(code **)(puVar18 + 0x1ae00))(uVar7,local_98,iVar10);\n    *(undefined4 *)(iVar6 + iVar15) = uVar7;\n  } while( true );\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "byte *pbVar16;" type_identifier (pointer_declarator "*pbVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "undefined *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "code *pcVar19;" type_identifier (pointer_declarator "*pcVar19" * identifier) ;) (declaration "code *pcVar20;" type_identifier (pointer_declarator "*pcVar20" * identifier) ;) (declaration "undefined1 auStack_9c [4];" type_identifier (array_declarator "auStack_9c [4]" identifier [ number_literal ]) ;) (declaration "undefined4 local_98;" type_identifier identifier ;) (declaration "int local_94;" primitive_type identifier ;) (declaration "undefined4 *local_90;" type_identifier (pointer_declarator "*local_90" * identifier) ;) (declaration "undefined4 local_8c;" type_identifier identifier ;) (declaration "undefined *local_88;" type_identifier (pointer_declarator "*local_88" * identifier) ;) (declaration "uint local_84;" type_identifier identifier ;) (declaration "byte *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "int local_7c;" primitive_type identifier ;) (declaration "byte *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "int local_74;" primitive_type identifier ;) (declaration "int *local_54;" primitive_type (pointer_declarator "*local_54" * identifier) ;) (declaration "uint local_4c [10];" type_identifier (array_declarator "local_4c [10]" identifier [ number_literal ]) ;) (expression_statement "puVar3 = PTR___stack_chk_guard_00039368;" (assignment_expression "puVar3 = PTR___stack_chk_guard_00039368" identifier = identifier) ;) (expression_statement "local_4c[0] = 0;" (assignment_expression "local_4c[0] = 0" (subscript_expression "local_4c[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_4c[1] = 0;" (assignment_expression "local_4c[1] = 0" (subscript_expression "local_4c[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_4c[2] = 0;" (assignment_expression "local_4c[2] = 0" (subscript_expression "local_4c[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_4c[3] = 0;" (assignment_expression "local_4c[3] = 0" (subscript_expression "local_4c[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_4c[4] = 0;" (assignment_expression "local_4c[4] = 0" (subscript_expression "local_4c[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_4c[5] = 0;" (assignment_expression "local_4c[5] = 0" (subscript_expression "local_4c[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_4c[6] = 0;" (assignment_expression "local_4c[6] = 0" (subscript_expression "local_4c[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_4c[7] = 0;" (assignment_expression "local_4c[7] = 0" (subscript_expression "local_4c[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_4c[8] = *(int *)PTR___stack_chk_guard_00039368;" (assignment_expression "local_4c[8] = *(int *)PTR___stack_chk_guard_00039368" (subscript_expression "local_4c[8]" identifier [ number_literal ]) = (pointer_expression "*(int *)PTR___stack_chk_guard_00039368" * (cast_expression "(int *)PTR___stack_chk_guard_00039368" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "puVar11 = param_4;" (assignment_expression "puVar11 = param_4" identifier = identifier) ;) (if_statement "if (param_3 != (byte *)0x0) {\n    param_3 = param_2 + (int)param_3;\n    puVar11 = (undefined4 *)0x1;\n    do {\n      bVar1 = *param_2;\n      param_2 = param_2 + 1;\n      local_4c[bVar1 >> 5] = local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f);\n    } while (param_3 != param_2);\n  }" if (parenthesized_expression "(param_3 != (byte *)0x0)" ( (binary_expression "param_3 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    param_3 = param_2 + (int)param_3;\n    puVar11 = (undefined4 *)0x1;\n    do {\n      bVar1 = *param_2;\n      param_2 = param_2 + 1;\n      local_4c[bVar1 >> 5] = local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f);\n    } while (param_3 != param_2);\n  }" { (expression_statement "param_3 = param_2 + (int)param_3;" (assignment_expression "param_3 = param_2 + (int)param_3" identifier = (binary_expression "param_2 + (int)param_3" identifier + (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar11 = (undefined4 *)0x1;" (assignment_expression "puVar11 = (undefined4 *)0x1" identifier = (cast_expression "(undefined4 *)0x1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n      bVar1 = *param_2;\n      param_2 = param_2 + 1;\n      local_4c[bVar1 >> 5] = local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f);\n    } while (param_3 != param_2);" do (compound_statement "{\n      bVar1 = *param_2;\n      param_2 = param_2 + 1;\n      local_4c[bVar1 >> 5] = local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f);\n    }" { (expression_statement "bVar1 = *param_2;" (assignment_expression "bVar1 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "local_4c[bVar1 >> 5] = local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f);" (assignment_expression "local_4c[bVar1 >> 5] = local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f)" (subscript_expression "local_4c[bVar1 >> 5]" identifier [ (binary_expression "bVar1 >> 5" identifier >> number_literal) ]) = (binary_expression "local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f)" (subscript_expression "local_4c[bVar1 >> 5]" identifier [ (binary_expression "bVar1 >> 5" identifier >> number_literal) ]) | (binary_expression "1 << (bVar1 & 0x1f)" number_literal << (parenthesized_expression "(bVar1 & 0x1f)" ( (binary_expression "bVar1 & 0x1f" identifier & number_literal) ))))) ;) }) while (parenthesized_expression "(param_3 != param_2)" ( (binary_expression "param_3 != param_2" identifier != identifier) )) ;) })) (do_statement "do {\n    pbVar9 = *(byte **)(param_1 + 4);\n    if (pbVar9 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar9 + 1;\n      uVar14 = (uint)*pbVar9;\n      uVar4 = (uint)(*pbVar9 >> 5);\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n      if ((int)uVar14 < 0) break;\n      uVar4 = uVar14 >> 5;\n    }\n  } while ((local_4c[uVar4] >> (uVar14 & 0x1f) & 1) != 0);" do (compound_statement "{\n    pbVar9 = *(byte **)(param_1 + 4);\n    if (pbVar9 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar9 + 1;\n      uVar14 = (uint)*pbVar9;\n      uVar4 = (uint)(*pbVar9 >> 5);\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n      if ((int)uVar14 < 0) break;\n      uVar4 = uVar14 >> 5;\n    }\n  }" { (expression_statement "pbVar9 = *(byte **)(param_1 + 4);" (assignment_expression "pbVar9 = *(byte **)(param_1 + 4)" identifier = (pointer_expression "*(byte **)(param_1 + 4)" * (cast_expression "(byte **)(param_1 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (if_statement "if (pbVar9 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar9 + 1;\n      uVar14 = (uint)*pbVar9;\n      uVar4 = (uint)(*pbVar9 >> 5);\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n      if ((int)uVar14 < 0) break;\n      uVar4 = uVar14 >> 5;\n    }" if (parenthesized_expression "(pbVar9 < *(byte **)(param_1 + 8))" ( (binary_expression "pbVar9 < *(byte **)(param_1 + 8)" identifier < (pointer_expression "*(byte **)(param_1 + 8)" * (cast_expression "(byte **)(param_1 + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n      *(byte **)(param_1 + 4) = pbVar9 + 1;\n      uVar14 = (uint)*pbVar9;\n      uVar4 = (uint)(*pbVar9 >> 5);\n    }" { (expression_statement "*(byte **)(param_1 + 4) = pbVar9 + 1;" (assignment_expression "*(byte **)(param_1 + 4) = pbVar9 + 1" (pointer_expression "*(byte **)(param_1 + 4)" * (cast_expression "(byte **)(param_1 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (expression_statement "uVar14 = (uint)*pbVar9;" (assignment_expression "uVar14 = (uint)*pbVar9" identifier = (binary_expression "(uint)*pbVar9" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "uVar4 = (uint)(*pbVar9 >> 5);" (assignment_expression "uVar4 = (uint)(*pbVar9 >> 5)" identifier = (call_expression "(uint)(*pbVar9 >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*pbVar9 >> 5)" ( (binary_expression "*pbVar9 >> 5" (pointer_expression "*pbVar9" * identifier) >> number_literal) )))) ;) }) (else_clause "else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n      if ((int)uVar14 < 0) break;\n      uVar4 = uVar14 >> 5;\n    }" else (compound_statement "{\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n      if ((int)uVar14 < 0) break;\n      uVar4 = uVar14 >> 5;\n    }" { (expression_statement "uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);" (assignment_expression "uVar14 = (*(code *)PTR___uflow_0003928c)(param_1)" identifier = (call_expression "(*(code *)PTR___uflow_0003928c)(param_1)" (parenthesized_expression "(*(code *)PTR___uflow_0003928c)" ( (pointer_expression "*(code *)PTR___uflow_0003928c" * (cast_expression "(code *)PTR___uflow_0003928c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if ((int)uVar14 < 0) break;" if (parenthesized_expression "((int)uVar14 < 0)" ( (binary_expression "(int)uVar14 < 0" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar4 = uVar14 >> 5;" (assignment_expression "uVar4 = uVar14 >> 5" identifier = (binary_expression "uVar14 >> 5" identifier >> number_literal)) ;) }))) }) while (parenthesized_expression "((local_4c[uVar4] >> (uVar14 & 0x1f) & 1) != 0)" ( (binary_expression "(local_4c[uVar4] >> (uVar14 & 0x1f) & 1) != 0" (parenthesized_expression "(local_4c[uVar4] >> (uVar14 & 0x1f) & 1)" ( (binary_expression "local_4c[uVar4] >> (uVar14 & 0x1f) & 1" (binary_expression "local_4c[uVar4] >> (uVar14 & 0x1f)" (subscript_expression "local_4c[uVar4]" identifier [ identifier ]) >> (parenthesized_expression "(uVar14 & 0x1f)" ( (binary_expression "uVar14 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) ;) (expression_statement "iVar17 = param_4[1];" (assignment_expression "iVar17 = param_4[1]" identifier = (subscript_expression "param_4[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar16 = (byte *)*param_4;" (assignment_expression "pbVar16 = (byte *)*param_4" identifier = (cast_expression "(byte *)*param_4" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_4" * identifier))) ;) (expression_statement "pbVar9 = (byte *)0x0;" (assignment_expression "pbVar9 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0001e45c:\n  if ((int)uVar14 < 0) {\n    if (pbVar9 != (byte *)0x0) {\n      if (pbVar9 == pbVar16) goto LAB_0001e474;\nLAB_0001e4ac:\n      pbVar9[iVar17] = 0;\n      goto LAB_0001e4b0;\n    }\n    pbVar9 = (byte *)0xffffffff;\n    goto LAB_0001e4b8;\n  }" statement_identifier : (if_statement "if ((int)uVar14 < 0) {\n    if (pbVar9 != (byte *)0x0) {\n      if (pbVar9 == pbVar16) goto LAB_0001e474;\nLAB_0001e4ac:\n      pbVar9[iVar17] = 0;\n      goto LAB_0001e4b0;\n    }\n    pbVar9 = (byte *)0xffffffff;\n    goto LAB_0001e4b8;\n  }" if (parenthesized_expression "((int)uVar14 < 0)" ( (binary_expression "(int)uVar14 < 0" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    if (pbVar9 != (byte *)0x0) {\n      if (pbVar9 == pbVar16) goto LAB_0001e474;\nLAB_0001e4ac:\n      pbVar9[iVar17] = 0;\n      goto LAB_0001e4b0;\n    }\n    pbVar9 = (byte *)0xffffffff;\n    goto LAB_0001e4b8;\n  }" { (if_statement "if (pbVar9 != (byte *)0x0) {\n      if (pbVar9 == pbVar16) goto LAB_0001e474;\nLAB_0001e4ac:\n      pbVar9[iVar17] = 0;\n      goto LAB_0001e4b0;\n    }" if (parenthesized_expression "(pbVar9 != (byte *)0x0)" ( (binary_expression "pbVar9 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (pbVar9 == pbVar16) goto LAB_0001e474;\nLAB_0001e4ac:\n      pbVar9[iVar17] = 0;\n      goto LAB_0001e4b0;\n    }" { (if_statement "if (pbVar9 == pbVar16) goto LAB_0001e474;" if (parenthesized_expression "(pbVar9 == pbVar16)" ( (binary_expression "pbVar9 == pbVar16" identifier == identifier) )) (goto_statement "goto LAB_0001e474;" goto statement_identifier ;)) (labeled_statement "LAB_0001e4ac:\n      pbVar9[iVar17] = 0;" statement_identifier : (expression_statement "pbVar9[iVar17] = 0;" (assignment_expression "pbVar9[iVar17] = 0" (subscript_expression "pbVar9[iVar17]" identifier [ identifier ]) = number_literal) ;)) (goto_statement "goto LAB_0001e4b0;" goto statement_identifier ;) })) (expression_statement "pbVar9 = (byte *)0xffffffff;" (assignment_expression "pbVar9 = (byte *)0xffffffff" identifier = (cast_expression "(byte *)0xffffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0001e4b8;" goto statement_identifier ;) }))) (if_statement "if (pbVar9 == pbVar16) {\nLAB_0001e474:\n    if (iVar17 == 0) {\n      if (pbVar16 == (byte *)0x0) {\n        pbVar16 = (byte *)0x40;\n      }\n      else if ((int)pbVar16 < 0) goto LAB_0001e544;\n    }\n    else {\n      if ((byte *)0x55555553 < pbVar16) {\nLAB_0001e544:\n                    \n        xalloc_die();\n      }\n      pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;\n    }\n    param_2 = pbVar16;\n    iVar17 = xrealloc(iVar17);\n    if ((int)uVar14 < 0) goto LAB_0001e4ac;\n  }" if (parenthesized_expression "(pbVar9 == pbVar16)" ( (binary_expression "pbVar9 == pbVar16" identifier == identifier) )) (compound_statement "{\nLAB_0001e474:\n    if (iVar17 == 0) {\n      if (pbVar16 == (byte *)0x0) {\n        pbVar16 = (byte *)0x40;\n      }\n      else if ((int)pbVar16 < 0) goto LAB_0001e544;\n    }\n    else {\n      if ((byte *)0x55555553 < pbVar16) {\nLAB_0001e544:\n                    \n        xalloc_die();\n      }\n      pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;\n    }\n    param_2 = pbVar16;\n    iVar17 = xrealloc(iVar17);\n    if ((int)uVar14 < 0) goto LAB_0001e4ac;\n  }" { (labeled_statement "LAB_0001e474:\n    if (iVar17 == 0) {\n      if (pbVar16 == (byte *)0x0) {\n        pbVar16 = (byte *)0x40;\n      }\n      else if ((int)pbVar16 < 0) goto LAB_0001e544;\n    }\n    else {\n      if ((byte *)0x55555553 < pbVar16) {\nLAB_0001e544:\n                    \n        xalloc_die();\n      }\n      pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;\n    }" statement_identifier : (if_statement "if (iVar17 == 0) {\n      if (pbVar16 == (byte *)0x0) {\n        pbVar16 = (byte *)0x40;\n      }\n      else if ((int)pbVar16 < 0) goto LAB_0001e544;\n    }\n    else {\n      if ((byte *)0x55555553 < pbVar16) {\nLAB_0001e544:\n                    \n        xalloc_die();\n      }\n      pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;\n    }" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (compound_statement "{\n      if (pbVar16 == (byte *)0x0) {\n        pbVar16 = (byte *)0x40;\n      }\n      else if ((int)pbVar16 < 0) goto LAB_0001e544;\n    }" { (if_statement "if (pbVar16 == (byte *)0x0) {\n        pbVar16 = (byte *)0x40;\n      }\n      else if ((int)pbVar16 < 0) goto LAB_0001e544;" if (parenthesized_expression "(pbVar16 == (byte *)0x0)" ( (binary_expression "pbVar16 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pbVar16 = (byte *)0x40;\n      }" { (expression_statement "pbVar16 = (byte *)0x40;" (assignment_expression "pbVar16 = (byte *)0x40" identifier = (cast_expression "(byte *)0x40" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else if ((int)pbVar16 < 0) goto LAB_0001e544;" else (if_statement "if ((int)pbVar16 < 0) goto LAB_0001e544;" if (parenthesized_expression "((int)pbVar16 < 0)" ( (binary_expression "(int)pbVar16 < 0" (cast_expression "(int)pbVar16" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0001e544;" goto statement_identifier ;)))) }) (else_clause "else {\n      if ((byte *)0x55555553 < pbVar16) {\nLAB_0001e544:\n                    \n        xalloc_die();\n      }\n      pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;\n    }" else (compound_statement "{\n      if ((byte *)0x55555553 < pbVar16) {\nLAB_0001e544:\n                    \n        xalloc_die();\n      }\n      pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;\n    }" { (if_statement "if ((byte *)0x55555553 < pbVar16) {\nLAB_0001e544:\n                    \n        xalloc_die();\n      }" if (parenthesized_expression "((byte *)0x55555553 < pbVar16)" ( (binary_expression "(byte *)0x55555553 < pbVar16" (cast_expression "(byte *)0x55555553" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < identifier) )) (compound_statement "{\nLAB_0001e544:\n                    \n        xalloc_die();\n      }" { (labeled_statement "LAB_0001e544:\n                    \n        xalloc_die();" statement_identifier : (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;)) })) (expression_statement "pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;" (assignment_expression "pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1" identifier = (binary_expression "pbVar16 + ((uint)pbVar16 >> 1) + 1" (binary_expression "pbVar16 + ((uint)pbVar16 >> 1)" identifier + (parenthesized_expression "((uint)pbVar16 >> 1)" ( (binary_expression "(uint)pbVar16 >> 1" (cast_expression "(uint)pbVar16" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) + number_literal)) ;) })))) (expression_statement "param_2 = pbVar16;" (assignment_expression "param_2 = pbVar16" identifier = identifier) ;) (expression_statement "iVar17 = xrealloc(iVar17);" (assignment_expression "iVar17 = xrealloc(iVar17)" identifier = (call_expression "xrealloc(iVar17)" identifier (argument_list "(iVar17)" ( identifier )))) ;) (if_statement "if ((int)uVar14 < 0) goto LAB_0001e4ac;" if (parenthesized_expression "((int)uVar14 < 0)" ( (binary_expression "(int)uVar14 < 0" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0001e4ac;" goto statement_identifier ;)) })) (if_statement "if ((local_4c[uVar14 >> 5] >> (uVar14 & 0x1f) & 1) == 0) {\n    pbVar9[iVar17] = (byte)uVar14;\n    pbVar13 = *(byte **)(param_1 + 4);\n    pbVar9 = pbVar9 + 1;\n    if (pbVar13 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar13 + 1;\n      uVar14 = (uint)*pbVar13;\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n    }\n    goto LAB_0001e45c;\n  }" if (parenthesized_expression "((local_4c[uVar14 >> 5] >> (uVar14 & 0x1f) & 1) == 0)" ( (binary_expression "(local_4c[uVar14 >> 5] >> (uVar14 & 0x1f) & 1) == 0" (parenthesized_expression "(local_4c[uVar14 >> 5] >> (uVar14 & 0x1f) & 1)" ( (binary_expression "local_4c[uVar14 >> 5] >> (uVar14 & 0x1f) & 1" (binary_expression "local_4c[uVar14 >> 5] >> (uVar14 & 0x1f)" (subscript_expression "local_4c[uVar14 >> 5]" identifier [ (binary_expression "uVar14 >> 5" identifier >> number_literal) ]) >> (parenthesized_expression "(uVar14 & 0x1f)" ( (binary_expression "uVar14 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n    pbVar9[iVar17] = (byte)uVar14;\n    pbVar13 = *(byte **)(param_1 + 4);\n    pbVar9 = pbVar9 + 1;\n    if (pbVar13 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar13 + 1;\n      uVar14 = (uint)*pbVar13;\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n    }\n    goto LAB_0001e45c;\n  }" { (expression_statement "pbVar9[iVar17] = (byte)uVar14;" (assignment_expression "pbVar9[iVar17] = (byte)uVar14" (subscript_expression "pbVar9[iVar17]" identifier [ identifier ]) = (cast_expression "(byte)uVar14" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "pbVar13 = *(byte **)(param_1 + 4);" (assignment_expression "pbVar13 = *(byte **)(param_1 + 4)" identifier = (pointer_expression "*(byte **)(param_1 + 4)" * (cast_expression "(byte **)(param_1 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (if_statement "if (pbVar13 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar13 + 1;\n      uVar14 = (uint)*pbVar13;\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n    }" if (parenthesized_expression "(pbVar13 < *(byte **)(param_1 + 8))" ( (binary_expression "pbVar13 < *(byte **)(param_1 + 8)" identifier < (pointer_expression "*(byte **)(param_1 + 8)" * (cast_expression "(byte **)(param_1 + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n      *(byte **)(param_1 + 4) = pbVar13 + 1;\n      uVar14 = (uint)*pbVar13;\n    }" { (expression_statement "*(byte **)(param_1 + 4) = pbVar13 + 1;" (assignment_expression "*(byte **)(param_1 + 4) = pbVar13 + 1" (pointer_expression "*(byte **)(param_1 + 4)" * (cast_expression "(byte **)(param_1 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (expression_statement "uVar14 = (uint)*pbVar13;" (assignment_expression "uVar14 = (uint)*pbVar13" identifier = (binary_expression "(uint)*pbVar13" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) }) (else_clause "else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n    }" else (compound_statement "{\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n    }" { (expression_statement "uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);" (assignment_expression "uVar14 = (*(code *)PTR___uflow_0003928c)(param_1)" identifier = (call_expression "(*(code *)PTR___uflow_0003928c)(param_1)" (parenthesized_expression "(*(code *)PTR___uflow_0003928c)" ( (pointer_expression "*(code *)PTR___uflow_0003928c" * (cast_expression "(code *)PTR___uflow_0003928c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) ;) }))) (goto_statement "goto LAB_0001e45c;" goto statement_identifier ;) })) (expression_statement "pbVar9[iVar17] = 0;" (assignment_expression "pbVar9[iVar17] = 0" (subscript_expression "pbVar9[iVar17]" identifier [ identifier ]) = number_literal) ;) (labeled_statement "LAB_0001e4b0:\n  param_4[1] = iVar17;" statement_identifier : (expression_statement "param_4[1] = iVar17;" (assignment_expression "param_4[1] = iVar17" (subscript_expression "param_4[1]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "*param_4 = pbVar16;" (assignment_expression "*param_4 = pbVar16" (pointer_expression "*param_4" * identifier) = identifier) ;) (labeled_statement "LAB_0001e4b8:\n  if (local_4c[8] == *(int *)puVar3) {\n    return pbVar9;\n  }" statement_identifier : (if_statement "if (local_4c[8] == *(int *)puVar3) {\n    return pbVar9;\n  }" if (parenthesized_expression "(local_4c[8] == *(int *)puVar3)" ( (binary_expression "local_4c[8] == *(int *)puVar3" (subscript_expression "local_4c[8]" identifier [ number_literal ]) == (pointer_expression "*(int *)puVar3" * (cast_expression "(int *)puVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return pbVar9;\n  }" { (return_statement "return pbVar9;" return identifier ;) }))) (expression_statement "uVar4 = local_4c[8];" (assignment_expression "uVar4 = local_4c[8]" identifier = (subscript_expression "local_4c[8]" identifier [ number_literal ])) ;) (expression_statement "puVar18 = PTR___stack_chk_fail_00039350;" (assignment_expression "puVar18 = PTR___stack_chk_fail_00039350" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00039350)();" (call_expression "(*(code *)PTR___stack_chk_fail_00039350)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00039350)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00039350" * (cast_expression "(code *)PTR___stack_chk_fail_00039350" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar5 = *(int **)(puVar18 + 0x1adfc);" (assignment_expression "piVar5 = *(int **)(puVar18 + 0x1adfc)" identifier = (pointer_expression "*(int **)(puVar18 + 0x1adfc)" * (cast_expression "(int **)(puVar18 + 0x1adfc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x1adfc)" ( (binary_expression "puVar18 + 0x1adfc" identifier + number_literal) ))))) ;) (expression_statement "local_88 = puVar3;" (assignment_expression "local_88 = puVar3" identifier = identifier) ;) (expression_statement "local_8c = 0x55555554;" (assignment_expression "local_8c = 0x55555554" identifier = number_literal) ;) (expression_statement "local_94 = *piVar5;" (assignment_expression "local_94 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "pbVar13 = (byte *)0x40;" (assignment_expression "pbVar13 = (byte *)0x40" identifier = (cast_expression "(byte *)0x40" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_90 = param_4;" (assignment_expression "local_90 = param_4" identifier = identifier) ;) (expression_statement "local_84 = uVar14;" (assignment_expression "local_84 = uVar14" identifier = identifier) ;) (expression_statement "local_80 = pbVar9;" (assignment_expression "local_80 = pbVar9" identifier = identifier) ;) (expression_statement "local_7c = param_1;" (assignment_expression "local_7c = param_1" identifier = identifier) ;) (expression_statement "local_78 = pbVar16;" (assignment_expression "local_78 = pbVar16" identifier = identifier) ;) (expression_statement "local_74 = iVar17;" (assignment_expression "local_74 = iVar17" identifier = identifier) ;) (if_statement "if (param_2 == (byte *)0x0) {\n    iVar17 = 0x100;\n  }\n  else {\n    pbVar13 = param_2 + 1;\n    iVar17 = (int)pbVar13 * 4;\n    if ((iVar17 < 0) || ((uint)pbVar13 >> 0x1e != 0)) {\nLAB_0001e7f0:\n                    \n      xalloc_die();\n    }\n  }" if (parenthesized_expression "(param_2 == (byte *)0x0)" ( (binary_expression "param_2 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar17 = 0x100;\n  }" { (expression_statement "iVar17 = 0x100;" (assignment_expression "iVar17 = 0x100" identifier = number_literal) ;) }) (else_clause "else {\n    pbVar13 = param_2 + 1;\n    iVar17 = (int)pbVar13 * 4;\n    if ((iVar17 < 0) || ((uint)pbVar13 >> 0x1e != 0)) {\nLAB_0001e7f0:\n                    \n      xalloc_die();\n    }\n  }" else (compound_statement "{\n    pbVar13 = param_2 + 1;\n    iVar17 = (int)pbVar13 * 4;\n    if ((iVar17 < 0) || ((uint)pbVar13 >> 0x1e != 0)) {\nLAB_0001e7f0:\n                    \n      xalloc_die();\n    }\n  }" { (expression_statement "pbVar13 = param_2 + 1;" (assignment_expression "pbVar13 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "iVar17 = (int)pbVar13 * 4;" (assignment_expression "iVar17 = (int)pbVar13 * 4" identifier = (binary_expression "(int)pbVar13 * 4" (cast_expression "(int)pbVar13" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (if_statement "if ((iVar17 < 0) || ((uint)pbVar13 >> 0x1e != 0)) {\nLAB_0001e7f0:\n                    \n      xalloc_die();\n    }" if (parenthesized_expression "((iVar17 < 0) || ((uint)pbVar13 >> 0x1e != 0))" ( (binary_expression "(iVar17 < 0) || ((uint)pbVar13 >> 0x1e != 0)" (parenthesized_expression "(iVar17 < 0)" ( (binary_expression "iVar17 < 0" identifier < number_literal) )) || (parenthesized_expression "((uint)pbVar13 >> 0x1e != 0)" ( (binary_expression "(uint)pbVar13 >> 0x1e != 0" (binary_expression "(uint)pbVar13 >> 0x1e" (cast_expression "(uint)pbVar13" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) != number_literal) ))) )) (compound_statement "{\nLAB_0001e7f0:\n                    \n      xalloc_die();\n    }" { (labeled_statement "LAB_0001e7f0:\n                    \n      xalloc_die();" statement_identifier : (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;)) })) }))) (expression_statement "iVar6 = xmalloc(iVar17);" (assignment_expression "iVar6 = xmalloc(iVar17)" identifier = (call_expression "xmalloc(iVar17)" identifier (argument_list "(iVar17)" ( identifier )))) ;) (expression_statement "pbVar9 = (byte *)0x0;" (assignment_expression "pbVar9 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar17 = xmalloc(iVar17);" (assignment_expression "iVar17 = xmalloc(iVar17)" identifier = (call_expression "xmalloc(iVar17)" identifier (argument_list "(iVar17)" ( identifier )))) ;) (expression_statement "init_tokenbuffer(auStack_9c);" (call_expression "init_tokenbuffer(auStack_9c)" identifier (argument_list "(auStack_9c)" ( identifier ))) ;) (do_statement "do {\n    pbVar16 = param_3;\n    puVar12 = puVar11;\n    iVar8 = readtoken(uVar4,param_3,puVar11,auStack_9c);\n    if (pbVar13 <= pbVar9) {\n      if (iVar6 == 0) {\n        pbVar16 = (byte *)0x40;\n        if (pbVar13 == (byte *)0x0) {\n          pbVar13 = (byte *)0x10;\n        }\n        else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;\n        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;\n        pbVar16 = (byte *)((int)pbVar13 * 4);\n      }\n      iVar6 = xrealloc(iVar6,pbVar16);\n      iVar17 = xrealloc(iVar17,pbVar16);\n    }\n    if (iVar8 == -1) {\n      pcVar19 = *(code **)(puVar18 + 0x1ae08);\n      *(undefined4 *)(iVar6 + (int)pbVar9 * 4) = 0;\n      *(undefined4 *)(iVar17 + (int)pbVar9 * 4) = 0;\n      (*pcVar19)(local_98);\n      __gp_1 = iVar6;\n      if (local_54 == (int *)0x0) {\n        (**(code **)(puVar18 + 0x1ae08))(iVar17);\n      }\n      else {\n        *local_54 = iVar17;\n      }\n      if (local_94 != *piVar5) {\n        pcVar19 = *(code **)(puVar18 + 0x1ade4);\n        iVar17 = local_94;\n        (*pcVar19)();\n        do {\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        } while( true );\n      }\n      return pbVar9;\n    }\n    iVar10 = iVar8 + 1;\n    if (iVar10 < 0) goto LAB_0001e7f0;\n    iVar15 = (int)pbVar9 * 4;\n    pbVar9 = pbVar9 + 1;\n    uVar7 = xmalloc(iVar10);\n    *(int *)(iVar17 + iVar15) = iVar8;\n    uVar7 = (**(code **)(puVar18 + 0x1ae00))(uVar7,local_98,iVar10);\n    *(undefined4 *)(iVar6 + iVar15) = uVar7;\n  } while( true );" do (compound_statement "{\n    pbVar16 = param_3;\n    puVar12 = puVar11;\n    iVar8 = readtoken(uVar4,param_3,puVar11,auStack_9c);\n    if (pbVar13 <= pbVar9) {\n      if (iVar6 == 0) {\n        pbVar16 = (byte *)0x40;\n        if (pbVar13 == (byte *)0x0) {\n          pbVar13 = (byte *)0x10;\n        }\n        else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;\n        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;\n        pbVar16 = (byte *)((int)pbVar13 * 4);\n      }\n      iVar6 = xrealloc(iVar6,pbVar16);\n      iVar17 = xrealloc(iVar17,pbVar16);\n    }\n    if (iVar8 == -1) {\n      pcVar19 = *(code **)(puVar18 + 0x1ae08);\n      *(undefined4 *)(iVar6 + (int)pbVar9 * 4) = 0;\n      *(undefined4 *)(iVar17 + (int)pbVar9 * 4) = 0;\n      (*pcVar19)(local_98);\n      __gp_1 = iVar6;\n      if (local_54 == (int *)0x0) {\n        (**(code **)(puVar18 + 0x1ae08))(iVar17);\n      }\n      else {\n        *local_54 = iVar17;\n      }\n      if (local_94 != *piVar5) {\n        pcVar19 = *(code **)(puVar18 + 0x1ade4);\n        iVar17 = local_94;\n        (*pcVar19)();\n        do {\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        } while( true );\n      }\n      return pbVar9;\n    }\n    iVar10 = iVar8 + 1;\n    if (iVar10 < 0) goto LAB_0001e7f0;\n    iVar15 = (int)pbVar9 * 4;\n    pbVar9 = pbVar9 + 1;\n    uVar7 = xmalloc(iVar10);\n    *(int *)(iVar17 + iVar15) = iVar8;\n    uVar7 = (**(code **)(puVar18 + 0x1ae00))(uVar7,local_98,iVar10);\n    *(undefined4 *)(iVar6 + iVar15) = uVar7;\n  }" { (expression_statement "pbVar16 = param_3;" (assignment_expression "pbVar16 = param_3" identifier = identifier) ;) (expression_statement "puVar12 = puVar11;" (assignment_expression "puVar12 = puVar11" identifier = identifier) ;) (expression_statement "iVar8 = readtoken(uVar4,param_3,puVar11,auStack_9c);" (assignment_expression "iVar8 = readtoken(uVar4,param_3,puVar11,auStack_9c)" identifier = (call_expression "readtoken(uVar4,param_3,puVar11,auStack_9c)" identifier (argument_list "(uVar4,param_3,puVar11,auStack_9c)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (pbVar13 <= pbVar9) {\n      if (iVar6 == 0) {\n        pbVar16 = (byte *)0x40;\n        if (pbVar13 == (byte *)0x0) {\n          pbVar13 = (byte *)0x10;\n        }\n        else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;\n        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;\n        pbVar16 = (byte *)((int)pbVar13 * 4);\n      }\n      iVar6 = xrealloc(iVar6,pbVar16);\n      iVar17 = xrealloc(iVar17,pbVar16);\n    }" if (parenthesized_expression "(pbVar13 <= pbVar9)" ( (binary_expression "pbVar13 <= pbVar9" identifier <= identifier) )) (compound_statement "{\n      if (iVar6 == 0) {\n        pbVar16 = (byte *)0x40;\n        if (pbVar13 == (byte *)0x0) {\n          pbVar13 = (byte *)0x10;\n        }\n        else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;\n        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;\n        pbVar16 = (byte *)((int)pbVar13 * 4);\n      }\n      iVar6 = xrealloc(iVar6,pbVar16);\n      iVar17 = xrealloc(iVar17,pbVar16);\n    }" { (if_statement "if (iVar6 == 0) {\n        pbVar16 = (byte *)0x40;\n        if (pbVar13 == (byte *)0x0) {\n          pbVar13 = (byte *)0x10;\n        }\n        else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;\n        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;\n        pbVar16 = (byte *)((int)pbVar13 * 4);\n      }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n        pbVar16 = (byte *)0x40;\n        if (pbVar13 == (byte *)0x0) {\n          pbVar13 = (byte *)0x10;\n        }\n        else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }" { (expression_statement "pbVar16 = (byte *)0x40;" (assignment_expression "pbVar16 = (byte *)0x40" identifier = (cast_expression "(byte *)0x40" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (pbVar13 == (byte *)0x0) {\n          pbVar13 = (byte *)0x10;\n        }\n        else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }" if (parenthesized_expression "(pbVar13 == (byte *)0x0)" ( (binary_expression "pbVar13 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pbVar13 = (byte *)0x10;\n        }" { (expression_statement "pbVar13 = (byte *)0x10;" (assignment_expression "pbVar13 = (byte *)0x10" identifier = (cast_expression "(byte *)0x10" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }" else (compound_statement "{\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }" { (expression_statement "pbVar16 = (byte *)((int)pbVar13 << 2);" (assignment_expression "pbVar16 = (byte *)((int)pbVar13 << 2)" identifier = (cast_expression "(byte *)((int)pbVar13 << 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pbVar13 << 2)" ( (binary_expression "(int)pbVar13 << 2" (cast_expression "(int)pbVar13" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) )))) ;) (if_statement "if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;" if (parenthesized_expression "(((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0))" ( (binary_expression "((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)" (parenthesized_expression "((int)pbVar16 < 0)" ( (binary_expression "(int)pbVar16 < 0" (cast_expression "(int)pbVar16" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) || (parenthesized_expression "((uint)pbVar13 >> 0x1e != 0)" ( (binary_expression "(uint)pbVar13 >> 0x1e != 0" (binary_expression "(uint)pbVar13 >> 0x1e" (cast_expression "(uint)pbVar13" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) != number_literal) ))) )) (goto_statement "goto LAB_0001e7f0;" goto statement_identifier ;)) }))) }) (else_clause "else {\n        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;\n        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;\n        pbVar16 = (byte *)((int)pbVar13 * 4);\n      }" else (compound_statement "{\n        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;\n        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;\n        pbVar16 = (byte *)((int)pbVar13 * 4);\n      }" { (if_statement "if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;" if (parenthesized_expression "((byte *)0x15555554 < pbVar13)" ( (binary_expression "(byte *)0x15555554 < pbVar13" (cast_expression "(byte *)0x15555554" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < identifier) )) (goto_statement "goto LAB_0001e7f0;" goto statement_identifier ;)) (expression_statement "pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;" (assignment_expression "pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1" identifier = (binary_expression "pbVar13 + ((uint)pbVar13 >> 1) + 1" (binary_expression "pbVar13 + ((uint)pbVar13 >> 1)" identifier + (parenthesized_expression "((uint)pbVar13 >> 1)" ( (binary_expression "(uint)pbVar13 >> 1" (cast_expression "(uint)pbVar13" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) + number_literal)) ;) (expression_statement "pbVar16 = (byte *)((int)pbVar13 * 4);" (assignment_expression "pbVar16 = (byte *)((int)pbVar13 * 4)" identifier = (cast_expression "(byte *)((int)pbVar13 * 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pbVar13 * 4)" ( (binary_expression "(int)pbVar13 * 4" (cast_expression "(int)pbVar13" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) }))) (expression_statement "iVar6 = xrealloc(iVar6,pbVar16);" (assignment_expression "iVar6 = xrealloc(iVar6,pbVar16)" identifier = (call_expression "xrealloc(iVar6,pbVar16)" identifier (argument_list "(iVar6,pbVar16)" ( identifier , identifier )))) ;) (expression_statement "iVar17 = xrealloc(iVar17,pbVar16);" (assignment_expression "iVar17 = xrealloc(iVar17,pbVar16)" identifier = (call_expression "xrealloc(iVar17,pbVar16)" identifier (argument_list "(iVar17,pbVar16)" ( identifier , identifier )))) ;) })) (if_statement "if (iVar8 == -1) {\n      pcVar19 = *(code **)(puVar18 + 0x1ae08);\n      *(undefined4 *)(iVar6 + (int)pbVar9 * 4) = 0;\n      *(undefined4 *)(iVar17 + (int)pbVar9 * 4) = 0;\n      (*pcVar19)(local_98);\n      __gp_1 = iVar6;\n      if (local_54 == (int *)0x0) {\n        (**(code **)(puVar18 + 0x1ae08))(iVar17);\n      }\n      else {\n        *local_54 = iVar17;\n      }\n      if (local_94 != *piVar5) {\n        pcVar19 = *(code **)(puVar18 + 0x1ade4);\n        iVar17 = local_94;\n        (*pcVar19)();\n        do {\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        } while( true );\n      }\n      return pbVar9;\n    }" if (parenthesized_expression "(iVar8 == -1)" ( (binary_expression "iVar8 == -1" identifier == number_literal) )) (compound_statement "{\n      pcVar19 = *(code **)(puVar18 + 0x1ae08);\n      *(undefined4 *)(iVar6 + (int)pbVar9 * 4) = 0;\n      *(undefined4 *)(iVar17 + (int)pbVar9 * 4) = 0;\n      (*pcVar19)(local_98);\n      __gp_1 = iVar6;\n      if (local_54 == (int *)0x0) {\n        (**(code **)(puVar18 + 0x1ae08))(iVar17);\n      }\n      else {\n        *local_54 = iVar17;\n      }\n      if (local_94 != *piVar5) {\n        pcVar19 = *(code **)(puVar18 + 0x1ade4);\n        iVar17 = local_94;\n        (*pcVar19)();\n        do {\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        } while( true );\n      }\n      return pbVar9;\n    }" { (expression_statement "pcVar19 = *(code **)(puVar18 + 0x1ae08);" (assignment_expression "pcVar19 = *(code **)(puVar18 + 0x1ae08)" identifier = (pointer_expression "*(code **)(puVar18 + 0x1ae08)" * (cast_expression "(code **)(puVar18 + 0x1ae08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x1ae08)" ( (binary_expression "puVar18 + 0x1ae08" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar6 + (int)pbVar9 * 4) = 0;" (assignment_expression "*(undefined4 *)(iVar6 + (int)pbVar9 * 4) = 0" (pointer_expression "*(undefined4 *)(iVar6 + (int)pbVar9 * 4)" * (cast_expression "(undefined4 *)(iVar6 + (int)pbVar9 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + (int)pbVar9 * 4)" ( (binary_expression "iVar6 + (int)pbVar9 * 4" identifier + (binary_expression "(int)pbVar9 * 4" (cast_expression "(int)pbVar9" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar17 + (int)pbVar9 * 4) = 0;" (assignment_expression "*(undefined4 *)(iVar17 + (int)pbVar9 * 4) = 0" (pointer_expression "*(undefined4 *)(iVar17 + (int)pbVar9 * 4)" * (cast_expression "(undefined4 *)(iVar17 + (int)pbVar9 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + (int)pbVar9 * 4)" ( (binary_expression "iVar17 + (int)pbVar9 * 4" identifier + (binary_expression "(int)pbVar9 * 4" (cast_expression "(int)pbVar9" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) = number_literal) ;) (expression_statement "(*pcVar19)(local_98);" (call_expression "(*pcVar19)(local_98)" (parenthesized_expression "(*pcVar19)" ( (pointer_expression "*pcVar19" * identifier) )) (argument_list "(local_98)" ( identifier ))) ;) (expression_statement "__gp_1 = iVar6;" (assignment_expression "__gp_1 = iVar6" identifier = identifier) ;) (if_statement "if (local_54 == (int *)0x0) {\n        (**(code **)(puVar18 + 0x1ae08))(iVar17);\n      }\n      else {\n        *local_54 = iVar17;\n      }" if (parenthesized_expression "(local_54 == (int *)0x0)" ( (binary_expression "local_54 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        (**(code **)(puVar18 + 0x1ae08))(iVar17);\n      }" { (expression_statement "(**(code **)(puVar18 + 0x1ae08))(iVar17);" (call_expression "(**(code **)(puVar18 + 0x1ae08))(iVar17)" (parenthesized_expression "(**(code **)(puVar18 + 0x1ae08))" ( (pointer_expression "**(code **)(puVar18 + 0x1ae08)" * (pointer_expression "*(code **)(puVar18 + 0x1ae08)" * (cast_expression "(code **)(puVar18 + 0x1ae08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x1ae08)" ( (binary_expression "puVar18 + 0x1ae08" identifier + number_literal) ))))) )) (argument_list "(iVar17)" ( identifier ))) ;) }) (else_clause "else {\n        *local_54 = iVar17;\n      }" else (compound_statement "{\n        *local_54 = iVar17;\n      }" { (expression_statement "*local_54 = iVar17;" (assignment_expression "*local_54 = iVar17" (pointer_expression "*local_54" * identifier) = identifier) ;) }))) (if_statement "if (local_94 != *piVar5) {\n        pcVar19 = *(code **)(puVar18 + 0x1ade4);\n        iVar17 = local_94;\n        (*pcVar19)();\n        do {\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        } while( true );\n      }" if (parenthesized_expression "(local_94 != *piVar5)" ( (binary_expression "local_94 != *piVar5" identifier != (pointer_expression "*piVar5" * identifier)) )) (compound_statement "{\n        pcVar19 = *(code **)(puVar18 + 0x1ade4);\n        iVar17 = local_94;\n        (*pcVar19)();\n        do {\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        } while( true );\n      }" { (expression_statement "pcVar19 = *(code **)(puVar18 + 0x1ade4);" (assignment_expression "pcVar19 = *(code **)(puVar18 + 0x1ade4)" identifier = (pointer_expression "*(code **)(puVar18 + 0x1ade4)" * (cast_expression "(code **)(puVar18 + 0x1ade4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x1ade4)" ( (binary_expression "puVar18 + 0x1ade4" identifier + number_literal) ))))) ;) (expression_statement "iVar17 = local_94;" (assignment_expression "iVar17 = local_94" identifier = identifier) ;) (expression_statement "(*pcVar19)();" (call_expression "(*pcVar19)()" (parenthesized_expression "(*pcVar19)" ( (pointer_expression "*pcVar19" * identifier) )) (argument_list "()" ( ))) ;) (do_statement "do {\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        } while( true );" do (compound_statement "{\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        }" { (expression_statement "pcVar20 = *(code **)(pcVar19 + 0x1aac0);" (assignment_expression "pcVar20 = *(code **)(pcVar19 + 0x1aac0)" identifier = (pointer_expression "*(code **)(pcVar19 + 0x1aac0)" * (cast_expression "(code **)(pcVar19 + 0x1aac0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x1aac0)" ( (binary_expression "pcVar19 + 0x1aac0" identifier + number_literal) ))))) ;) (while_statement "while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }" { (expression_statement "pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);" (assignment_expression "pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12)" identifier = (cast_expression "(byte *)(*pcVar20)(iVar17,pbVar16,puVar12)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar20)(iVar17,pbVar16,puVar12)" (parenthesized_expression "(*pcVar20)" ( (pointer_expression "*pcVar20" * identifier) )) (argument_list "(iVar17,pbVar16,puVar12)" ( identifier , identifier , identifier ))))) ;) (if_statement "if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }" if (parenthesized_expression "(-1 < (int)pbVar9)" ( (binary_expression "-1 < (int)pbVar9" number_literal < (cast_expression "(int)pbVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              return pbVar9;\n            }" { (return_statement "return pbVar9;" return identifier ;) })) (expression_statement "piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();" (assignment_expression "piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))()" identifier = (cast_expression "(int *)(**(code **)(pcVar19 + 0x1aaa4))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar19 + 0x1aaa4))()" (parenthesized_expression "(**(code **)(pcVar19 + 0x1aaa4))" ( (pointer_expression "**(code **)(pcVar19 + 0x1aaa4)" * (pointer_expression "*(code **)(pcVar19 + 0x1aaa4)" * (cast_expression "(code **)(pcVar19 + 0x1aaa4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x1aaa4)" ( (binary_expression "pcVar19 + 0x1aaa4" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "bVar2 = puVar12 < (undefined4 *)0x7ff00001;" (assignment_expression "bVar2 = puVar12 < (undefined4 *)0x7ff00001" identifier = (binary_expression "puVar12 < (undefined4 *)0x7ff00001" identifier < (cast_expression "(undefined4 *)0x7ff00001" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (*piVar5 == 4) break;" if (parenthesized_expression "(*piVar5 == 4)" ( (binary_expression "*piVar5 == 4" (pointer_expression "*piVar5" * identifier) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar12 = (undefined4 *)0x7ff00000;" (assignment_expression "puVar12 = (undefined4 *)0x7ff00000" identifier = (cast_expression "(undefined4 *)0x7ff00000" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }" if (parenthesized_expression "((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2))" ( (binary_expression "(*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)" (parenthesized_expression "(*piVar5 != 0x16)" ( (binary_expression "*piVar5 != 0x16" (pointer_expression "*piVar5" * identifier) != number_literal) )) || (parenthesized_expression "(pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)" ( (comma_expression "pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2" (assignment_expression "pcVar20 = *(code **)(pcVar19 + 0x1aac0)" identifier = (pointer_expression "*(code **)(pcVar19 + 0x1aac0)" * (cast_expression "(code **)(pcVar19 + 0x1aac0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x1aac0)" ( (binary_expression "pcVar19 + 0x1aac0" identifier + number_literal) ))))) , identifier) ))) )) (compound_statement "{\n              return pbVar9;\n            }" { (return_statement "return pbVar9;" return identifier ;) })) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (return_statement "return pbVar9;" return identifier ;) })) (expression_statement "iVar10 = iVar8 + 1;" (assignment_expression "iVar10 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (if_statement "if (iVar10 < 0) goto LAB_0001e7f0;" if (parenthesized_expression "(iVar10 < 0)" ( (binary_expression "iVar10 < 0" identifier < number_literal) )) (goto_statement "goto LAB_0001e7f0;" goto statement_identifier ;)) (expression_statement "iVar15 = (int)pbVar9 * 4;" (assignment_expression "iVar15 = (int)pbVar9 * 4" identifier = (binary_expression "(int)pbVar9 * 4" (cast_expression "(int)pbVar9" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (expression_statement "uVar7 = xmalloc(iVar10);" (assignment_expression "uVar7 = xmalloc(iVar10)" identifier = (call_expression "xmalloc(iVar10)" identifier (argument_list "(iVar10)" ( identifier )))) ;) (expression_statement "*(int *)(iVar17 + iVar15) = iVar8;" (assignment_expression "*(int *)(iVar17 + iVar15) = iVar8" (pointer_expression "*(int *)(iVar17 + iVar15)" * (cast_expression "(int *)(iVar17 + iVar15)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + iVar15)" ( (binary_expression "iVar17 + iVar15" identifier + identifier) )))) = identifier) ;) (expression_statement "uVar7 = (**(code **)(puVar18 + 0x1ae00))(uVar7,local_98,iVar10);" (assignment_expression "uVar7 = (**(code **)(puVar18 + 0x1ae00))(uVar7,local_98,iVar10)" identifier = (call_expression "(**(code **)(puVar18 + 0x1ae00))(uVar7,local_98,iVar10)" (parenthesized_expression "(**(code **)(puVar18 + 0x1ae00))" ( (pointer_expression "**(code **)(puVar18 + 0x1ae00)" * (pointer_expression "*(code **)(puVar18 + 0x1ae00)" * (cast_expression "(code **)(puVar18 + 0x1ae00)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x1ae00)" ( (binary_expression "puVar18 + 0x1ae00" identifier + number_literal) ))))) )) (argument_list "(uVar7,local_98,iVar10)" ( identifier , identifier , identifier )))) ;) (expression_statement "*(undefined4 *)(iVar6 + iVar15) = uVar7;" (assignment_expression "*(undefined4 *)(iVar6 + iVar15) = uVar7" (pointer_expression "*(undefined4 *)(iVar6 + iVar15)" * (cast_expression "(undefined4 *)(iVar6 + iVar15)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + iVar15)" ( (binary_expression "iVar6 + iVar15" identifier + identifier) )))) = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE 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 IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_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 (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 (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT >> LIT) ]) = (binary_expression (subscript_expression IDENT [ (binary_expression IDENT >> LIT) ]) | (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * IDENT) >> LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) }))) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ IDENT ]) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) != LIT) )) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = LIT) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;)))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) + LIT)) ;) })))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ (binary_expression IDENT >> LIT) ]) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) }))) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) || (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) != LIT) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) })) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) || (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) != LIT) ))) )) (goto_statement goto statement_identifier ;)) }))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) )))) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , IDENT) ))) )) (compound_statement { (return_statement return IDENT ;) })) })) }) while (parenthesized_expression ( BOOL )) ;) })) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = 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 IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = IDENT) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "byte * readtoken(int param_1,byte *param_2,byte *param_3,undefined4 *param_4)\n\n{\n  byte bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  uint uVar4;\n  int *piVar5;\n  int iVar6;\n  undefined4 uVar7;\n  int iVar8;\n  byte *pbVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  byte *pbVar13;\n  uint uVar14;\n  int iVar15;\n  byte *pbVar16;\n  int iVar17;\n  undefined *puVar18;\n  code *pcVar19;\n  code *pcVar20;\n  undefined1 auStack_9c [4];\n  undefined4 local_98;\n  int local_94;\n  undefined4 *local_90;\n  undefined4 local_8c;\n  undefined *local_88;\n  uint local_84;\n  byte *local_80;\n  int local_7c;\n  byte *local_78;\n  int local_74;\n  int *local_54;\n  uint local_4c [10];\n  \n  puVar3 = PTR___stack_chk_guard_00039368;\n  local_4c[0] = 0;\n  local_4c[1] = 0;\n  local_4c[2] = 0;\n  local_4c[3] = 0;\n  local_4c[4] = 0;\n  local_4c[5] = 0;\n  local_4c[6] = 0;\n  local_4c[7] = 0;\n  local_4c[8] = *(int *)PTR___stack_chk_guard_00039368;\n  puVar11 = param_4;\n  if (param_3 != (byte *)0x0) {\n    param_3 = param_2 + (int)param_3;\n    puVar11 = (undefined4 *)0x1;\n    do {\n      bVar1 = *param_2;\n      param_2 = param_2 + 1;\n      local_4c[bVar1 >> 5] = local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f);\n    } while (param_3 != param_2);\n  }\n  do {\n    pbVar9 = *(byte **)(param_1 + 4);\n    if (pbVar9 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar9 + 1;\n      uVar14 = (uint)*pbVar9;\n      uVar4 = (uint)(*pbVar9 >> 5);\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n      if ((int)uVar14 < 0) break;\n      uVar4 = uVar14 >> 5;\n    }\n  } while ((local_4c[uVar4] >> (uVar14 & 0x1f) & 1) != 0);\n  iVar17 = param_4[1];\n  pbVar16 = (byte *)*param_4;\n  pbVar9 = (byte *)0x0;\nLAB_0001e45c:\n  if ((int)uVar14 < 0) {\n    if (pbVar9 != (byte *)0x0) {\n      if (pbVar9 == pbVar16) goto LAB_0001e474;\nLAB_0001e4ac:\n      pbVar9[iVar17] = 0;\n      goto LAB_0001e4b0;\n    }\n    pbVar9 = (byte *)0xffffffff;\n    goto LAB_0001e4b8;\n  }\n  if (pbVar9 == pbVar16) {\nLAB_0001e474:\n    if (iVar17 == 0) {\n      if (pbVar16 == (byte *)0x0) {\n        pbVar16 = (byte *)0x40;\n      }\n      else if ((int)pbVar16 < 0) goto LAB_0001e544;\n    }\n    else {\n      if ((byte *)0x55555553 < pbVar16) {\nLAB_0001e544:\n                    \n        xalloc_die();\n      }\n      pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;\n    }\n    param_2 = pbVar16;\n    iVar17 = xrealloc(iVar17);\n    if ((int)uVar14 < 0) goto LAB_0001e4ac;\n  }\n  if ((local_4c[uVar14 >> 5] >> (uVar14 & 0x1f) & 1) == 0) {\n    pbVar9[iVar17] = (byte)uVar14;\n    pbVar13 = *(byte **)(param_1 + 4);\n    pbVar9 = pbVar9 + 1;\n    if (pbVar13 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar13 + 1;\n      uVar14 = (uint)*pbVar13;\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n    }\n    goto LAB_0001e45c;\n  }\n  pbVar9[iVar17] = 0;\nLAB_0001e4b0:\n  param_4[1] = iVar17;\n  *param_4 = pbVar16;\nLAB_0001e4b8:\n  if (local_4c[8] == *(int *)puVar3) {\n    return pbVar9;\n  }\n  uVar4 = local_4c[8];\n  puVar18 = PTR___stack_chk_fail_00039350;\n  (*(code *)PTR___stack_chk_fail_00039350)();\n  piVar5 = *(int **)(puVar18 + 0x1adfc);\n  local_88 = puVar3;\n  local_8c = 0x55555554;\n  local_94 = *piVar5;\n  pbVar13 = (byte *)0x40;\n  local_90 = param_4;\n  local_84 = uVar14;\n  local_80 = pbVar9;\n  local_7c = param_1;\n  local_78 = pbVar16;\n  local_74 = iVar17;\n  if (param_2 == (byte *)0x0) {\n    iVar17 = 0x100;\n  }\n  else {\n    pbVar13 = param_2 + 1;\n    iVar17 = (int)pbVar13 * 4;\n    if ((iVar17 < 0) || ((uint)pbVar13 >> 0x1e != 0)) {\nLAB_0001e7f0:\n                    \n      xalloc_die();\n    }\n  }\n  iVar6 = xmalloc(iVar17);\n  pbVar9 = (byte *)0x0;\n  iVar17 = xmalloc(iVar17);\n  init_tokenbuffer(auStack_9c);\n  do {\n    pbVar16 = param_3;\n    puVar12 = puVar11;\n    iVar8 = readtoken(uVar4,param_3,puVar11,auStack_9c);\n    if (pbVar13 <= pbVar9) {\n      if (iVar6 == 0) {\n        pbVar16 = (byte *)0x40;\n        if (pbVar13 == (byte *)0x0) {\n          pbVar13 = (byte *)0x10;\n        }\n        else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;\n        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;\n        pbVar16 = (byte *)((int)pbVar13 * 4);\n      }\n      iVar6 = xrealloc(iVar6,pbVar16);\n      iVar17 = xrealloc(iVar17,pbVar16);\n    }\n    if (iVar8 == -1) {\n      pcVar19 = *(code **)(puVar18 + 0x1ae08);\n      *(undefined4 *)(iVar6 + (int)pbVar9 * 4) = 0;\n      *(undefined4 *)(iVar17 + (int)pbVar9 * 4) = 0;\n      (*pcVar19)(local_98);\n      __gp_1 = iVar6;\n      if (local_54 == (int *)0x0) {\n        (**(code **)(puVar18 + 0x1ae08))(iVar17);\n      }\n      else {\n        *local_54 = iVar17;\n      }\n      if (local_94 != *piVar5) {\n        pcVar19 = *(code **)(puVar18 + 0x1ade4);\n        iVar17 = local_94;\n        (*pcVar19)();\n        do {\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        } while( true );\n      }\n      return pbVar9;\n    }\n    iVar10 = iVar8 + 1;\n    if (iVar10 < 0) goto LAB_0001e7f0;\n    iVar15 = (int)pbVar9 * 4;\n    pbVar9 = pbVar9 + 1;\n    uVar7 = xmalloc(iVar10);\n    *(int *)(iVar17 + iVar15) = iVar8;\n    uVar7 = (**(code **)(puVar18 + 0x1ae00))(uVar7,local_98,iVar10);\n    *(undefined4 *)(iVar6 + iVar15) = uVar7;\n  } while( true );\n}" (type_identifier "byte") (pointer_declarator "* readtoken(int param_1,byte *param_2,byte *param_3,undefined4 *param_4)" (* "*") (function_declarator "readtoken(int param_1,byte *param_2,byte *param_3,undefined4 *param_4)" (identifier "readtoken") (parameter_list "(int param_1,byte *param_2,byte *param_3,undefined4 *param_4)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "byte *param_2" (type_identifier "byte") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "byte *param_3" (type_identifier "byte") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "undefined4 *param_4" (type_identifier "undefined4") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")")))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  uint uVar4;\n  int *piVar5;\n  int iVar6;\n  undefined4 uVar7;\n  int iVar8;\n  byte *pbVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  byte *pbVar13;\n  uint uVar14;\n  int iVar15;\n  byte *pbVar16;\n  int iVar17;\n  undefined *puVar18;\n  code *pcVar19;\n  code *pcVar20;\n  undefined1 auStack_9c [4];\n  undefined4 local_98;\n  int local_94;\n  undefined4 *local_90;\n  undefined4 local_8c;\n  undefined *local_88;\n  uint local_84;\n  byte *local_80;\n  int local_7c;\n  byte *local_78;\n  int local_74;\n  int *local_54;\n  uint local_4c [10];\n  \n  puVar3 = PTR___stack_chk_guard_00039368;\n  local_4c[0] = 0;\n  local_4c[1] = 0;\n  local_4c[2] = 0;\n  local_4c[3] = 0;\n  local_4c[4] = 0;\n  local_4c[5] = 0;\n  local_4c[6] = 0;\n  local_4c[7] = 0;\n  local_4c[8] = *(int *)PTR___stack_chk_guard_00039368;\n  puVar11 = param_4;\n  if (param_3 != (byte *)0x0) {\n    param_3 = param_2 + (int)param_3;\n    puVar11 = (undefined4 *)0x1;\n    do {\n      bVar1 = *param_2;\n      param_2 = param_2 + 1;\n      local_4c[bVar1 >> 5] = local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f);\n    } while (param_3 != param_2);\n  }\n  do {\n    pbVar9 = *(byte **)(param_1 + 4);\n    if (pbVar9 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar9 + 1;\n      uVar14 = (uint)*pbVar9;\n      uVar4 = (uint)(*pbVar9 >> 5);\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n      if ((int)uVar14 < 0) break;\n      uVar4 = uVar14 >> 5;\n    }\n  } while ((local_4c[uVar4] >> (uVar14 & 0x1f) & 1) != 0);\n  iVar17 = param_4[1];\n  pbVar16 = (byte *)*param_4;\n  pbVar9 = (byte *)0x0;\nLAB_0001e45c:\n  if ((int)uVar14 < 0) {\n    if (pbVar9 != (byte *)0x0) {\n      if (pbVar9 == pbVar16) goto LAB_0001e474;\nLAB_0001e4ac:\n      pbVar9[iVar17] = 0;\n      goto LAB_0001e4b0;\n    }\n    pbVar9 = (byte *)0xffffffff;\n    goto LAB_0001e4b8;\n  }\n  if (pbVar9 == pbVar16) {\nLAB_0001e474:\n    if (iVar17 == 0) {\n      if (pbVar16 == (byte *)0x0) {\n        pbVar16 = (byte *)0x40;\n      }\n      else if ((int)pbVar16 < 0) goto LAB_0001e544;\n    }\n    else {\n      if ((byte *)0x55555553 < pbVar16) {\nLAB_0001e544:\n                    \n        xalloc_die();\n      }\n      pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;\n    }\n    param_2 = pbVar16;\n    iVar17 = xrealloc(iVar17);\n    if ((int)uVar14 < 0) goto LAB_0001e4ac;\n  }\n  if ((local_4c[uVar14 >> 5] >> (uVar14 & 0x1f) & 1) == 0) {\n    pbVar9[iVar17] = (byte)uVar14;\n    pbVar13 = *(byte **)(param_1 + 4);\n    pbVar9 = pbVar9 + 1;\n    if (pbVar13 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar13 + 1;\n      uVar14 = (uint)*pbVar13;\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n    }\n    goto LAB_0001e45c;\n  }\n  pbVar9[iVar17] = 0;\nLAB_0001e4b0:\n  param_4[1] = iVar17;\n  *param_4 = pbVar16;\nLAB_0001e4b8:\n  if (local_4c[8] == *(int *)puVar3) {\n    return pbVar9;\n  }\n  uVar4 = local_4c[8];\n  puVar18 = PTR___stack_chk_fail_00039350;\n  (*(code *)PTR___stack_chk_fail_00039350)();\n  piVar5 = *(int **)(puVar18 + 0x1adfc);\n  local_88 = puVar3;\n  local_8c = 0x55555554;\n  local_94 = *piVar5;\n  pbVar13 = (byte *)0x40;\n  local_90 = param_4;\n  local_84 = uVar14;\n  local_80 = pbVar9;\n  local_7c = param_1;\n  local_78 = pbVar16;\n  local_74 = iVar17;\n  if (param_2 == (byte *)0x0) {\n    iVar17 = 0x100;\n  }\n  else {\n    pbVar13 = param_2 + 1;\n    iVar17 = (int)pbVar13 * 4;\n    if ((iVar17 < 0) || ((uint)pbVar13 >> 0x1e != 0)) {\nLAB_0001e7f0:\n                    \n      xalloc_die();\n    }\n  }\n  iVar6 = xmalloc(iVar17);\n  pbVar9 = (byte *)0x0;\n  iVar17 = xmalloc(iVar17);\n  init_tokenbuffer(auStack_9c);\n  do {\n    pbVar16 = param_3;\n    puVar12 = puVar11;\n    iVar8 = readtoken(uVar4,param_3,puVar11,auStack_9c);\n    if (pbVar13 <= pbVar9) {\n      if (iVar6 == 0) {\n        pbVar16 = (byte *)0x40;\n        if (pbVar13 == (byte *)0x0) {\n          pbVar13 = (byte *)0x10;\n        }\n        else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;\n        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;\n        pbVar16 = (byte *)((int)pbVar13 * 4);\n      }\n      iVar6 = xrealloc(iVar6,pbVar16);\n      iVar17 = xrealloc(iVar17,pbVar16);\n    }\n    if (iVar8 == -1) {\n      pcVar19 = *(code **)(puVar18 + 0x1ae08);\n      *(undefined4 *)(iVar6 + (int)pbVar9 * 4) = 0;\n      *(undefined4 *)(iVar17 + (int)pbVar9 * 4) = 0;\n      (*pcVar19)(local_98);\n      __gp_1 = iVar6;\n      if (local_54 == (int *)0x0) {\n        (**(code **)(puVar18 + 0x1ae08))(iVar17);\n      }\n      else {\n        *local_54 = iVar17;\n      }\n      if (local_94 != *piVar5) {\n        pcVar19 = *(code **)(puVar18 + 0x1ade4);\n        iVar17 = local_94;\n        (*pcVar19)();\n        do {\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        } while( true );\n      }\n      return pbVar9;\n    }\n    iVar10 = iVar8 + 1;\n    if (iVar10 < 0) goto LAB_0001e7f0;\n    iVar15 = (int)pbVar9 * 4;\n    pbVar9 = pbVar9 + 1;\n    uVar7 = xmalloc(iVar10);\n    *(int *)(iVar17 + iVar15) = iVar8;\n    uVar7 = (**(code **)(puVar18 + 0x1ae00))(uVar7,local_98,iVar10);\n    *(undefined4 *)(iVar6 + iVar15) = uVar7;\n  } while( true );\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "byte *pbVar9;" (type_identifier "byte") (pointer_declarator "*pbVar9" (* "*") (identifier "pbVar9")) (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "undefined4 *puVar11;" (type_identifier "undefined4") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "undefined4 *puVar12;" (type_identifier "undefined4") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "byte *pbVar13;" (type_identifier "byte") (pointer_declarator "*pbVar13" (* "*") (identifier "pbVar13")) (; ";")) (declaration "uint uVar14;" (type_identifier "uint") (identifier "uVar14") (; ";")) (declaration "int iVar15;" (primitive_type "int") (identifier "iVar15") (; ";")) (declaration "byte *pbVar16;" (type_identifier "byte") (pointer_declarator "*pbVar16" (* "*") (identifier "pbVar16")) (; ";")) (declaration "int iVar17;" (primitive_type "int") (identifier "iVar17") (; ";")) (declaration "undefined *puVar18;" (type_identifier "undefined") (pointer_declarator "*puVar18" (* "*") (identifier "puVar18")) (; ";")) (declaration "code *pcVar19;" (type_identifier "code") (pointer_declarator "*pcVar19" (* "*") (identifier "pcVar19")) (; ";")) (declaration "code *pcVar20;" (type_identifier "code") (pointer_declarator "*pcVar20" (* "*") (identifier "pcVar20")) (; ";")) (declaration "undefined1 auStack_9c [4];" (type_identifier "undefined1") (array_declarator "auStack_9c [4]" (identifier "auStack_9c") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "undefined4 local_98;" (type_identifier "undefined4") (identifier "local_98") (; ";")) (declaration "int local_94;" (primitive_type "int") (identifier "local_94") (; ";")) (declaration "undefined4 *local_90;" (type_identifier "undefined4") (pointer_declarator "*local_90" (* "*") (identifier "local_90")) (; ";")) (declaration "undefined4 local_8c;" (type_identifier "undefined4") (identifier "local_8c") (; ";")) (declaration "undefined *local_88;" (type_identifier "undefined") (pointer_declarator "*local_88" (* "*") (identifier "local_88")) (; ";")) (declaration "uint local_84;" (type_identifier "uint") (identifier "local_84") (; ";")) (declaration "byte *local_80;" (type_identifier "byte") (pointer_declarator "*local_80" (* "*") (identifier "local_80")) (; ";")) (declaration "int local_7c;" (primitive_type "int") (identifier "local_7c") (; ";")) (declaration "byte *local_78;" (type_identifier "byte") (pointer_declarator "*local_78" (* "*") (identifier "local_78")) (; ";")) (declaration "int local_74;" (primitive_type "int") (identifier "local_74") (; ";")) (declaration "int *local_54;" (primitive_type "int") (pointer_declarator "*local_54" (* "*") (identifier "local_54")) (; ";")) (declaration "uint local_4c [10];" (type_identifier "uint") (array_declarator "local_4c [10]" (identifier "local_4c") ([ "[") (number_literal "10") (] "]")) (; ";")) (expression_statement "puVar3 = PTR___stack_chk_guard_00039368;" (assignment_expression "puVar3 = PTR___stack_chk_guard_00039368" (identifier "puVar3") (= "=") (identifier "PTR___stack_chk_guard_00039368")) (; ";")) (expression_statement "local_4c[0] = 0;" (assignment_expression "local_4c[0] = 0" (subscript_expression "local_4c[0]" (identifier "local_4c") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_4c[1] = 0;" (assignment_expression "local_4c[1] = 0" (subscript_expression "local_4c[1]" (identifier "local_4c") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_4c[2] = 0;" (assignment_expression "local_4c[2] = 0" (subscript_expression "local_4c[2]" (identifier "local_4c") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_4c[3] = 0;" (assignment_expression "local_4c[3] = 0" (subscript_expression "local_4c[3]" (identifier "local_4c") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_4c[4] = 0;" (assignment_expression "local_4c[4] = 0" (subscript_expression "local_4c[4]" (identifier "local_4c") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_4c[5] = 0;" (assignment_expression "local_4c[5] = 0" (subscript_expression "local_4c[5]" (identifier "local_4c") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_4c[6] = 0;" (assignment_expression "local_4c[6] = 0" (subscript_expression "local_4c[6]" (identifier "local_4c") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_4c[7] = 0;" (assignment_expression "local_4c[7] = 0" (subscript_expression "local_4c[7]" (identifier "local_4c") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_4c[8] = *(int *)PTR___stack_chk_guard_00039368;" (assignment_expression "local_4c[8] = *(int *)PTR___stack_chk_guard_00039368" (subscript_expression "local_4c[8]" (identifier "local_4c") ([ "[") (number_literal "8") (] "]")) (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_00039368" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_00039368" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_00039368")))) (; ";")) (expression_statement "puVar11 = param_4;" (assignment_expression "puVar11 = param_4" (identifier "puVar11") (= "=") (identifier "param_4")) (; ";")) (if_statement "if (param_3 != (byte *)0x0) {\n    param_3 = param_2 + (int)param_3;\n    puVar11 = (undefined4 *)0x1;\n    do {\n      bVar1 = *param_2;\n      param_2 = param_2 + 1;\n      local_4c[bVar1 >> 5] = local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f);\n    } while (param_3 != param_2);\n  }" (if "if") (parenthesized_expression "(param_3 != (byte *)0x0)" (( "(") (binary_expression "param_3 != (byte *)0x0" (identifier "param_3") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    param_3 = param_2 + (int)param_3;\n    puVar11 = (undefined4 *)0x1;\n    do {\n      bVar1 = *param_2;\n      param_2 = param_2 + 1;\n      local_4c[bVar1 >> 5] = local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f);\n    } while (param_3 != param_2);\n  }" ({ "{") (expression_statement "param_3 = param_2 + (int)param_3;" (assignment_expression "param_3 = param_2 + (int)param_3" (identifier "param_3") (= "=") (binary_expression "param_2 + (int)param_3" (identifier "param_2") (+ "+") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")))) (; ";")) (expression_statement "puVar11 = (undefined4 *)0x1;" (assignment_expression "puVar11 = (undefined4 *)0x1" (identifier "puVar11") (= "=") (cast_expression "(undefined4 *)0x1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (do_statement "do {\n      bVar1 = *param_2;\n      param_2 = param_2 + 1;\n      local_4c[bVar1 >> 5] = local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f);\n    } while (param_3 != param_2);" (do "do") (compound_statement "{\n      bVar1 = *param_2;\n      param_2 = param_2 + 1;\n      local_4c[bVar1 >> 5] = local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f);\n    }" ({ "{") (expression_statement "bVar1 = *param_2;" (assignment_expression "bVar1 = *param_2" (identifier "bVar1") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_4c[bVar1 >> 5] = local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f);" (assignment_expression "local_4c[bVar1 >> 5] = local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f)" (subscript_expression "local_4c[bVar1 >> 5]" (identifier "local_4c") ([ "[") (binary_expression "bVar1 >> 5" (identifier "bVar1") (>> ">>") (number_literal "5")) (] "]")) (= "=") (binary_expression "local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f)" (subscript_expression "local_4c[bVar1 >> 5]" (identifier "local_4c") ([ "[") (binary_expression "bVar1 >> 5" (identifier "bVar1") (>> ">>") (number_literal "5")) (] "]")) (| "|") (binary_expression "1 << (bVar1 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(bVar1 & 0x1f)" (( "(") (binary_expression "bVar1 & 0x1f" (identifier "bVar1") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_3 != param_2)" (( "(") (binary_expression "param_3 != param_2" (identifier "param_3") (!= "!=") (identifier "param_2")) () ")")) (; ";")) (} "}"))) (do_statement "do {\n    pbVar9 = *(byte **)(param_1 + 4);\n    if (pbVar9 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar9 + 1;\n      uVar14 = (uint)*pbVar9;\n      uVar4 = (uint)(*pbVar9 >> 5);\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n      if ((int)uVar14 < 0) break;\n      uVar4 = uVar14 >> 5;\n    }\n  } while ((local_4c[uVar4] >> (uVar14 & 0x1f) & 1) != 0);" (do "do") (compound_statement "{\n    pbVar9 = *(byte **)(param_1 + 4);\n    if (pbVar9 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar9 + 1;\n      uVar14 = (uint)*pbVar9;\n      uVar4 = (uint)(*pbVar9 >> 5);\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n      if ((int)uVar14 < 0) break;\n      uVar4 = uVar14 >> 5;\n    }\n  }" ({ "{") (expression_statement "pbVar9 = *(byte **)(param_1 + 4);" (assignment_expression "pbVar9 = *(byte **)(param_1 + 4)" (identifier "pbVar9") (= "=") (pointer_expression "*(byte **)(param_1 + 4)" (* "*") (cast_expression "(byte **)(param_1 + 4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (pbVar9 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar9 + 1;\n      uVar14 = (uint)*pbVar9;\n      uVar4 = (uint)(*pbVar9 >> 5);\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n      if ((int)uVar14 < 0) break;\n      uVar4 = uVar14 >> 5;\n    }" (if "if") (parenthesized_expression "(pbVar9 < *(byte **)(param_1 + 8))" (( "(") (binary_expression "pbVar9 < *(byte **)(param_1 + 8)" (identifier "pbVar9") (< "<") (pointer_expression "*(byte **)(param_1 + 8)" (* "*") (cast_expression "(byte **)(param_1 + 8)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) () ")")) (compound_statement "{\n      *(byte **)(param_1 + 4) = pbVar9 + 1;\n      uVar14 = (uint)*pbVar9;\n      uVar4 = (uint)(*pbVar9 >> 5);\n    }" ({ "{") (expression_statement "*(byte **)(param_1 + 4) = pbVar9 + 1;" (assignment_expression "*(byte **)(param_1 + 4) = pbVar9 + 1" (pointer_expression "*(byte **)(param_1 + 4)" (* "*") (cast_expression "(byte **)(param_1 + 4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "pbVar9 + 1" (identifier "pbVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar14 = (uint)*pbVar9;" (assignment_expression "uVar14 = (uint)*pbVar9" (identifier "uVar14") (= "=") (binary_expression "(uint)*pbVar9" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar9"))) (; ";")) (expression_statement "uVar4 = (uint)(*pbVar9 >> 5);" (assignment_expression "uVar4 = (uint)(*pbVar9 >> 5)" (identifier "uVar4") (= "=") (call_expression "(uint)(*pbVar9 >> 5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*pbVar9 >> 5)" (( "(") (binary_expression "*pbVar9 >> 5" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (>> ">>") (number_literal "5")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n      if ((int)uVar14 < 0) break;\n      uVar4 = uVar14 >> 5;\n    }" (else "else") (compound_statement "{\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n      if ((int)uVar14 < 0) break;\n      uVar4 = uVar14 >> 5;\n    }" ({ "{") (expression_statement "uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);" (assignment_expression "uVar14 = (*(code *)PTR___uflow_0003928c)(param_1)" (identifier "uVar14") (= "=") (call_expression "(*(code *)PTR___uflow_0003928c)(param_1)" (parenthesized_expression "(*(code *)PTR___uflow_0003928c)" (( "(") (pointer_expression "*(code *)PTR___uflow_0003928c" (* "*") (cast_expression "(code *)PTR___uflow_0003928c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___uflow_0003928c"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if ((int)uVar14 < 0) break;" (if "if") (parenthesized_expression "((int)uVar14 < 0)" (( "(") (binary_expression "(int)uVar14 < 0" (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14")) (< "<") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar4 = uVar14 >> 5;" (assignment_expression "uVar4 = uVar14 >> 5" (identifier "uVar4") (= "=") (binary_expression "uVar14 >> 5" (identifier "uVar14") (>> ">>") (number_literal "5"))) (; ";")) (} "}")))) (} "}")) (while "while") (parenthesized_expression "((local_4c[uVar4] >> (uVar14 & 0x1f) & 1) != 0)" (( "(") (binary_expression "(local_4c[uVar4] >> (uVar14 & 0x1f) & 1) != 0" (parenthesized_expression "(local_4c[uVar4] >> (uVar14 & 0x1f) & 1)" (( "(") (binary_expression "local_4c[uVar4] >> (uVar14 & 0x1f) & 1" (binary_expression "local_4c[uVar4] >> (uVar14 & 0x1f)" (subscript_expression "local_4c[uVar4]" (identifier "local_4c") ([ "[") (identifier "uVar4") (] "]")) (>> ">>") (parenthesized_expression "(uVar14 & 0x1f)" (( "(") (binary_expression "uVar14 & 0x1f" (identifier "uVar14") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "iVar17 = param_4[1];" (assignment_expression "iVar17 = param_4[1]" (identifier "iVar17") (= "=") (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "pbVar16 = (byte *)*param_4;" (assignment_expression "pbVar16 = (byte *)*param_4" (identifier "pbVar16") (= "=") (cast_expression "(byte *)*param_4" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_4" (* "*") (identifier "param_4")))) (; ";")) (expression_statement "pbVar9 = (byte *)0x0;" (assignment_expression "pbVar9 = (byte *)0x0" (identifier "pbVar9") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (labeled_statement "LAB_0001e45c:\n  if ((int)uVar14 < 0) {\n    if (pbVar9 != (byte *)0x0) {\n      if (pbVar9 == pbVar16) goto LAB_0001e474;\nLAB_0001e4ac:\n      pbVar9[iVar17] = 0;\n      goto LAB_0001e4b0;\n    }\n    pbVar9 = (byte *)0xffffffff;\n    goto LAB_0001e4b8;\n  }" (statement_identifier "LAB_0001e45c") (: ":") (if_statement "if ((int)uVar14 < 0) {\n    if (pbVar9 != (byte *)0x0) {\n      if (pbVar9 == pbVar16) goto LAB_0001e474;\nLAB_0001e4ac:\n      pbVar9[iVar17] = 0;\n      goto LAB_0001e4b0;\n    }\n    pbVar9 = (byte *)0xffffffff;\n    goto LAB_0001e4b8;\n  }" (if "if") (parenthesized_expression "((int)uVar14 < 0)" (( "(") (binary_expression "(int)uVar14 < 0" (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    if (pbVar9 != (byte *)0x0) {\n      if (pbVar9 == pbVar16) goto LAB_0001e474;\nLAB_0001e4ac:\n      pbVar9[iVar17] = 0;\n      goto LAB_0001e4b0;\n    }\n    pbVar9 = (byte *)0xffffffff;\n    goto LAB_0001e4b8;\n  }" ({ "{") (if_statement "if (pbVar9 != (byte *)0x0) {\n      if (pbVar9 == pbVar16) goto LAB_0001e474;\nLAB_0001e4ac:\n      pbVar9[iVar17] = 0;\n      goto LAB_0001e4b0;\n    }" (if "if") (parenthesized_expression "(pbVar9 != (byte *)0x0)" (( "(") (binary_expression "pbVar9 != (byte *)0x0" (identifier "pbVar9") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      if (pbVar9 == pbVar16) goto LAB_0001e474;\nLAB_0001e4ac:\n      pbVar9[iVar17] = 0;\n      goto LAB_0001e4b0;\n    }" ({ "{") (if_statement "if (pbVar9 == pbVar16) goto LAB_0001e474;" (if "if") (parenthesized_expression "(pbVar9 == pbVar16)" (( "(") (binary_expression "pbVar9 == pbVar16" (identifier "pbVar9") (== "==") (identifier "pbVar16")) () ")")) (goto_statement "goto LAB_0001e474;" (goto "goto") (statement_identifier "LAB_0001e474") (; ";"))) (labeled_statement "LAB_0001e4ac:\n      pbVar9[iVar17] = 0;" (statement_identifier "LAB_0001e4ac") (: ":") (expression_statement "pbVar9[iVar17] = 0;" (assignment_expression "pbVar9[iVar17] = 0" (subscript_expression "pbVar9[iVar17]" (identifier "pbVar9") ([ "[") (identifier "iVar17") (] "]")) (= "=") (number_literal "0")) (; ";"))) (goto_statement "goto LAB_0001e4b0;" (goto "goto") (statement_identifier "LAB_0001e4b0") (; ";")) (} "}"))) (expression_statement "pbVar9 = (byte *)0xffffffff;" (assignment_expression "pbVar9 = (byte *)0xffffffff" (identifier "pbVar9") (= "=") (cast_expression "(byte *)0xffffffff" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (goto_statement "goto LAB_0001e4b8;" (goto "goto") (statement_identifier "LAB_0001e4b8") (; ";")) (} "}")))) (if_statement "if (pbVar9 == pbVar16) {\nLAB_0001e474:\n    if (iVar17 == 0) {\n      if (pbVar16 == (byte *)0x0) {\n        pbVar16 = (byte *)0x40;\n      }\n      else if ((int)pbVar16 < 0) goto LAB_0001e544;\n    }\n    else {\n      if ((byte *)0x55555553 < pbVar16) {\nLAB_0001e544:\n                    \n        xalloc_die();\n      }\n      pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;\n    }\n    param_2 = pbVar16;\n    iVar17 = xrealloc(iVar17);\n    if ((int)uVar14 < 0) goto LAB_0001e4ac;\n  }" (if "if") (parenthesized_expression "(pbVar9 == pbVar16)" (( "(") (binary_expression "pbVar9 == pbVar16" (identifier "pbVar9") (== "==") (identifier "pbVar16")) () ")")) (compound_statement "{\nLAB_0001e474:\n    if (iVar17 == 0) {\n      if (pbVar16 == (byte *)0x0) {\n        pbVar16 = (byte *)0x40;\n      }\n      else if ((int)pbVar16 < 0) goto LAB_0001e544;\n    }\n    else {\n      if ((byte *)0x55555553 < pbVar16) {\nLAB_0001e544:\n                    \n        xalloc_die();\n      }\n      pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;\n    }\n    param_2 = pbVar16;\n    iVar17 = xrealloc(iVar17);\n    if ((int)uVar14 < 0) goto LAB_0001e4ac;\n  }" ({ "{") (labeled_statement "LAB_0001e474:\n    if (iVar17 == 0) {\n      if (pbVar16 == (byte *)0x0) {\n        pbVar16 = (byte *)0x40;\n      }\n      else if ((int)pbVar16 < 0) goto LAB_0001e544;\n    }\n    else {\n      if ((byte *)0x55555553 < pbVar16) {\nLAB_0001e544:\n                    \n        xalloc_die();\n      }\n      pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;\n    }" (statement_identifier "LAB_0001e474") (: ":") (if_statement "if (iVar17 == 0) {\n      if (pbVar16 == (byte *)0x0) {\n        pbVar16 = (byte *)0x40;\n      }\n      else if ((int)pbVar16 < 0) goto LAB_0001e544;\n    }\n    else {\n      if ((byte *)0x55555553 < pbVar16) {\nLAB_0001e544:\n                    \n        xalloc_die();\n      }\n      pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;\n    }" (if "if") (parenthesized_expression "(iVar17 == 0)" (( "(") (binary_expression "iVar17 == 0" (identifier "iVar17") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (pbVar16 == (byte *)0x0) {\n        pbVar16 = (byte *)0x40;\n      }\n      else if ((int)pbVar16 < 0) goto LAB_0001e544;\n    }" ({ "{") (if_statement "if (pbVar16 == (byte *)0x0) {\n        pbVar16 = (byte *)0x40;\n      }\n      else if ((int)pbVar16 < 0) goto LAB_0001e544;" (if "if") (parenthesized_expression "(pbVar16 == (byte *)0x0)" (( "(") (binary_expression "pbVar16 == (byte *)0x0" (identifier "pbVar16") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        pbVar16 = (byte *)0x40;\n      }" ({ "{") (expression_statement "pbVar16 = (byte *)0x40;" (assignment_expression "pbVar16 = (byte *)0x40" (identifier "pbVar16") (= "=") (cast_expression "(byte *)0x40" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x40"))) (; ";")) (} "}")) (else_clause "else if ((int)pbVar16 < 0) goto LAB_0001e544;" (else "else") (if_statement "if ((int)pbVar16 < 0) goto LAB_0001e544;" (if "if") (parenthesized_expression "((int)pbVar16 < 0)" (( "(") (binary_expression "(int)pbVar16 < 0" (cast_expression "(int)pbVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar16")) (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_0001e544;" (goto "goto") (statement_identifier "LAB_0001e544") (; ";"))))) (} "}")) (else_clause "else {\n      if ((byte *)0x55555553 < pbVar16) {\nLAB_0001e544:\n                    \n        xalloc_die();\n      }\n      pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;\n    }" (else "else") (compound_statement "{\n      if ((byte *)0x55555553 < pbVar16) {\nLAB_0001e544:\n                    \n        xalloc_die();\n      }\n      pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;\n    }" ({ "{") (if_statement "if ((byte *)0x55555553 < pbVar16) {\nLAB_0001e544:\n                    \n        xalloc_die();\n      }" (if "if") (parenthesized_expression "((byte *)0x55555553 < pbVar16)" (( "(") (binary_expression "(byte *)0x55555553 < pbVar16" (cast_expression "(byte *)0x55555553" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x55555553")) (< "<") (identifier "pbVar16")) () ")")) (compound_statement "{\nLAB_0001e544:\n                    \n        xalloc_die();\n      }" ({ "{") (labeled_statement "LAB_0001e544:\n                    \n        xalloc_die();" (statement_identifier "LAB_0001e544") (: ":") (expression_statement "xalloc_die();" (call_expression "xalloc_die()" (identifier "xalloc_die") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}"))) (expression_statement "pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;" (assignment_expression "pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1" (identifier "pbVar16") (= "=") (binary_expression "pbVar16 + ((uint)pbVar16 >> 1) + 1" (binary_expression "pbVar16 + ((uint)pbVar16 >> 1)" (identifier "pbVar16") (+ "+") (parenthesized_expression "((uint)pbVar16 >> 1)" (( "(") (binary_expression "(uint)pbVar16 >> 1" (cast_expression "(uint)pbVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pbVar16")) (>> ">>") (number_literal "1")) () ")"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))))) (expression_statement "param_2 = pbVar16;" (assignment_expression "param_2 = pbVar16" (identifier "param_2") (= "=") (identifier "pbVar16")) (; ";")) (expression_statement "iVar17 = xrealloc(iVar17);" (assignment_expression "iVar17 = xrealloc(iVar17)" (identifier "iVar17") (= "=") (call_expression "xrealloc(iVar17)" (identifier "xrealloc") (argument_list "(iVar17)" (( "(") (identifier "iVar17") () ")")))) (; ";")) (if_statement "if ((int)uVar14 < 0) goto LAB_0001e4ac;" (if "if") (parenthesized_expression "((int)uVar14 < 0)" (( "(") (binary_expression "(int)uVar14 < 0" (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14")) (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_0001e4ac;" (goto "goto") (statement_identifier "LAB_0001e4ac") (; ";"))) (} "}"))) (if_statement "if ((local_4c[uVar14 >> 5] >> (uVar14 & 0x1f) & 1) == 0) {\n    pbVar9[iVar17] = (byte)uVar14;\n    pbVar13 = *(byte **)(param_1 + 4);\n    pbVar9 = pbVar9 + 1;\n    if (pbVar13 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar13 + 1;\n      uVar14 = (uint)*pbVar13;\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n    }\n    goto LAB_0001e45c;\n  }" (if "if") (parenthesized_expression "((local_4c[uVar14 >> 5] >> (uVar14 & 0x1f) & 1) == 0)" (( "(") (binary_expression "(local_4c[uVar14 >> 5] >> (uVar14 & 0x1f) & 1) == 0" (parenthesized_expression "(local_4c[uVar14 >> 5] >> (uVar14 & 0x1f) & 1)" (( "(") (binary_expression "local_4c[uVar14 >> 5] >> (uVar14 & 0x1f) & 1" (binary_expression "local_4c[uVar14 >> 5] >> (uVar14 & 0x1f)" (subscript_expression "local_4c[uVar14 >> 5]" (identifier "local_4c") ([ "[") (binary_expression "uVar14 >> 5" (identifier "uVar14") (>> ">>") (number_literal "5")) (] "]")) (>> ">>") (parenthesized_expression "(uVar14 & 0x1f)" (( "(") (binary_expression "uVar14 & 0x1f" (identifier "uVar14") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    pbVar9[iVar17] = (byte)uVar14;\n    pbVar13 = *(byte **)(param_1 + 4);\n    pbVar9 = pbVar9 + 1;\n    if (pbVar13 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar13 + 1;\n      uVar14 = (uint)*pbVar13;\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n    }\n    goto LAB_0001e45c;\n  }" ({ "{") (expression_statement "pbVar9[iVar17] = (byte)uVar14;" (assignment_expression "pbVar9[iVar17] = (byte)uVar14" (subscript_expression "pbVar9[iVar17]" (identifier "pbVar9") ([ "[") (identifier "iVar17") (] "]")) (= "=") (cast_expression "(byte)uVar14" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar14"))) (; ";")) (expression_statement "pbVar13 = *(byte **)(param_1 + 4);" (assignment_expression "pbVar13 = *(byte **)(param_1 + 4)" (identifier "pbVar13") (= "=") (pointer_expression "*(byte **)(param_1 + 4)" (* "*") (cast_expression "(byte **)(param_1 + 4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" (identifier "pbVar9") (= "=") (binary_expression "pbVar9 + 1" (identifier "pbVar9") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (pbVar13 < *(byte **)(param_1 + 8)) {\n      *(byte **)(param_1 + 4) = pbVar13 + 1;\n      uVar14 = (uint)*pbVar13;\n    }\n    else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n    }" (if "if") (parenthesized_expression "(pbVar13 < *(byte **)(param_1 + 8))" (( "(") (binary_expression "pbVar13 < *(byte **)(param_1 + 8)" (identifier "pbVar13") (< "<") (pointer_expression "*(byte **)(param_1 + 8)" (* "*") (cast_expression "(byte **)(param_1 + 8)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) () ")")) (compound_statement "{\n      *(byte **)(param_1 + 4) = pbVar13 + 1;\n      uVar14 = (uint)*pbVar13;\n    }" ({ "{") (expression_statement "*(byte **)(param_1 + 4) = pbVar13 + 1;" (assignment_expression "*(byte **)(param_1 + 4) = pbVar13 + 1" (pointer_expression "*(byte **)(param_1 + 4)" (* "*") (cast_expression "(byte **)(param_1 + 4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "pbVar13 + 1" (identifier "pbVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar14 = (uint)*pbVar13;" (assignment_expression "uVar14 = (uint)*pbVar13" (identifier "uVar14") (= "=") (binary_expression "(uint)*pbVar13" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar13"))) (; ";")) (} "}")) (else_clause "else {\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n    }" (else "else") (compound_statement "{\n      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);\n    }" ({ "{") (expression_statement "uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);" (assignment_expression "uVar14 = (*(code *)PTR___uflow_0003928c)(param_1)" (identifier "uVar14") (= "=") (call_expression "(*(code *)PTR___uflow_0003928c)(param_1)" (parenthesized_expression "(*(code *)PTR___uflow_0003928c)" (( "(") (pointer_expression "*(code *)PTR___uflow_0003928c" (* "*") (cast_expression "(code *)PTR___uflow_0003928c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___uflow_0003928c"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (} "}")))) (goto_statement "goto LAB_0001e45c;" (goto "goto") (statement_identifier "LAB_0001e45c") (; ";")) (} "}"))) (expression_statement "pbVar9[iVar17] = 0;" (assignment_expression "pbVar9[iVar17] = 0" (subscript_expression "pbVar9[iVar17]" (identifier "pbVar9") ([ "[") (identifier "iVar17") (] "]")) (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_0001e4b0:\n  param_4[1] = iVar17;" (statement_identifier "LAB_0001e4b0") (: ":") (expression_statement "param_4[1] = iVar17;" (assignment_expression "param_4[1] = iVar17" (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar17")) (; ";"))) (expression_statement "*param_4 = pbVar16;" (assignment_expression "*param_4 = pbVar16" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (identifier "pbVar16")) (; ";")) (labeled_statement "LAB_0001e4b8:\n  if (local_4c[8] == *(int *)puVar3) {\n    return pbVar9;\n  }" (statement_identifier "LAB_0001e4b8") (: ":") (if_statement "if (local_4c[8] == *(int *)puVar3) {\n    return pbVar9;\n  }" (if "if") (parenthesized_expression "(local_4c[8] == *(int *)puVar3)" (( "(") (binary_expression "local_4c[8] == *(int *)puVar3" (subscript_expression "local_4c[8]" (identifier "local_4c") ([ "[") (number_literal "8") (] "]")) (== "==") (pointer_expression "*(int *)puVar3" (* "*") (cast_expression "(int *)puVar3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3")))) () ")")) (compound_statement "{\n    return pbVar9;\n  }" ({ "{") (return_statement "return pbVar9;" (return "return") (identifier "pbVar9") (; ";")) (} "}")))) (expression_statement "uVar4 = local_4c[8];" (assignment_expression "uVar4 = local_4c[8]" (identifier "uVar4") (= "=") (subscript_expression "local_4c[8]" (identifier "local_4c") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "puVar18 = PTR___stack_chk_fail_00039350;" (assignment_expression "puVar18 = PTR___stack_chk_fail_00039350" (identifier "puVar18") (= "=") (identifier "PTR___stack_chk_fail_00039350")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_00039350)();" (call_expression "(*(code *)PTR___stack_chk_fail_00039350)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00039350)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_00039350" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_00039350" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_00039350"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar5 = *(int **)(puVar18 + 0x1adfc);" (assignment_expression "piVar5 = *(int **)(puVar18 + 0x1adfc)" (identifier "piVar5") (= "=") (pointer_expression "*(int **)(puVar18 + 0x1adfc)" (* "*") (cast_expression "(int **)(puVar18 + 0x1adfc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar18 + 0x1adfc)" (( "(") (binary_expression "puVar18 + 0x1adfc" (identifier "puVar18") (+ "+") (number_literal "0x1adfc")) () ")"))))) (; ";")) (expression_statement "local_88 = puVar3;" (assignment_expression "local_88 = puVar3" (identifier "local_88") (= "=") (identifier "puVar3")) (; ";")) (expression_statement "local_8c = 0x55555554;" (assignment_expression "local_8c = 0x55555554" (identifier "local_8c") (= "=") (number_literal "0x55555554")) (; ";")) (expression_statement "local_94 = *piVar5;" (assignment_expression "local_94 = *piVar5" (identifier "local_94") (= "=") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) (; ";")) (expression_statement "pbVar13 = (byte *)0x40;" (assignment_expression "pbVar13 = (byte *)0x40" (identifier "pbVar13") (= "=") (cast_expression "(byte *)0x40" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x40"))) (; ";")) (expression_statement "local_90 = param_4;" (assignment_expression "local_90 = param_4" (identifier "local_90") (= "=") (identifier "param_4")) (; ";")) (expression_statement "local_84 = uVar14;" (assignment_expression "local_84 = uVar14" (identifier "local_84") (= "=") (identifier "uVar14")) (; ";")) (expression_statement "local_80 = pbVar9;" (assignment_expression "local_80 = pbVar9" (identifier "local_80") (= "=") (identifier "pbVar9")) (; ";")) (expression_statement "local_7c = param_1;" (assignment_expression "local_7c = param_1" (identifier "local_7c") (= "=") (identifier "param_1")) (; ";")) (expression_statement "local_78 = pbVar16;" (assignment_expression "local_78 = pbVar16" (identifier "local_78") (= "=") (identifier "pbVar16")) (; ";")) (expression_statement "local_74 = iVar17;" (assignment_expression "local_74 = iVar17" (identifier "local_74") (= "=") (identifier "iVar17")) (; ";")) (if_statement "if (param_2 == (byte *)0x0) {\n    iVar17 = 0x100;\n  }\n  else {\n    pbVar13 = param_2 + 1;\n    iVar17 = (int)pbVar13 * 4;\n    if ((iVar17 < 0) || ((uint)pbVar13 >> 0x1e != 0)) {\nLAB_0001e7f0:\n                    \n      xalloc_die();\n    }\n  }" (if "if") (parenthesized_expression "(param_2 == (byte *)0x0)" (( "(") (binary_expression "param_2 == (byte *)0x0" (identifier "param_2") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    iVar17 = 0x100;\n  }" ({ "{") (expression_statement "iVar17 = 0x100;" (assignment_expression "iVar17 = 0x100" (identifier "iVar17") (= "=") (number_literal "0x100")) (; ";")) (} "}")) (else_clause "else {\n    pbVar13 = param_2 + 1;\n    iVar17 = (int)pbVar13 * 4;\n    if ((iVar17 < 0) || ((uint)pbVar13 >> 0x1e != 0)) {\nLAB_0001e7f0:\n                    \n      xalloc_die();\n    }\n  }" (else "else") (compound_statement "{\n    pbVar13 = param_2 + 1;\n    iVar17 = (int)pbVar13 * 4;\n    if ((iVar17 < 0) || ((uint)pbVar13 >> 0x1e != 0)) {\nLAB_0001e7f0:\n                    \n      xalloc_die();\n    }\n  }" ({ "{") (expression_statement "pbVar13 = param_2 + 1;" (assignment_expression "pbVar13 = param_2 + 1" (identifier "pbVar13") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar17 = (int)pbVar13 * 4;" (assignment_expression "iVar17 = (int)pbVar13 * 4" (identifier "iVar17") (= "=") (binary_expression "(int)pbVar13 * 4" (cast_expression "(int)pbVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar13")) (* "*") (number_literal "4"))) (; ";")) (if_statement "if ((iVar17 < 0) || ((uint)pbVar13 >> 0x1e != 0)) {\nLAB_0001e7f0:\n                    \n      xalloc_die();\n    }" (if "if") (parenthesized_expression "((iVar17 < 0) || ((uint)pbVar13 >> 0x1e != 0))" (( "(") (binary_expression "(iVar17 < 0) || ((uint)pbVar13 >> 0x1e != 0)" (parenthesized_expression "(iVar17 < 0)" (( "(") (binary_expression "iVar17 < 0" (identifier "iVar17") (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((uint)pbVar13 >> 0x1e != 0)" (( "(") (binary_expression "(uint)pbVar13 >> 0x1e != 0" (binary_expression "(uint)pbVar13 >> 0x1e" (cast_expression "(uint)pbVar13" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pbVar13")) (>> ">>") (number_literal "0x1e")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\nLAB_0001e7f0:\n                    \n      xalloc_die();\n    }" ({ "{") (labeled_statement "LAB_0001e7f0:\n                    \n      xalloc_die();" (statement_identifier "LAB_0001e7f0") (: ":") (expression_statement "xalloc_die();" (call_expression "xalloc_die()" (identifier "xalloc_die") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}"))) (} "}")))) (expression_statement "iVar6 = xmalloc(iVar17);" (assignment_expression "iVar6 = xmalloc(iVar17)" (identifier "iVar6") (= "=") (call_expression "xmalloc(iVar17)" (identifier "xmalloc") (argument_list "(iVar17)" (( "(") (identifier "iVar17") () ")")))) (; ";")) (expression_statement "pbVar9 = (byte *)0x0;" (assignment_expression "pbVar9 = (byte *)0x0" (identifier "pbVar9") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "iVar17 = xmalloc(iVar17);" (assignment_expression "iVar17 = xmalloc(iVar17)" (identifier "iVar17") (= "=") (call_expression "xmalloc(iVar17)" (identifier "xmalloc") (argument_list "(iVar17)" (( "(") (identifier "iVar17") () ")")))) (; ";")) (expression_statement "init_tokenbuffer(auStack_9c);" (call_expression "init_tokenbuffer(auStack_9c)" (identifier "init_tokenbuffer") (argument_list "(auStack_9c)" (( "(") (identifier "auStack_9c") () ")"))) (; ";")) (do_statement "do {\n    pbVar16 = param_3;\n    puVar12 = puVar11;\n    iVar8 = readtoken(uVar4,param_3,puVar11,auStack_9c);\n    if (pbVar13 <= pbVar9) {\n      if (iVar6 == 0) {\n        pbVar16 = (byte *)0x40;\n        if (pbVar13 == (byte *)0x0) {\n          pbVar13 = (byte *)0x10;\n        }\n        else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;\n        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;\n        pbVar16 = (byte *)((int)pbVar13 * 4);\n      }\n      iVar6 = xrealloc(iVar6,pbVar16);\n      iVar17 = xrealloc(iVar17,pbVar16);\n    }\n    if (iVar8 == -1) {\n      pcVar19 = *(code **)(puVar18 + 0x1ae08);\n      *(undefined4 *)(iVar6 + (int)pbVar9 * 4) = 0;\n      *(undefined4 *)(iVar17 + (int)pbVar9 * 4) = 0;\n      (*pcVar19)(local_98);\n      __gp_1 = iVar6;\n      if (local_54 == (int *)0x0) {\n        (**(code **)(puVar18 + 0x1ae08))(iVar17);\n      }\n      else {\n        *local_54 = iVar17;\n      }\n      if (local_94 != *piVar5) {\n        pcVar19 = *(code **)(puVar18 + 0x1ade4);\n        iVar17 = local_94;\n        (*pcVar19)();\n        do {\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        } while( true );\n      }\n      return pbVar9;\n    }\n    iVar10 = iVar8 + 1;\n    if (iVar10 < 0) goto LAB_0001e7f0;\n    iVar15 = (int)pbVar9 * 4;\n    pbVar9 = pbVar9 + 1;\n    uVar7 = xmalloc(iVar10);\n    *(int *)(iVar17 + iVar15) = iVar8;\n    uVar7 = (**(code **)(puVar18 + 0x1ae00))(uVar7,local_98,iVar10);\n    *(undefined4 *)(iVar6 + iVar15) = uVar7;\n  } while( true );" (do "do") (compound_statement "{\n    pbVar16 = param_3;\n    puVar12 = puVar11;\n    iVar8 = readtoken(uVar4,param_3,puVar11,auStack_9c);\n    if (pbVar13 <= pbVar9) {\n      if (iVar6 == 0) {\n        pbVar16 = (byte *)0x40;\n        if (pbVar13 == (byte *)0x0) {\n          pbVar13 = (byte *)0x10;\n        }\n        else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;\n        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;\n        pbVar16 = (byte *)((int)pbVar13 * 4);\n      }\n      iVar6 = xrealloc(iVar6,pbVar16);\n      iVar17 = xrealloc(iVar17,pbVar16);\n    }\n    if (iVar8 == -1) {\n      pcVar19 = *(code **)(puVar18 + 0x1ae08);\n      *(undefined4 *)(iVar6 + (int)pbVar9 * 4) = 0;\n      *(undefined4 *)(iVar17 + (int)pbVar9 * 4) = 0;\n      (*pcVar19)(local_98);\n      __gp_1 = iVar6;\n      if (local_54 == (int *)0x0) {\n        (**(code **)(puVar18 + 0x1ae08))(iVar17);\n      }\n      else {\n        *local_54 = iVar17;\n      }\n      if (local_94 != *piVar5) {\n        pcVar19 = *(code **)(puVar18 + 0x1ade4);\n        iVar17 = local_94;\n        (*pcVar19)();\n        do {\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        } while( true );\n      }\n      return pbVar9;\n    }\n    iVar10 = iVar8 + 1;\n    if (iVar10 < 0) goto LAB_0001e7f0;\n    iVar15 = (int)pbVar9 * 4;\n    pbVar9 = pbVar9 + 1;\n    uVar7 = xmalloc(iVar10);\n    *(int *)(iVar17 + iVar15) = iVar8;\n    uVar7 = (**(code **)(puVar18 + 0x1ae00))(uVar7,local_98,iVar10);\n    *(undefined4 *)(iVar6 + iVar15) = uVar7;\n  }" ({ "{") (expression_statement "pbVar16 = param_3;" (assignment_expression "pbVar16 = param_3" (identifier "pbVar16") (= "=") (identifier "param_3")) (; ";")) (expression_statement "puVar12 = puVar11;" (assignment_expression "puVar12 = puVar11" (identifier "puVar12") (= "=") (identifier "puVar11")) (; ";")) (expression_statement "iVar8 = readtoken(uVar4,param_3,puVar11,auStack_9c);" (assignment_expression "iVar8 = readtoken(uVar4,param_3,puVar11,auStack_9c)" (identifier "iVar8") (= "=") (call_expression "readtoken(uVar4,param_3,puVar11,auStack_9c)" (identifier "readtoken") (argument_list "(uVar4,param_3,puVar11,auStack_9c)" (( "(") (identifier "uVar4") (, ",") (identifier "param_3") (, ",") (identifier "puVar11") (, ",") (identifier "auStack_9c") () ")")))) (; ";")) (if_statement "if (pbVar13 <= pbVar9) {\n      if (iVar6 == 0) {\n        pbVar16 = (byte *)0x40;\n        if (pbVar13 == (byte *)0x0) {\n          pbVar13 = (byte *)0x10;\n        }\n        else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;\n        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;\n        pbVar16 = (byte *)((int)pbVar13 * 4);\n      }\n      iVar6 = xrealloc(iVar6,pbVar16);\n      iVar17 = xrealloc(iVar17,pbVar16);\n    }" (if "if") (parenthesized_expression "(pbVar13 <= pbVar9)" (( "(") (binary_expression "pbVar13 <= pbVar9" (identifier "pbVar13") (<= "<=") (identifier "pbVar9")) () ")")) (compound_statement "{\n      if (iVar6 == 0) {\n        pbVar16 = (byte *)0x40;\n        if (pbVar13 == (byte *)0x0) {\n          pbVar13 = (byte *)0x10;\n        }\n        else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;\n        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;\n        pbVar16 = (byte *)((int)pbVar13 * 4);\n      }\n      iVar6 = xrealloc(iVar6,pbVar16);\n      iVar17 = xrealloc(iVar17,pbVar16);\n    }" ({ "{") (if_statement "if (iVar6 == 0) {\n        pbVar16 = (byte *)0x40;\n        if (pbVar13 == (byte *)0x0) {\n          pbVar13 = (byte *)0x10;\n        }\n        else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }\n      else {\n        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;\n        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;\n        pbVar16 = (byte *)((int)pbVar13 * 4);\n      }" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        pbVar16 = (byte *)0x40;\n        if (pbVar13 == (byte *)0x0) {\n          pbVar13 = (byte *)0x10;\n        }\n        else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }\n      }" ({ "{") (expression_statement "pbVar16 = (byte *)0x40;" (assignment_expression "pbVar16 = (byte *)0x40" (identifier "pbVar16") (= "=") (cast_expression "(byte *)0x40" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x40"))) (; ";")) (if_statement "if (pbVar13 == (byte *)0x0) {\n          pbVar13 = (byte *)0x10;\n        }\n        else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }" (if "if") (parenthesized_expression "(pbVar13 == (byte *)0x0)" (( "(") (binary_expression "pbVar13 == (byte *)0x0" (identifier "pbVar13") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          pbVar13 = (byte *)0x10;\n        }" ({ "{") (expression_statement "pbVar13 = (byte *)0x10;" (assignment_expression "pbVar13 = (byte *)0x10" (identifier "pbVar13") (= "=") (cast_expression "(byte *)0x10" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x10"))) (; ";")) (} "}")) (else_clause "else {\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }" (else "else") (compound_statement "{\n          pbVar16 = (byte *)((int)pbVar13 << 2);\n          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;\n        }" ({ "{") (expression_statement "pbVar16 = (byte *)((int)pbVar13 << 2);" (assignment_expression "pbVar16 = (byte *)((int)pbVar13 << 2)" (identifier "pbVar16") (= "=") (cast_expression "(byte *)((int)pbVar13 << 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pbVar13 << 2)" (( "(") (binary_expression "(int)pbVar13 << 2" (cast_expression "(int)pbVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar13")) (<< "<<") (number_literal "2")) () ")")))) (; ";")) (if_statement "if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;" (if "if") (parenthesized_expression "(((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0))" (( "(") (binary_expression "((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)" (parenthesized_expression "((int)pbVar16 < 0)" (( "(") (binary_expression "(int)pbVar16 < 0" (cast_expression "(int)pbVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar16")) (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((uint)pbVar13 >> 0x1e != 0)" (( "(") (binary_expression "(uint)pbVar13 >> 0x1e != 0" (binary_expression "(uint)pbVar13 >> 0x1e" (cast_expression "(uint)pbVar13" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pbVar13")) (>> ">>") (number_literal "0x1e")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_0001e7f0;" (goto "goto") (statement_identifier "LAB_0001e7f0") (; ";"))) (} "}")))) (} "}")) (else_clause "else {\n        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;\n        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;\n        pbVar16 = (byte *)((int)pbVar13 * 4);\n      }" (else "else") (compound_statement "{\n        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;\n        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;\n        pbVar16 = (byte *)((int)pbVar13 * 4);\n      }" ({ "{") (if_statement "if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;" (if "if") (parenthesized_expression "((byte *)0x15555554 < pbVar13)" (( "(") (binary_expression "(byte *)0x15555554 < pbVar13" (cast_expression "(byte *)0x15555554" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x15555554")) (< "<") (identifier "pbVar13")) () ")")) (goto_statement "goto LAB_0001e7f0;" (goto "goto") (statement_identifier "LAB_0001e7f0") (; ";"))) (expression_statement "pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;" (assignment_expression "pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + ((uint)pbVar13 >> 1) + 1" (binary_expression "pbVar13 + ((uint)pbVar13 >> 1)" (identifier "pbVar13") (+ "+") (parenthesized_expression "((uint)pbVar13 >> 1)" (( "(") (binary_expression "(uint)pbVar13 >> 1" (cast_expression "(uint)pbVar13" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pbVar13")) (>> ">>") (number_literal "1")) () ")"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar16 = (byte *)((int)pbVar13 * 4);" (assignment_expression "pbVar16 = (byte *)((int)pbVar13 * 4)" (identifier "pbVar16") (= "=") (cast_expression "(byte *)((int)pbVar13 * 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pbVar13 * 4)" (( "(") (binary_expression "(int)pbVar13 * 4" (cast_expression "(int)pbVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar13")) (* "*") (number_literal "4")) () ")")))) (; ";")) (} "}")))) (expression_statement "iVar6 = xrealloc(iVar6,pbVar16);" (assignment_expression "iVar6 = xrealloc(iVar6,pbVar16)" (identifier "iVar6") (= "=") (call_expression "xrealloc(iVar6,pbVar16)" (identifier "xrealloc") (argument_list "(iVar6,pbVar16)" (( "(") (identifier "iVar6") (, ",") (identifier "pbVar16") () ")")))) (; ";")) (expression_statement "iVar17 = xrealloc(iVar17,pbVar16);" (assignment_expression "iVar17 = xrealloc(iVar17,pbVar16)" (identifier "iVar17") (= "=") (call_expression "xrealloc(iVar17,pbVar16)" (identifier "xrealloc") (argument_list "(iVar17,pbVar16)" (( "(") (identifier "iVar17") (, ",") (identifier "pbVar16") () ")")))) (; ";")) (} "}"))) (if_statement "if (iVar8 == -1) {\n      pcVar19 = *(code **)(puVar18 + 0x1ae08);\n      *(undefined4 *)(iVar6 + (int)pbVar9 * 4) = 0;\n      *(undefined4 *)(iVar17 + (int)pbVar9 * 4) = 0;\n      (*pcVar19)(local_98);\n      __gp_1 = iVar6;\n      if (local_54 == (int *)0x0) {\n        (**(code **)(puVar18 + 0x1ae08))(iVar17);\n      }\n      else {\n        *local_54 = iVar17;\n      }\n      if (local_94 != *piVar5) {\n        pcVar19 = *(code **)(puVar18 + 0x1ade4);\n        iVar17 = local_94;\n        (*pcVar19)();\n        do {\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        } while( true );\n      }\n      return pbVar9;\n    }" (if "if") (parenthesized_expression "(iVar8 == -1)" (( "(") (binary_expression "iVar8 == -1" (identifier "iVar8") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n      pcVar19 = *(code **)(puVar18 + 0x1ae08);\n      *(undefined4 *)(iVar6 + (int)pbVar9 * 4) = 0;\n      *(undefined4 *)(iVar17 + (int)pbVar9 * 4) = 0;\n      (*pcVar19)(local_98);\n      __gp_1 = iVar6;\n      if (local_54 == (int *)0x0) {\n        (**(code **)(puVar18 + 0x1ae08))(iVar17);\n      }\n      else {\n        *local_54 = iVar17;\n      }\n      if (local_94 != *piVar5) {\n        pcVar19 = *(code **)(puVar18 + 0x1ade4);\n        iVar17 = local_94;\n        (*pcVar19)();\n        do {\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        } while( true );\n      }\n      return pbVar9;\n    }" ({ "{") (expression_statement "pcVar19 = *(code **)(puVar18 + 0x1ae08);" (assignment_expression "pcVar19 = *(code **)(puVar18 + 0x1ae08)" (identifier "pcVar19") (= "=") (pointer_expression "*(code **)(puVar18 + 0x1ae08)" (* "*") (cast_expression "(code **)(puVar18 + 0x1ae08)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar18 + 0x1ae08)" (( "(") (binary_expression "puVar18 + 0x1ae08" (identifier "puVar18") (+ "+") (number_literal "0x1ae08")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar6 + (int)pbVar9 * 4) = 0;" (assignment_expression "*(undefined4 *)(iVar6 + (int)pbVar9 * 4) = 0" (pointer_expression "*(undefined4 *)(iVar6 + (int)pbVar9 * 4)" (* "*") (cast_expression "(undefined4 *)(iVar6 + (int)pbVar9 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + (int)pbVar9 * 4)" (( "(") (binary_expression "iVar6 + (int)pbVar9 * 4" (identifier "iVar6") (+ "+") (binary_expression "(int)pbVar9 * 4" (cast_expression "(int)pbVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar9")) (* "*") (number_literal "4"))) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(iVar17 + (int)pbVar9 * 4) = 0;" (assignment_expression "*(undefined4 *)(iVar17 + (int)pbVar9 * 4) = 0" (pointer_expression "*(undefined4 *)(iVar17 + (int)pbVar9 * 4)" (* "*") (cast_expression "(undefined4 *)(iVar17 + (int)pbVar9 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + (int)pbVar9 * 4)" (( "(") (binary_expression "iVar17 + (int)pbVar9 * 4" (identifier "iVar17") (+ "+") (binary_expression "(int)pbVar9 * 4" (cast_expression "(int)pbVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar9")) (* "*") (number_literal "4"))) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "(*pcVar19)(local_98);" (call_expression "(*pcVar19)(local_98)" (parenthesized_expression "(*pcVar19)" (( "(") (pointer_expression "*pcVar19" (* "*") (identifier "pcVar19")) () ")")) (argument_list "(local_98)" (( "(") (identifier "local_98") () ")"))) (; ";")) (expression_statement "__gp_1 = iVar6;" (assignment_expression "__gp_1 = iVar6" (identifier "__gp_1") (= "=") (identifier "iVar6")) (; ";")) (if_statement "if (local_54 == (int *)0x0) {\n        (**(code **)(puVar18 + 0x1ae08))(iVar17);\n      }\n      else {\n        *local_54 = iVar17;\n      }" (if "if") (parenthesized_expression "(local_54 == (int *)0x0)" (( "(") (binary_expression "local_54 == (int *)0x0" (identifier "local_54") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        (**(code **)(puVar18 + 0x1ae08))(iVar17);\n      }" ({ "{") (expression_statement "(**(code **)(puVar18 + 0x1ae08))(iVar17);" (call_expression "(**(code **)(puVar18 + 0x1ae08))(iVar17)" (parenthesized_expression "(**(code **)(puVar18 + 0x1ae08))" (( "(") (pointer_expression "**(code **)(puVar18 + 0x1ae08)" (* "*") (pointer_expression "*(code **)(puVar18 + 0x1ae08)" (* "*") (cast_expression "(code **)(puVar18 + 0x1ae08)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar18 + 0x1ae08)" (( "(") (binary_expression "puVar18 + 0x1ae08" (identifier "puVar18") (+ "+") (number_literal "0x1ae08")) () ")"))))) () ")")) (argument_list "(iVar17)" (( "(") (identifier "iVar17") () ")"))) (; ";")) (} "}")) (else_clause "else {\n        *local_54 = iVar17;\n      }" (else "else") (compound_statement "{\n        *local_54 = iVar17;\n      }" ({ "{") (expression_statement "*local_54 = iVar17;" (assignment_expression "*local_54 = iVar17" (pointer_expression "*local_54" (* "*") (identifier "local_54")) (= "=") (identifier "iVar17")) (; ";")) (} "}")))) (if_statement "if (local_94 != *piVar5) {\n        pcVar19 = *(code **)(puVar18 + 0x1ade4);\n        iVar17 = local_94;\n        (*pcVar19)();\n        do {\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        } while( true );\n      }" (if "if") (parenthesized_expression "(local_94 != *piVar5)" (( "(") (binary_expression "local_94 != *piVar5" (identifier "local_94") (!= "!=") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) () ")")) (compound_statement "{\n        pcVar19 = *(code **)(puVar18 + 0x1ade4);\n        iVar17 = local_94;\n        (*pcVar19)();\n        do {\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        } while( true );\n      }" ({ "{") (expression_statement "pcVar19 = *(code **)(puVar18 + 0x1ade4);" (assignment_expression "pcVar19 = *(code **)(puVar18 + 0x1ade4)" (identifier "pcVar19") (= "=") (pointer_expression "*(code **)(puVar18 + 0x1ade4)" (* "*") (cast_expression "(code **)(puVar18 + 0x1ade4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar18 + 0x1ade4)" (( "(") (binary_expression "puVar18 + 0x1ade4" (identifier "puVar18") (+ "+") (number_literal "0x1ade4")) () ")"))))) (; ";")) (expression_statement "iVar17 = local_94;" (assignment_expression "iVar17 = local_94" (identifier "iVar17") (= "=") (identifier "local_94")) (; ";")) (expression_statement "(*pcVar19)();" (call_expression "(*pcVar19)()" (parenthesized_expression "(*pcVar19)" (( "(") (pointer_expression "*pcVar19" (* "*") (identifier "pcVar19")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (do_statement "do {\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        } while( true );" (do "do") (compound_statement "{\n          pcVar20 = *(code **)(pcVar19 + 0x1aac0);\n          while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }\n        }" ({ "{") (expression_statement "pcVar20 = *(code **)(pcVar19 + 0x1aac0);" (assignment_expression "pcVar20 = *(code **)(pcVar19 + 0x1aac0)" (identifier "pcVar20") (= "=") (pointer_expression "*(code **)(pcVar19 + 0x1aac0)" (* "*") (cast_expression "(code **)(pcVar19 + 0x1aac0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar19 + 0x1aac0)" (( "(") (binary_expression "pcVar19 + 0x1aac0" (identifier "pcVar19") (+ "+") (number_literal "0x1aac0")) () ")"))))) (; ";")) (while_statement "while( true ) {\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);\n            if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }\n            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();\n            bVar2 = puVar12 < (undefined4 *)0x7ff00001;\n            if (*piVar5 == 4) break;\n            puVar12 = (undefined4 *)0x7ff00000;\n            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }\n          }" ({ "{") (expression_statement "pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);" (assignment_expression "pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12)" (identifier "pbVar9") (= "=") (cast_expression "(byte *)(*pcVar20)(iVar17,pbVar16,puVar12)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar20)(iVar17,pbVar16,puVar12)" (parenthesized_expression "(*pcVar20)" (( "(") (pointer_expression "*pcVar20" (* "*") (identifier "pcVar20")) () ")")) (argument_list "(iVar17,pbVar16,puVar12)" (( "(") (identifier "iVar17") (, ",") (identifier "pbVar16") (, ",") (identifier "puVar12") () ")"))))) (; ";")) (if_statement "if (-1 < (int)pbVar9) {\n              return pbVar9;\n            }" (if "if") (parenthesized_expression "(-1 < (int)pbVar9)" (( "(") (binary_expression "-1 < (int)pbVar9" (number_literal "-1") (< "<") (cast_expression "(int)pbVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar9"))) () ")")) (compound_statement "{\n              return pbVar9;\n            }" ({ "{") (return_statement "return pbVar9;" (return "return") (identifier "pbVar9") (; ";")) (} "}"))) (expression_statement "piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();" (assignment_expression "piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))()" (identifier "piVar5") (= "=") (cast_expression "(int *)(**(code **)(pcVar19 + 0x1aaa4))()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(pcVar19 + 0x1aaa4))()" (parenthesized_expression "(**(code **)(pcVar19 + 0x1aaa4))" (( "(") (pointer_expression "**(code **)(pcVar19 + 0x1aaa4)" (* "*") (pointer_expression "*(code **)(pcVar19 + 0x1aaa4)" (* "*") (cast_expression "(code **)(pcVar19 + 0x1aaa4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar19 + 0x1aaa4)" (( "(") (binary_expression "pcVar19 + 0x1aaa4" (identifier "pcVar19") (+ "+") (number_literal "0x1aaa4")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "bVar2 = puVar12 < (undefined4 *)0x7ff00001;" (assignment_expression "bVar2 = puVar12 < (undefined4 *)0x7ff00001" (identifier "bVar2") (= "=") (binary_expression "puVar12 < (undefined4 *)0x7ff00001" (identifier "puVar12") (< "<") (cast_expression "(undefined4 *)0x7ff00001" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x7ff00001")))) (; ";")) (if_statement "if (*piVar5 == 4) break;" (if "if") (parenthesized_expression "(*piVar5 == 4)" (( "(") (binary_expression "*piVar5 == 4" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (== "==") (number_literal "4")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar12 = (undefined4 *)0x7ff00000;" (assignment_expression "puVar12 = (undefined4 *)0x7ff00000" (identifier "puVar12") (= "=") (cast_expression "(undefined4 *)0x7ff00000" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x7ff00000"))) (; ";")) (if_statement "if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {\n              return pbVar9;\n            }" (if "if") (parenthesized_expression "((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2))" (( "(") (binary_expression "(*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)" (parenthesized_expression "(*piVar5 != 0x16)" (( "(") (binary_expression "*piVar5 != 0x16" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (!= "!=") (number_literal "0x16")) () ")")) (|| "||") (parenthesized_expression "(pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)" (( "(") (comma_expression "pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2" (assignment_expression "pcVar20 = *(code **)(pcVar19 + 0x1aac0)" (identifier "pcVar20") (= "=") (pointer_expression "*(code **)(pcVar19 + 0x1aac0)" (* "*") (cast_expression "(code **)(pcVar19 + 0x1aac0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar19 + 0x1aac0)" (( "(") (binary_expression "pcVar19 + 0x1aac0" (identifier "pcVar19") (+ "+") (number_literal "0x1aac0")) () ")"))))) (, ",") (identifier "bVar2")) () ")"))) () ")")) (compound_statement "{\n              return pbVar9;\n            }" ({ "{") (return_statement "return pbVar9;" (return "return") (identifier "pbVar9") (; ";")) (} "}"))) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (return_statement "return pbVar9;" (return "return") (identifier "pbVar9") (; ";")) (} "}"))) (expression_statement "iVar10 = iVar8 + 1;" (assignment_expression "iVar10 = iVar8 + 1" (identifier "iVar10") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar10 < 0) goto LAB_0001e7f0;" (if "if") (parenthesized_expression "(iVar10 < 0)" (( "(") (binary_expression "iVar10 < 0" (identifier "iVar10") (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_0001e7f0;" (goto "goto") (statement_identifier "LAB_0001e7f0") (; ";"))) (expression_statement "iVar15 = (int)pbVar9 * 4;" (assignment_expression "iVar15 = (int)pbVar9 * 4" (identifier "iVar15") (= "=") (binary_expression "(int)pbVar9 * 4" (cast_expression "(int)pbVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar9")) (* "*") (number_literal "4"))) (; ";")) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" (identifier "pbVar9") (= "=") (binary_expression "pbVar9 + 1" (identifier "pbVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar7 = xmalloc(iVar10);" (assignment_expression "uVar7 = xmalloc(iVar10)" (identifier "uVar7") (= "=") (call_expression "xmalloc(iVar10)" (identifier "xmalloc") (argument_list "(iVar10)" (( "(") (identifier "iVar10") () ")")))) (; ";")) (expression_statement "*(int *)(iVar17 + iVar15) = iVar8;" (assignment_expression "*(int *)(iVar17 + iVar15) = iVar8" (pointer_expression "*(int *)(iVar17 + iVar15)" (* "*") (cast_expression "(int *)(iVar17 + iVar15)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + iVar15)" (( "(") (binary_expression "iVar17 + iVar15" (identifier "iVar17") (+ "+") (identifier "iVar15")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "uVar7 = (**(code **)(puVar18 + 0x1ae00))(uVar7,local_98,iVar10);" (assignment_expression "uVar7 = (**(code **)(puVar18 + 0x1ae00))(uVar7,local_98,iVar10)" (identifier "uVar7") (= "=") (call_expression "(**(code **)(puVar18 + 0x1ae00))(uVar7,local_98,iVar10)" (parenthesized_expression "(**(code **)(puVar18 + 0x1ae00))" (( "(") (pointer_expression "**(code **)(puVar18 + 0x1ae00)" (* "*") (pointer_expression "*(code **)(puVar18 + 0x1ae00)" (* "*") (cast_expression "(code **)(puVar18 + 0x1ae00)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar18 + 0x1ae00)" (( "(") (binary_expression "puVar18 + 0x1ae00" (identifier "puVar18") (+ "+") (number_literal "0x1ae00")) () ")"))))) () ")")) (argument_list "(uVar7,local_98,iVar10)" (( "(") (identifier "uVar7") (, ",") (identifier "local_98") (, ",") (identifier "iVar10") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(iVar6 + iVar15) = uVar7;" (assignment_expression "*(undefined4 *)(iVar6 + iVar15) = uVar7" (pointer_expression "*(undefined4 *)(iVar6 + iVar15)" (* "*") (cast_expression "(undefined4 *)(iVar6 + iVar15)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + iVar15)" (( "(") (binary_expression "iVar6 + iVar15" (identifier "iVar6") (+ "+") (identifier "iVar15")) () ")")))) (= "=") (identifier "uVar7")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier)))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) 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: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (expression_statement (assignment_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: (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: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (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: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (goto_statement label: (statement_identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (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: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (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: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (return_statement (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_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: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)) right: (number_literal))))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) alternative: (else_clause (compound_statement (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)) right: (number_literal))))) consequence: (goto_statement label: (statement_identifier))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) right: (number_literal))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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: (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: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (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: (identifier) right: (number_literal))))))) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (identifier))))) consequence: (compound_statement (return_statement (identifier))))))) condition: (parenthesized_expression (true))))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) 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: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier) (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: (identifier))))) right: (identifier)))) condition: (parenthesized_expression (true))))))

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

byte * MASKED(int param_1,byte *param_2,byte *param_3,undefined4 *param_4)

{
  byte bVar1;
  bool bVar2;
  undefined *puVar3;
  uint uVar4;
  int *piVar5;
  int iVar6;
  undefined4 uVar7;
  int iVar8;
  byte *pbVar9;
  int iVar10;
  undefined4 *puVar11;
  undefined4 *puVar12;
  byte *pbVar13;
  uint uVar14;
  int iVar15;
  byte *pbVar16;
  int iVar17;
  undefined *puVar18;
  code *pcVar19;
  code *pcVar20;
  undefined1 auStack_9c [4];
  undefined4 local_98;
  int local_94;
  undefined4 *local_90;
  undefined4 local_8c;
  undefined *local_88;
  uint local_84;
  byte *local_80;
  int local_7c;
  byte *local_78;
  int local_74;
  int *local_54;
  uint local_4c [10];
  
  puVar3 = PTR___stack_chk_guard_00039368;
  local_4c[0] = 0;
  local_4c[1] = 0;
  local_4c[2] = 0;
  local_4c[3] = 0;
  local_4c[4] = 0;
  local_4c[5] = 0;
  local_4c[6] = 0;
  local_4c[7] = 0;
  local_4c[8] = *(int *)PTR___stack_chk_guard_00039368;
  puVar11 = param_4;
  if (param_3 != (byte *)0x0) {
    param_3 = param_2 + (int)param_3;
    puVar11 = (undefined4 *)0x1;
    do {
      bVar1 = *param_2;
      param_2 = param_2 + 1;
      local_4c[bVar1 >> 5] = local_4c[bVar1 >> 5] | 1 << (bVar1 & 0x1f);
    } while (param_3 != param_2);
  }
  do {
    pbVar9 = *(byte **)(param_1 + 4);
    if (pbVar9 < *(byte **)(param_1 + 8)) {
      *(byte **)(param_1 + 4) = pbVar9 + 1;
      uVar14 = (uint)*pbVar9;
      uVar4 = (uint)(*pbVar9 >> 5);
    }
    else {
      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);
      if ((int)uVar14 < 0) break;
      uVar4 = uVar14 >> 5;
    }
  } while ((local_4c[uVar4] >> (uVar14 & 0x1f) & 1) != 0);
  iVar17 = param_4[1];
  pbVar16 = (byte *)*param_4;
  pbVar9 = (byte *)0x0;
LAB_0001e45c:
  if ((int)uVar14 < 0) {
    if (pbVar9 != (byte *)0x0) {
      if (pbVar9 == pbVar16) goto LAB_0001e474;
LAB_0001e4ac:
      pbVar9[iVar17] = 0;
      goto LAB_0001e4b0;
    }
    pbVar9 = (byte *)0xffffffff;
    goto LAB_0001e4b8;
  }
  if (pbVar9 == pbVar16) {
LAB_0001e474:
    if (iVar17 == 0) {
      if (pbVar16 == (byte *)0x0) {
        pbVar16 = (byte *)0x40;
      }
      else if ((int)pbVar16 < 0) goto LAB_0001e544;
    }
    else {
      if ((byte *)0x55555553 < pbVar16) {
LAB_0001e544:
                    /* WARNING: Subroutine does not return */
        xalloc_die();
      }
      pbVar16 = pbVar16 + ((uint)pbVar16 >> 1) + 1;
    }
    param_2 = pbVar16;
    iVar17 = xrealloc(iVar17);
    if ((int)uVar14 < 0) goto LAB_0001e4ac;
  }
  if ((local_4c[uVar14 >> 5] >> (uVar14 & 0x1f) & 1) == 0) {
    pbVar9[iVar17] = (byte)uVar14;
    pbVar13 = *(byte **)(param_1 + 4);
    pbVar9 = pbVar9 + 1;
    if (pbVar13 < *(byte **)(param_1 + 8)) {
      *(byte **)(param_1 + 4) = pbVar13 + 1;
      uVar14 = (uint)*pbVar13;
    }
    else {
      uVar14 = (*(code *)PTR___uflow_0003928c)(param_1);
    }
    goto LAB_0001e45c;
  }
  pbVar9[iVar17] = 0;
LAB_0001e4b0:
  param_4[1] = iVar17;
  *param_4 = pbVar16;
LAB_0001e4b8:
  if (local_4c[8] == *(int *)puVar3) {
    return pbVar9;
  }
  uVar4 = local_4c[8];
  puVar18 = PTR___stack_chk_fail_00039350;
  (*(code *)PTR___stack_chk_fail_00039350)();
  piVar5 = *(int **)(puVar18 + 0x1adfc);
  local_88 = puVar3;
  local_8c = 0x55555554;
  local_94 = *piVar5;
  pbVar13 = (byte *)0x40;
  local_90 = param_4;
  local_84 = uVar14;
  local_80 = pbVar9;
  local_7c = param_1;
  local_78 = pbVar16;
  local_74 = iVar17;
  if (param_2 == (byte *)0x0) {
    iVar17 = 0x100;
  }
  else {
    pbVar13 = param_2 + 1;
    iVar17 = (int)pbVar13 * 4;
    if ((iVar17 < 0) || ((uint)pbVar13 >> 0x1e != 0)) {
LAB_0001e7f0:
                    /* WARNING: Subroutine does not return */
      xalloc_die();
    }
  }
  iVar6 = xmalloc(iVar17);
  pbVar9 = (byte *)0x0;
  iVar17 = xmalloc(iVar17);
  init_tokenbuffer(auStack_9c);
  do {
    pbVar16 = param_3;
    puVar12 = puVar11;
    iVar8 = MASKED(uVar4,param_3,puVar11,auStack_9c);
    if (pbVar13 <= pbVar9) {
      if (iVar6 == 0) {
        pbVar16 = (byte *)0x40;
        if (pbVar13 == (byte *)0x0) {
          pbVar13 = (byte *)0x10;
        }
        else {
          pbVar16 = (byte *)((int)pbVar13 << 2);
          if (((int)pbVar16 < 0) || ((uint)pbVar13 >> 0x1e != 0)) goto LAB_0001e7f0;
        }
      }
      else {
        if ((byte *)0x15555554 < pbVar13) goto LAB_0001e7f0;
        pbVar13 = pbVar13 + ((uint)pbVar13 >> 1) + 1;
        pbVar16 = (byte *)((int)pbVar13 * 4);
      }
      iVar6 = xrealloc(iVar6,pbVar16);
      iVar17 = xrealloc(iVar17,pbVar16);
    }
    if (iVar8 == -1) {
      pcVar19 = *(code **)(puVar18 + 0x1ae08);
      *(undefined4 *)(iVar6 + (int)pbVar9 * 4) = 0;
      *(undefined4 *)(iVar17 + (int)pbVar9 * 4) = 0;
      (*pcVar19)(local_98);
      __gp_1 = iVar6;
      if (local_54 == (int *)0x0) {
        (**(code **)(puVar18 + 0x1ae08))(iVar17);
      }
      else {
        *local_54 = iVar17;
      }
      if (local_94 != *piVar5) {
        pcVar19 = *(code **)(puVar18 + 0x1ade4);
        iVar17 = local_94;
        (*pcVar19)();
        do {
          pcVar20 = *(code **)(pcVar19 + 0x1aac0);
          while( true ) {
            pbVar9 = (byte *)(*pcVar20)(iVar17,pbVar16,puVar12);
            if (-1 < (int)pbVar9) {
              return pbVar9;
            }
            piVar5 = (int *)(**(code **)(pcVar19 + 0x1aaa4))();
            bVar2 = puVar12 < (undefined4 *)0x7ff00001;
            if (*piVar5 == 4) break;
            puVar12 = (undefined4 *)0x7ff00000;
            if ((*piVar5 != 0x16) || (pcVar20 = *(code **)(pcVar19 + 0x1aac0), bVar2)) {
              return pbVar9;
            }
          }
        } while( true );
      }
      return pbVar9;
    }
    iVar10 = iVar8 + 1;
    if (iVar10 < 0) goto LAB_0001e7f0;
    iVar15 = (int)pbVar9 * 4;
    pbVar9 = pbVar9 + 1;
    uVar7 = xmalloc(iVar10);
    *(int *)(iVar17 + iVar15) = iVar8;
    uVar7 = (**(code **)(puVar18 + 0x1ae00))(uVar7,local_98,iVar10);
    *(undefined4 *)(iVar6 + iVar15) = uVar7;
  } while( true );
}

